Autor
|
Thema: Verlinkte Kopie per Makro erzeugen (1291 mal gelesen)
|
Blechpatscher Mitglied Konstrukteur
Beiträge: 11 Registriert: 13.12.2009 CATIA V5 R16 SP9 mit Win XP SP3
|
erstellt am: 13. Dez. 2009 17:17 <-- editieren / zitieren --> Unities abgeben:
Hallo Catia-Programmiergemeinde! Bin ganz neu in diesem Forum, hab Erfahrung in CatiaV5, bin aber absoluter Anfänger in Makroprogrammierung. Einfache Elemente per Makro erzeugen krieg ich dennoch schon hin. Im Moment bin ich auf der Suche nach dem Makro-Befehl für´s "Einfügen mit Link". Der Makrorecorder zeichnet ihn nicht auf und in Buch über Makroprogrammierung habe ich auch nichts gefunden. Gibt es irgendwo eine Liste mit Befehlen oder kann mir ihn jemand direkt nennen? Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bgrittmann Moderator Konstrukteur
Beiträge: 11780 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 13. Dez. 2009 17:25 <-- editieren / zitieren --> Unities abgeben: Nur für Blechpatscher
|
Blechpatscher Mitglied Konstrukteur
Beiträge: 11 Registriert: 13.12.2009 CATIA V5 R16 SP9 mit Win XP SP3
|
erstellt am: 14. Dez. 2009 21:47 <-- editieren / zitieren --> Unities abgeben:
Hallo bgrittmann, vielen Dank für die schnelle Hilfe! Das Einfügen hat wunderbar funktioniert, aber da die Kopie exakt den gleichen Namen hat, wie das Original-Body (kommt von den Einstellungen s.Anhang), weiss ich nicht, wie man die Kopie deklarieren soll. Wenn ich "Under the same tree node" wähle, kann ich über den Name "Result of *" meine Kopie selektieren, leider sollen die CATIA-Einstellungen nicht verändert werden. Weisst du auch hier Rat? Gruß Blechpatscher Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Lusilnie Mitglied
Beiträge: 1486 Registriert: 13.07.2005
|
erstellt am: 14. Dez. 2009 21:58 <-- editieren / zitieren --> Unities abgeben: Nur für Blechpatscher
Hallo Blechpatscher, wenn Du den Body eingefügt hast, ist der letzte Body, z.B.: Code: Set Body = Bodies.Item(Bodies.Count)
Dein eingefügter Body und Du kannst ihn nach Belieben mit Code: Body.Name = "IchBinDerLink"
umbenennen. mfg, Lusilnie
------------------ Alle Aussagen zu DassaultSystemes-Produkten sind sehr optimistisch, selbst diese!!! frei nach größeren Geistern Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bgrittmann Moderator Konstrukteur
Beiträge: 11780 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 14. Dez. 2009 22:03 <-- editieren / zitieren --> Unities abgeben: Nur für Blechpatscher
Servus Nur so eine Idee. Wenn du einen neuen Körper einfügst könnte der über den Index abrufbar sein, und zwar als letztes Element. zB: max = Part.Bodies.Count Part.Bodies.Item(max)Gruß Bernd ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Blechpatscher Mitglied Konstrukteur
Beiträge: 11 Registriert: 13.12.2009 CATIA V5 R16 SP9 mit Win XP SP3
|
erstellt am: 15. Dez. 2009 20:22 <-- editieren / zitieren --> Unities abgeben:
|
Blechpatscher Mitglied Konstrukteur
Beiträge: 11 Registriert: 13.12.2009 CATIA V5 R16 SP9 mit Win XP SP3
|
erstellt am: 15. Dez. 2009 20:27 <-- editieren / zitieren --> Unities abgeben:
Hallo Bernd, diese Variante hat bei mir nicht geklappt Muss man den Index vorher irgendwie deklarieren? (Bin wirklich noch ein Anfänger) Könntest du vielleicht den vollstendigen Code für den Befehl posten? Danke! Gruß Blechpatscher Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bgrittmann Moderator Konstrukteur
Beiträge: 11780 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 15. Dez. 2009 21:53 <-- editieren / zitieren --> Unities abgeben: Nur für Blechpatscher
|
DanielFr. Moderator Manager
Beiträge: 2506 Registriert: 10.08.2005 HP Compaq 8710w, Intel Core Duo T7700, 2,40 Ghz, 3GB RAM, Windows XP Professionel @32bit, Quadro FX 1600M, CATIA V5 R19 SP3
|
erstellt am: 16. Dez. 2009 08:16 <-- editieren / zitieren --> Unities abgeben: Nur für Blechpatscher
Hallo, das mit der Bodies-Collection sollte zwar funktionieren ist aber IMHO viel zu umständlich. Ich beschreibe mal kurz den Ablauf wenn man das ganze Szenario per Hand ausführen würde. 1. Man markiert den Body der kopiert werden soll und kopiert diesen über das Kontextmenü (der Body ist selektiert) 2. Man selektiert das Part in den der Körper aus der Zwischenablage eingefügt werden soll (nur das Part ist selektiert) 3. Über das Kontextmenü wählt man PasteSpezial (ResultWithLink) aus (es ist immer noch das Part selektiert) 4. Jetzt fügt CATIA den neuen Body ein (!!!CATIA selektiert jetzt den neu eingefügten Body!!!) Den Schritt vier machen wir uns zu nutze. Anstatt die Bodies-Collection nach dem neu eingefügten Körper zu durchsuchen nehmen wir einfach die Vorselektion von CATIA und ändern hier den Namen. Das ganze klingt jetzt ein wenig abstrakt deswegen ist im Anhang auch noch ein fertiges (funktionsfähiges) CATScript. Fast alle Zeilen sind mit Kommentaren versehen. Damit solltest du erst einmal arbeiten können ------------------ MFG Daniel Systeminformation | Inoffizielle CATIA Hilfeseite | CATIA FAQ | Suche | TraceParts (Normteile...) | 3D Content Central (noch mehr Normteile...) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Blechpatscher Mitglied Konstrukteur
Beiträge: 11 Registriert: 13.12.2009 CATIA V5 R16 SP9 mit Win XP SP3
|
erstellt am: 20. Dez. 2009 17:14 <-- editieren / zitieren --> Unities abgeben:
Hallo Daniel, vielen Dank für die ausführliche Beschreibung! Dein Code habe ich erfolgreich in mein Programm eingefügt. Allerdings verstehe ich noch nicht richtig, wie der Abbruch funktioniert. Die Befehle "vbCritical" und "vbOKOnly" waren mir noch nicht bekannt. Hab mir jetzt das Buch geholt, dass du in einem anderen Beitrag (Macro programmierung lernen) empfohlen hast. Hoffe daraus noch weitere Tricks zu lernen. Wünsche dir und allen die sich in bei CAD.DE engagieren Frohe Weihnachten und ein gutes Neues Jahr! Blechpatscher Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
DanielFr. Moderator Manager
Beiträge: 2506 Registriert: 10.08.2005 HP Compaq 8710w, Intel Core Duo T7700, 2,40 Ghz, 3GB RAM, Windows XP Professionel @32bit, Quadro FX 1600M, CATIA V5 R19 SP3
|
erstellt am: 20. Dez. 2009 17:26 <-- editieren / zitieren --> Unities abgeben: Nur für Blechpatscher
Hallo, ich hoffe das in diesem Buch diese Befehle überhaupt erklärt werden . Diese kommen nämlich nicht aus V5 bzw. haben nichts damit zu tun sondern aus VB. Hier ist eine Message-Box wie folgt definiert: MsgBox(Text as String, Style as vbMsgBoxStyle, Title as String) as vbMsgBoxResult Text sollte klar sein vbMsgBoxStyle (hierzu gehören vbCritical und vbOKOnly aber auch vbInformation, vbYesNo, usw.) gibt an wie die Message Box aussieht. Ein vbCritical hat links ein rotes X und erzeugt den typischen Beep-Sound. Ein vbInformation dagegen hat eine weiße Sprechblase mit blauen Ausrufezeichen und erzeugt einen anderen Sound. VBOKOnly gibt an das die Message Box nur einen OK Button hat. vbYesNoCancel z.b. hat drei Buttons (Ja, Nein, Abbruch) usw. Die MessageBox Funktion ist also ein fester Bestandteil von VB und kann über diese Konstanten in ihrem Aussehen geändert werden. Als Rückgabe hat die Funktion einen Dateityp Namens vbMsgBoxResult. Wenn du z.B. eine vbYesNo Box erzeugst kannst du als Rückgabe vbYes oder vbNo bekommen. Dieser kann aber auch in einen String konvertiert werden. vbNo wäre dann z.B. "6". Wie du siehst hat das nichts mit CATIA zu tun sondern ist ein reines VB-Thema. Ich wünsche dir auch eine frohes Fest und einen guten Rutsch ------------------ MFG Daniel Systeminformation | Inoffizielle CATIA Hilfeseite | CATIA FAQ | Suche | TraceParts (Normteile...) | 3D Content Central (noch mehr Normteile...) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |