Autor
|
Thema: Objectpfad / Einsteigerhilfen (2397 mal gelesen)
|
cadtb Mitglied
Beiträge: 17 Registriert: 20.11.2008
|
erstellt am: 20. Nov. 2008 12:09 <-- editieren / zitieren --> Unities abgeben:
Hi, ich bin gerade dabei in die Catia Makrowelt einzusteigen. Bin in dem Bereich noch blutiger Anfänger. Ich probiere gerade ein paar (einfache) Übungen zu machen, wie z.B. das hier: Code: Sub CATMain() Dim Excel As Application Dim WB As Workbook Dim WS As Worksheet Dim parameters1 As Parameters Dim length1 As Dimension Set Excel = CreateObject("Excel.Application") Excel.Visible = True Set WB = Excel.Workbooks.Open("C:\tmp\Parameter.xls") Set WS = WB.Worksheets.Item(1) Set Part1 = CATIA.ActiveDocument.Part Set parameters1 = part1.Parameters nRow = 2 Do Name = (WS.Cells(nRow, 1).Value) Wert = CDbl(WS.Cells(nRow, 2).Value) Set length1 = parameters1.CreateDimension(Name, "LENGTH", Wert) nRow = nRow + 1 Loop While (WS.Cells(nRow, 2).Text <> "") Part1.Update Excel.Quit End Sub
Das soll einfach aus einer Exceltabelle Spalte A (Namen) und Spalte B (Werte) alle gereihten Werte als Parameter in dem aktivem Part anlegen. Dieser Teil funktioniert auch soweit, allerdings würde ich gerne die Excel Tabelle nicht mit einem festem Pfad aufrufen, sondern den Pfad des derzeit aktiven Parts abfragen und unter selbigem dann die Excel Tabelle aufrufen. Falls nicht vorhanden, oder das aktive Part noch nicht gespeichert wurde, soll eine Fehlermeldung kommen. Also konkret: Wie kann ich den "Savepath" des aktiven Parts auslesen? Besser wäre natürlich wenn ich das Script direkt in Excel via Button aufrufen könnte. Noch weiter würde mir allerdings helfen, wenn ich gute Tipps bekommen würde zur Suche in der Hilfedatei V5Automation.chm. Wenn ich dort im Suchfeld z.B. Filesystem oder .open eingebe, krieg ich alles Mögliche aufgelistet, nur nicht das was ich suche. Wie geht man hier am besten vor, wenn man die exakten Befehle noch nicht kennt?
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Jens Hansen Mitglied Senior Consult
Beiträge: 1055 Registriert: 05.08.2000 Win7 CATIA V5 R19 VB.Net C#
|
erstellt am: 20. Nov. 2008 12:18 <-- editieren / zitieren --> Unities abgeben: Nur für cadtb
|
cadtb Mitglied
Beiträge: 17 Registriert: 20.11.2008
|
erstellt am: 21. Nov. 2008 15:21 <-- editieren / zitieren --> Unities abgeben:
Hat zufällig schon mal jemand ein ähnliches Makro gemacht wie auf meinem Bild? Würde sowas in der Richtung gerne per Knopf auf der CATIA Symbolleiste bei Parts und Products aufrufen und die dementsprechenden Dinge ändern. (Bei Baugruppen alle Parts durch gehen). Allerdings ist das natürlich für mich als Anfänger ein sehr schweres Unterfangen. Daher die Frage(n) - Hat schonmal jemand etwas ähnliches, oder nur ein Teil davon gemacht? Würde mich auch über Codeschnipsel freuen zur Vorgehensweise. Wie finde ich (mit selection1.Search) alle Skizzen in einem z.b. Part, selbst wenn im Skizzenname nichtmehr "Skizze*" steht? Selbiges bei Ebenen. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Jules_Vernes Mitglied Systemadmin
Beiträge: 145 Registriert: 04.10.2005 Catia V5R24SP4
|
erstellt am: 21. Nov. 2008 15:44 <-- editieren / zitieren --> Unities abgeben: Nur für cadtb
|
Jens Hansen Mitglied Senior Consult
Beiträge: 1055 Registriert: 05.08.2000 Win7 CATIA V5 R19 VB.Net C#
|
erstellt am: 21. Nov. 2008 15:45 <-- editieren / zitieren --> Unities abgeben: Nur für cadtb
|
cadtb Mitglied
Beiträge: 17 Registriert: 20.11.2008
|
erstellt am: 21. Nov. 2008 15:51 <-- editieren / zitieren --> Unities abgeben:
Danke euch beiden, allerdings weiss ich nicht wie mit dem catvba zu verfahren ist um es zu nutzen. Catia unterstützt wohl bei mir nur CatScript und Catvbs und in Visual Studio konnte ich es auch nicht öffnen. Was ist zu tun? Habe mir inzwischen mal mit dem Makroaufzeichnungsassistenten und der Suchfunktion das hier zusammengestrickt: Code: Language="VBSCRIPT"Sub CATMain() Set productDocument1 = CATIA.ActiveDocument Set selection1 = productDocument1.Selection selection1.Search "((CATPrtSearch.Sketch + CATGmoSearch.Sketch) + CATSpdSearch.Sketch),all" Set selection2 = productDocument1.Selection Set visPropertySet1 = selection2.VisProperties visPropertySet1.SetShow 1 selection2.Clear selection1.Search "(((CATStFreeStyleSearch.Plane + CATPrtSearch.Plane) + CATGmoSearch.Plane) + CATSpdSearch.Plane),all" Set selection2 = productDocument1.Selection Set visPropertySet1 = selection2.VisProperties visPropertySet1.SetShow 1 selection2.Clear End Sub
Das blendet mir jetzt Skizzen und Ebenen aus *freu Jedoch steh ich auf dem Schlauch was den Dialog angeht. Ich vermute mal den kann ich nicht in Visual Studio zusammenbauen, sondern muss das über Catia tun, richtig? Wenn ja wie fange ich da an? Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Jules_Vernes Mitglied Systemadmin
Beiträge: 145 Registriert: 04.10.2005 Catia V5R24SP4
|
erstellt am: 21. Nov. 2008 15:56 <-- editieren / zitieren --> Unities abgeben: Nur für cadtb
Musst doch eigentlich nur eine neue Bibliothek hinzufügen. Tools / Makro / Makros... danach auf "Makrobibliotheken..." VBA-Projekte anwählen und "Vorhandene Bib hinzufügen.." (hier die Datei auswählen) anschließend VBA-Editor aufmachen (Alt+F11) und auf "Play" drücken. Jules Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadtb Mitglied
Beiträge: 17 Registriert: 20.11.2008
|
erstellt am: 21. Nov. 2008 15:59 <-- editieren / zitieren --> Unities abgeben:
Alt+F8 ists bei mir. Nutze Catia V5 R16. Kann leider keine catvba auswählen, die werden mir da nicht angezeigt. Habe den Ordner in der die .catvba liegt als Makrobiliothek hinzugefügt, aber sehe da nur die enthaltenden catvbs und catscript Dateien. :/ Edit: Ok, habs gefunden, war doch Alt+F11. Saubere Arbeit, danke dir. Wenn ich das nun noch via Symbolleistenicon starten kann wäre das was ich will. Aber da kann ich nochmal selbst rumtüfteln ob ich das hinkriege. Will es ja lernen wie es geht. Edit2: Den Aufwand möchte ich mir zum einen machen das ich es dadurch lerne und weil ich da später auch weitere "Bereinigungsbefehle" bzw. Optionen zum Anpassen der Ansicht drin haben möchte. Aber Hauptgrund ist wie gesagt - zum Lernen. [Diese Nachricht wurde von cadtb am 21. Nov. 2008 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadtb Mitglied
Beiträge: 17 Registriert: 20.11.2008
|
erstellt am: 24. Nov. 2008 08:11 <-- editieren / zitieren --> Unities abgeben:
Warum funktioniert das nicht? Code: Set specsAndGeomWindow1 = CATIA.ActiveWindow Set viewer3D1 = specsAndGeomWindow1.ActiveViewer Set viewpoint3D1 = viewer3D1.Viewpoint3D
Das zeichnet mir der Makroaufzeichnungsassisten auf, wenn ich in einem Part auf "Isometrische Ansicht" klicke. Leider funktioniert das aber dann in einem Makro nicht - warum? (Es kommt zwar keine Fehlermeldung, aber er ändert auch nicht die Bauteilausrichtung) [Diese Nachricht wurde von cadtb am 24. Nov. 2008 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Jens Hansen Mitglied Senior Consult
Beiträge: 1055 Registriert: 05.08.2000 Win7 CATIA V5 R19 VB.Net C#
|
erstellt am: 24. Nov. 2008 08:47 <-- editieren / zitieren --> Unities abgeben: Nur für cadtb
|
cadtb Mitglied
Beiträge: 17 Registriert: 20.11.2008
|
erstellt am: 24. Nov. 2008 11:27 <-- editieren / zitieren --> Unities abgeben:
|
cadtb Mitglied
Beiträge: 17 Registriert: 20.11.2008
|
erstellt am: 24. Nov. 2008 13:47 <-- editieren / zitieren --> Unities abgeben:
Habe jetzt auch einen Dialog dazu gemacht. Jetzt hab ich quasi eine .catvba Datei. Kann man die nun direkt über die Symbolleiste starten, oder braucht es dazu eine .catscript oder .catvbs Datei die ich in die Symbolleiste lege, welche die .catvba aufruft? Kann unter "Anpassen" der Symbolleiste nur Makros - .catvbs .catscript anwählen. [Diese Nachricht wurde von cadtb am 24. Nov. 2008 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Jens Hansen Mitglied Senior Consult
Beiträge: 1055 Registriert: 05.08.2000 Win7 CATIA V5 R19 VB.Net C#
|
erstellt am: 24. Nov. 2008 13:51 <-- editieren / zitieren --> Unities abgeben: Nur für cadtb
|
cadtb Mitglied
Beiträge: 17 Registriert: 20.11.2008
|
erstellt am: 24. Nov. 2008 14:20 <-- editieren / zitieren --> Unities abgeben:
Hm, also ich krieg .catscript und .catvbs Dateien als Icons angelegt. Auch ein Modul in dem VBA Projekt bekomme ich angelegt. Nur was schreib ich nun in das Modul rein - und wie krieg ich das dann als einzelnes .catvbs - das dann Ortsunabhängig funktioniert. Also das die .catvba und die .catvbs im gleichen Ordner liegen, die .catvbs die .catvba startet, selbst wenn man den Ordner verschieben würde. Edit: Ok, habs hinbekommen. Falls einer die gleichen Probleme hat, hier die Lösung (für meinen Fall): Code: Sub CatMain() Dim dlg As New Dialog dlg.show End Sub
Dabei heisst das Formular, also der Dialog: Dialog Der Modulname ist egal, wird aber in Catia, sofern auf der Symbolleiste vorhanden, bei Mouseover angezeigt - also Sinnvoll benennen. Allerdings habe ich noch das Problem, dass wenn ich die Bedingungen in einem Product ausblenden möchte und ich das mit: Code: If Right(CATIA.ActiveDocument.FullName, 11) = ".CATProduct" Then selection1.Search "CATAsmSearch.MfConstraint,all" selection1.VisProperties.SetShow 0 selection1.Clear
realisiere, das er dann auch die Bedingungen von den Skizzen der verbauten Parts ausblenden möchte. Das hat dann zur Folge das die Skizzen gleich mit ausgeblendet werden. Ich hab versucht mit der Catiasuche nur die Productbedingungen zu selektieren, allerdings funktioniert das nicht. Hat jemand einen Lösungsvorschlag, wie ich wirklich nur die Bedingungen ein/ausblenden kann, ohne die Skizzen ein/auszublenden? [Diese Nachricht wurde von cadtb am 25. Nov. 2008 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |