Autor
|
Thema: Selection -> Copy -> Paste - Frage zum Ablauf (1231 mal gelesen)
|
zipdrive Mitglied Student Maschinenbau
Beiträge: 42 Registriert: 02.10.2007 Gentoo Linux Intel Core2Duo E6750 @ 2.67GHz
|
erstellt am: 17. Dez. 2007 17:17 <-- editieren / zitieren --> Unities abgeben:
Hallo ich möchte ein wenig mit VBS unter Catiav5 programmieren. Fühle mich allerdings durch die Hilfe und die Unüberischtlichkeit dieser überfordert. Also meine Part-Document sieht so aus: Part - Geometrisches Set.1 - Geometrisches Set.2 - Hauptkörper Ich möchte nun das Geometrische Set.2 kopieren und unter diesem via PasteSpezial einfügen, sodass eine Verknüpfung zum ursprünglichen Objekt existiert, bis auf einen Wert. Bei diesem Wert handelt es sich um einen Winkel. Kann mir da jemand helfen? 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: 18. Dez. 2007 00:05 <-- editieren / zitieren --> Unities abgeben: Nur für zipdrive
Hallo, eine Kopie bekommt man nunr durch die Selection-Klasse. Um eine Kopie zu erstellen muss man: 1. Eine Selection deklarieren, 2. Ein Objekt ansprechen, 3. Das Objekt mittels Selection.Add(Objekt) in die aktuelle Seletion einfügen, 4. Eine 2. Seletion (natürlich mit anderen Namen) deklarieren, 5. Den Zielkörper (oder Geometr. Set) ansprechen, 6. Das Zielobjekt mittels Selection2.Add(Zielobjekt) in die 2. aktuelle Selektion einfügen, 7. Die ganzen Sachen mit Seletion2.PasteSpecial "CATPrtResult" zusammenfügen >>> Es entsteht eine Verknüpfte Kopie ohne eigene Historie Am besten auch hierzu mal die Hilfe nachschauen (nach "PasteSpecial" suchen) Viel Erfolg Jens Hansen Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
YellowDevil Mitglied PI, Makroentwicklung, NC Automatisierung
Beiträge: 67 Registriert: 21.12.2006
|
erstellt am: 18. Dez. 2007 12:35 <-- editieren / zitieren --> Unities abgeben: Nur für zipdrive
Na das wird so nicht wirklich funktionieren. Du fügst der Selektion ein Quellobjekt zu und dann willst du eine neue Selektion nehmen und der das Zielobjekt geben. Spätestens da hast du dann dein Quellobjekt wieder verloren. CATIA kennt nur eine Selektion und nicht mehrere! So sollte es klappen: 1.Selektion deklarieren 2.mit .Add das Quellobjekt zuweisen 3.mit .Copy das Quellobjekt kopieren 4.mit .Clear Selektion wieder freigeben 5.mit .Add das Zielobjekt zuweisen 6.mit .Paste oder .PasteSpecial das Quellobjekt einfügen Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
zipdrive Mitglied Student Maschinenbau
Beiträge: 42 Registriert: 02.10.2007 Gentoo Linux Intel Core2Duo E6750 @ 2.67GHz
|
erstellt am: 18. Dez. 2007 18:27 <-- editieren / zitieren --> Unities abgeben:
|
YellowDevil Mitglied PI, Makroentwicklung, NC Automatisierung
Beiträge: 67 Registriert: 21.12.2006
|
erstellt am: 18. Dez. 2007 19:46 <-- editieren / zitieren --> Unities abgeben: Nur für zipdrive
Sowas könnte dann so aussehen: Dim oMySel
Set oMySel=CATIA.ActiveDocument.Selection oMySel.Clear oMySel.Add Quellobject oMySel.Copy oMySel.Clear oMySel.Add Zielobject oMySel.PasteSpecial "CATPrtResult" oMySel.Clear
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
zipdrive Mitglied Student Maschinenbau
Beiträge: 42 Registriert: 02.10.2007 Gentoo Linux Intel Core2Duo E6750 @ 2.67GHz
|
erstellt am: 18. Dez. 2007 20:10 <-- editieren / zitieren --> Unities abgeben:
Ok ich habs erstmal so gemacht: Code: Sub CATMain() Dim ImpDoc As PartDocument Set ImpDoc = CATIA.ActiveDocument Dim ImpPart As Part Set ImpPart = ImpDoc.Part Dim Sel As Selection Set Sel = ImpDoc.Selection Dim Pattern As AnyObject Set Pattern = ImpPart.Bodies.Item("Geometrisches Set.2") Sel.Clear() Sel.Add(Pattern) Sel.Copy() Sel.Clear() Sel.PasteSpecial("CATPrtResult") End Sub
Allerdings will der VBS Interpreter bei der ersten (DIM) Zeile nicht: "Anweisungsende erwartet". Habe darauf alle DIM's ge'REM't. "CATPrtResult" funktioniert allerdings nicht. Ich hab noch die Frage, welches Zielobjekt ich denn auswählen soll. Und das entscheidende, wie kann ich bei dem neu eingefügten den Winkel ändern. Grüße [Diese Nachricht wurde von zipdrive am 18. Dez. 2007 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Lusilnie Mitglied
Beiträge: 1486 Registriert: 13.07.2005
|
erstellt am: 18. Dez. 2007 20:59 <-- editieren / zitieren --> Unities abgeben: Nur für zipdrive
Hallo zipdrive, ungetestet ein paar Anmerkungen: 1.) Wenn Du Dein Script als ".catvbs" abspeicherst, kannst Du die Dim-Anweisungen nicht mit "As ..." erweitern, Wenn Du dies willst, nutze ".CATScript"! 2.) Du hast nichts gewählt, wohin Du einfügen willst. Es müsste zwischen "Sel.Clear" und "Sel.PasteSpecial..." noch ein "Sel.Add", z.B. "Sel.Add(ImpPart.Bodies)" 3.) Ich programmiere nur mit ".CATScript" und ".catvba", doch dort würde ich mit den Klammern etwas vorsichtiger sein. ".catvba" nimmt die schon mal krumm, wenn in der Zeile kein "=" für eine Zuweisung ist! Die Änderung des Winkels wird wahrscheinlich nicht funktionieren, da ich im CATIA entweder eine 100%-Abhängigkeit erhalte oder eine von 0%, also keine! 80% geht halt nicht!!! Da muss ich dann hinterher nachbessern bzw. weiter bearbeiten.
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 |
zipdrive Mitglied Student Maschinenbau
Beiträge: 42 Registriert: 02.10.2007 Gentoo Linux Intel Core2Duo E6750 @ 2.67GHz
|
erstellt am: 18. Dez. 2007 21:05 <-- editieren / zitieren --> Unities abgeben:
Ok, ich hab in der Hilfe gelesen, dass man eine geometrische Set nicht verknüpfen kann. Man kan das Eingefügte also ändern. Das eingefügte Set ist nach dem Paste weiter selektiert. Nun müsste ich nur noch das erste Kindelement ansprechen (eine Ebene) und dort den Winkel-Wert ändern. Nur wie man das macht weiß ich nicht, ich find dazu auch nichts in der Hilfe oder hier im Forum. [Diese Nachricht wurde von zipdrive am 18. Dez. 2007 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Pietzonka Mitglied Maschinening.
Beiträge: 114 Registriert: 14.03.2006
|
erstellt am: 21. Dez. 2021 12:17 <-- editieren / zitieren --> Unities abgeben: Nur für zipdrive
Werte Catia-Programmierer, Das Makro funktioniert, wenn ich kopieren möchte: Language="VBSCRIPT" Sub CATMain() Dim partDocument1 As Document Set partDocument1 = CATIA.ActiveDocument Dim uSelect As Selection Set uSelect = partDocument1.Selection Dim HKoerper As HybridBodies Set HKoerper =partDocument1.Part.HybridBodies Dim effekt_Flaechen As HybridBody Set effekt_Flaechen = HKoerper.Item("0_bearbeitet") Dim oMySel Set oMySel=CATIA.ActiveDocument.Selection 'oMySel.Clear 'oMySel.Add Quellobject oMySel.Copy oMySel.Clear oMySel.Add effekt_Flaechen oMySel.PasteSpecial "CATPrtResult" oMySel.Clear Dim part1 As Part Set part1 = partDocument1.Part part1.Update End Sub Ich möchte die markierten Elemente automatisch einem anderen Geometrischen Set zuweisen (analog Befehl "Geometrisches Set ändern"). Dafür finde ich keinen Zugang. Sicher habt Ihr das schon so oder ähnlich gemeistert und könnt mit helfen! Mit freundlichen Grüßen Pietzonka 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: 21. Dez. 2021 12:55 <-- editieren / zitieren --> Unities abgeben: Nur für zipdrive
Servus Pietzonka Das Elemente nachträglich einem anderen GeoSet zuordnen scheint nicht direkt zu gehen. Bleibt nur noch Cut&Paste oder ggf noch die Tastendrücke zum Aufrufen des "Change GeoSet" nachzubilden. Per Cut&Paste geht es zB so (Elemente zuvor selektiert, müssen alles HybridShapes sein) Code: Sub CATMain()Dim oDoc As Document Dim oPart As Part Dim oSel as Selection Dim oTargetHybridBody as HybridBody Set oDoc = CATIA.ActiveDocument Set oPart = oDoc.Part Set oSel = oDoc.Selection Set oTargetHybridBody = oPart.HybridBodies.Item("Target Set") if oSel.Count2 <> 0 then oSel.Cut oSel.Clear oSel.add oTargetHybridBody oSel.Paste end if End Sub
Gruß Bernd ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Pietzonka Mitglied Maschinening.
Beiträge: 114 Registriert: 14.03.2006
|
erstellt am: 21. Dez. 2021 13:44 <-- editieren / zitieren --> Unities abgeben: Nur für zipdrive
Vielen Dank für Deine Hilfe, Bernd! Bei der Zeile oSel.Paste erhalte ich folgende Fehlermeldungen: 1 und nach dem Bestätigen 2. (siehe Anhang) (Die selektierten Elemente sind aber schon gelöscht worden.) Wenn ich es richtig verstehe, geht der Einfügebefehl nicht. 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: 21. Dez. 2021 13:53 <-- editieren / zitieren --> Unities abgeben: Nur für zipdrive
Servus Was hast du alles selektiert? Um was für Geometrie handelt es sich? (ggf Screenshot) (ich kann dein Fehler nicht nachstellen) ggf statt Paste mal PasteSpecial "CATPrtCont" probieren. Gruß Bernd ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Pietzonka Mitglied Maschinening.
Beiträge: 114 Registriert: 14.03.2006
|
erstellt am: 21. Dez. 2021 13:59 <-- editieren / zitieren --> Unities abgeben: Nur für zipdrive
|
bgrittmann Moderator Konstrukteur
Beiträge: 11780 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 21. Dez. 2021 14:10 <-- editieren / zitieren --> Unities abgeben: Nur für zipdrive
Servus OK, das wusste ich nicht dass man isolierte Flächen nicht ausschneiden und einfügen kann. Dann musst du wohl: - Selektierte Elemente in einem Array/Colletion zwischen speichern
- Copy & Paste ausführen
- Elemente aus Zwischenspeicher wieder selektieren und löschen (oder direkt über DeleteObjectForDatum)
Gruß Bernd ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Pietzonka Mitglied Maschinening.
Beiträge: 114 Registriert: 14.03.2006
|
erstellt am: 21. Dez. 2021 14:34 <-- editieren / zitieren --> Unities abgeben: Nur für zipdrive
|