Autor
|
Thema: Makro im Skizzier-Modus starten (867 mal gelesen)
|
MICHLICK Mitglied CAD Methodik Entwickler (CATIA; NX)
Beiträge: 454 Registriert: 20.06.2001 Der Aufwand bei Änderungen ist groß, wenn die Finger schneller klicken als das Gehirn denkt.
|
erstellt am: 29. Jan. 2007 10:29 <-- editieren / zitieren --> Unities abgeben:
Hallo, ich habe ein Makro geschrieben, dass ich im Skizzier-Modus starte. Es wird dann im Skizzierer Geometrie erzeugt. Das Ganze funktioniert prinzipell schon ganz gut. Leider bin ich noch von ein paar Randbedingungen abhängig. Es muss immer die 1. Skizze im "PartBody" sein, sonst funktioniert es nicht. Ich schaffe es leider nicht die Aktive Skizze unabhängig zu definieren. Ich hab da noch nicht die richtige Idee gehabt, wie das funktionieren könnte. Wie kann ich Sketch1 so definieren, dass es immer die Skizze ist, in der ich mich befinde? So sieht das bei mir jetzt aus: Set partDocument1 = CATIA.ActiveDocument Set part1 = partDocument1.Part Set bodies1 = part1.Bodies Set body1 = bodies1.Item("PartBody") Set Sketches1 = body1.Sketches Set Sketch1 = Sketches1.Item(1) Set geometricElements1 = Sketch1.GeometricElements ------------------ Gruß Michael B. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CAMiCADse Mitglied
Beiträge: 177 Registriert: 17.02.2006 V5,R19,SP9
|
erstellt am: 29. Jan. 2007 12:50 <-- editieren / zitieren --> Unities abgeben: Nur für MICHLICK
Hallo Michael, wenn du den Sketcher geöffnet hast, dann ist dein Sketch ja "in Bearbeitung", also im Baum unterstrichen. Da kommst du so dran: Set Sketch1 = part1.InWorkObject oder über Item und String: Set Sketch1 = Sketches1.item(part1.InWorkObject.Name) Gruß CAMiCADse
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
MICHLICK Mitglied CAD Methodik Entwickler (CATIA; NX)
Beiträge: 454 Registriert: 20.06.2001 Der Aufwand bei Änderungen ist groß, wenn die Finger schneller klicken als das Gehirn denkt.
|
erstellt am: 06. Feb. 2007 09:45 <-- editieren / zitieren --> Unities abgeben:
Hallo CAMiCADse gute Lösungen sind oft so einfach. Die erste Zeile ist perfekt. Genau das was ich brauche. Jetzt ergibt sich nur noch ein Folgeproblem. Mein Makro funktioniert jetzt einwandfrei wenn die Skizze in einem Body erzeugt wird. Wenn die skizze allerdings in einem hybridbody erzeugt wird laufe ich auf einen Fehler. Hat jemand eine Idee wie man das Problem sauber lösen kann? P.S. Für die Antwort von CAMiCADse gibts natürlich 10 ------------------ Gruß Michael B. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CAMiCADse Mitglied
Beiträge: 177 Registriert: 17.02.2006 V5,R19,SP9
|
erstellt am: 06. Feb. 2007 14:13 <-- editieren / zitieren --> Unities abgeben: Nur für MICHLICK
Hallo Michael, hab das gerade mal ausprobiert. In diesem Fall gibt InWorkObject ja leider den HybridBody zurück, und nicht den Sketch Da ist kein Problem, wenn nur 1 Sketch existiert --> HybridBody.HybridSketches.item(1) Wenn mehrere Sketches darin liegen können, sehe ich da auf die schnelle keine saubere Lösung. Wenn's unsauber auch tut , kannst du evtl. folgendes probieren: Schleife über all Sketches innerhalb des Hybridbody. Mit On Error Resume Next versuchen einen Punkt im aktuellen Sketch zu erzeugen. Schlägt ein Fehler auf (err.number<>0) --> sketch ist nicht der geöffnete Sketch --> weiter zum nächsten Schlägt kein Fehler auf, ist es der aktuell geöffnete Sketch. Dann den Punkt wieder löschen und weiter im Script... Gruß CAMiCADse Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
MICHLICK Mitglied CAD Methodik Entwickler (CATIA; NX)
Beiträge: 454 Registriert: 20.06.2001 Der Aufwand bei Änderungen ist groß, wenn die Finger schneller klicken als das Gehirn denkt.
|
erstellt am: 08. Feb. 2007 08:49 <-- editieren / zitieren --> Unities abgeben:
Hallo CAMiCADse für die unsaubere Lösung habe ich einen anderen Vorschlag. Mir gefällt Deine erste Zeile besser. Problem hier - je nach definition - wenn der Sketch nicht in dem Body/HybridBody liegt wie definiert, bekomme ich einen Fehler. Wenn ich den Fehler bekomme definiere ich eben die 2. Möglichkeit. Wenn ich da dann auch einen Fehler bekomme? - Abbruch -. Vielleicht gibt es aber auch zu diesem Problem eine elegante Lösung. ------------------ Gruß Michael B. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Legat Mitglied
Beiträge: 30 Registriert: 18.05.2006
|
erstellt am: 22. Feb. 2007 20:41 <-- editieren / zitieren --> Unities abgeben: Nur für MICHLICK
|