Autor
|
Thema: Copy/Paste (2601 mal gelesen)
|
Erich Mitglied Senior Consultant selbstständig
Beiträge: 198 Registriert: 03.10.2000 i7-9850H RAM 32,0 GB Nvidia Quadro T2000 Windows 7 Professional 64Bit
|
erstellt am: 27. Aug. 2006 21:41 <-- editieren / zitieren --> Unities abgeben:
Hallo zusammen in der Meinung Copy und Paste soweit verstanden zu haben, habe ich folgendes Script erzeugt, bzw. ergänzt: Language="VBSCRIPT" Sub CATMain() Dim productDocument1 As Document Set productDocument1 = CATIA.ActiveDocument Dim selection1 As Selection Set selection1 = productDocument1.Selection selection1.Clear Dim documents1 As Documents Set documents1 = CATIA.Documents Dim partDocument1 As Document Set partDocument1 = documents1.Item("ADAPTER_STUTZE_SCHWELLER_HINTEN.CATPart") Dim part1 As Part Set part1 = partDocument1.Part Dim bodies1 As Bodies Set bodies1 = part1.Bodies Dim body1 As Body Set body1 = bodies1.Item("Result of STUTZE_SCHWELLER_HINTEN") selection1.Add body1 selection1.Copy Dim partDocument2 As Document Set partDocument2 = documents1.Item("Schnittemappe.CATPart") Dim part2 As Part Set part2 = partDocument2.Part Set selection2 = partdocument2.selection selection2.Add part2 selection2.PasteSpecial "CATPrtResult" part2.Update End Sub Catia kann mein kopiertes Element nicht einfügen. Folgende Fehlermeldung: Selected Element(s) not allowed for this operation. Wo ist meine Fehler! Bitte Unterstützung. Danke. ------------------
mfg Erich Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
mathias.bergundthal Mitglied informatiker
Beiträge: 153 Registriert: 03.08.2005 HP xw6000 - WXP Pro SP2 - CATIA V5 R16 SP9 - Visual Studio 2005
|
erstellt am: 29. Aug. 2006 10:00 <-- editieren / zitieren --> Unities abgeben: Nur für Erich
Hallo Erich, Das einzige was mir jetzt so in den sinn kommt ist das du auf einer falschen ebene sein kannst. du kannst ja auch im interaktiven nicht immer etwas kopieren, besonders dann wenn du ein "falschen" objekt aktiv hast (InWorkObject). Mein tipp setzt das aktive Objekt mal neu, resp eine ebene weiter oben Code:
PartDocument1.Part.InWorkObject = PartDocument1.Part.MainBody
und dies vor dem PASTE einfügen... in hoffnung das es funktioniert grüsse, mathias
------------------ In diesem Zeitalter der Massenkomunikation sind Verrücktheiten ansteckend. [Diese Nachricht wurde von mathias.bergundthal am 01. Sep. 2006 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Tapani. Mitglied
Beiträge: 56 Registriert: 12.05.2006
|
erstellt am: 01. Sep. 2006 10:53 <-- editieren / zitieren --> Unities abgeben: Nur für Erich
moin, das Problem liegt wohl darin, welches Objekt das Active Object (blau hinterlegtes Element in CATIA) ist, denn den Code hab ich gerade noch mal ausprobiert und an sich ist das ok. Der Fehler taucht nur dann auf, wenn das Ziel-Part nicht Bestandteil des ProductDocuments ist, indem das Quell-Part liegt und das Ziel-Part das ActiveDocument ist oder wenn das Ziel-Part und Quell-Part zwar Bestandteil des selben ProductDocuments sind, aber das Ziel-Part (oder ein ganz aderes Part) das Active Object ist. Am einfachsten bei einer Copy-Operation ist, wenn der Rootknoten des Quell-ProductDocuments das Active Object ist. Dann geht am wenigsten schief :-) CU tapani
------------------ Don't take life so seriously.... it's not a permanent condition Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Erich Mitglied Senior Consultant selbstständig
Beiträge: 198 Registriert: 03.10.2000 i7-9850H RAM 32,0 GB Nvidia Quadro T2000 Windows 7 Professional 64Bit
|
erstellt am: 07. Sep. 2006 09:42 <-- editieren / zitieren --> Unities abgeben:
Hallo zusammen Danke für die Infos. Ergänzend zu den Inhalten, kann ich noch ergänzen: Die Aktivierung ist wichtig, in meinem Fall, wie ich aktiviert hatte, war alles richtig. Mein Lesefehler in meinem CATScript war - ich bin von Copy AS RESULT ausgegangen, geschrieben hatte ich - AS RESULT WITH LINK. Somit hat CATIA eine Publication benötigt und es war keine vorhanden. D.h. mit Publication funktioniert das Script einwandfrei. Ohne Publication füge ich noch den richtigen Code an (Kursiv verändert): Language="VBSCRIPT" Sub CATMain() Dim productDocument1 As Document Set productDocument1 = CATIA.ActiveDocument Dim selection1 As Selection Set selection1 = productDocument1.Selection selection1.Clear Dim documents1 As Documents Set documents1 = CATIA.Documents Dim partDocument1 As Document Set partDocument1 = documents1.Item("ADAPTER_STUTZE_SCHWELLER_HINTEN.CATPart") Dim part1 As Part Set part1 = partDocument1.Part Dim bodies1 As Bodies Set bodies1 = part1.Bodies Dim body1 As Body Set body1 = bodies1.Item("Result of STUTZE_SCHWELLER_HINTEN") selection1.Add body1 selection1.Copy Dim partDocument2 As Document Set partDocument2 = documents1.Item("Schnittemappe.CATPart") Dim part2 As Part Set part2 = partDocument2.Part Set selection2 = partdocument2.selection selection2.Add part2 selection2.PasteSpecial "CATPrtResultWithOutLink" part2.Update End Sub
------------------
mfg Erich Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
dr_quatsch Mitglied GF
Beiträge: 3 Registriert: 23.05.2004
|
erstellt am: 24. Okt. 2006 22:42 <-- editieren / zitieren --> Unities abgeben: Nur für Erich
Hallo Erich, ich kann ergänzend noch meine Erfahrung bezüglich der für das Copy/Paste aktiven Ebene beisteuern. Es macht in der Regel Sinn, die Selection immer auf die über den Parts liegenden Produkten zu beziehen. In Deinem Beispiel würde dann auch die zweite Auswahl auf das Produkt Referenzieren. Ansonsten kann es auch bei Verwendung des CATPrtResultWithOutLink zur Fehlermeldung kommen. Im folgenden Code ist es dann auch nicht mehr wichtig, welches Element vor dem Start des Makros aktiv war. Dein Code würde danach wie folgt aussehen (Änderung kursiv): Language="VBSCRIPT" Sub CATMain() Dim productDocument1 As Document Set productDocument1 = CATIA.ActiveDocument Dim selection1 As Selection Set selection1 = productDocument1.Selection selection1.Clear Dim documents1 As Documents Set documents1 = CATIA.Documents Dim partDocument1 As Document Set partDocument1 = documents1.Item("ADAPTER_STUTZE_SCHWELLER_HINTEN.CATPart") Dim part1 As Part Set part1 = partDocument1.Part Dim bodies1 As Bodies Set bodies1 = part1.Bodies Dim body1 As Body Set body1 = bodies1.Item("Result of STUTZE_SCHWELLER_HINTEN") selection1.Add body1 selection1.Copy Dim partDocument2 As Document Set partDocument2 = documents1.Item("Schnittemappe.CATPart") Dim part2 As Part Set part2 = productDocument1.Part Set selection2 = partdocument2.selection selection2.Add part2 selection2.PasteSpecial "CATPrtResultWithOutLink" part2.Update End Sub ********** dr_quatsch
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |