Autor
|
Thema: Referencen einer Intersection durch Selection (816 mal gelesen)
|
Aitec Mitglied
Beiträge: 30 Registriert: 25.04.2018 Catia V5-R2016
|
erstellt am: 23. Mai. 2018 15:40 <-- editieren / zitieren --> Unities abgeben:
Hallo CAD Community, ich habe bin mal wieder an einem Punkt angekommen wo mir Literatur, Websuche oder der Makrorecorder nicht weiterhelfen. Es geht dabei um Folgendes: Ich befinde mich auf Produktebene. Im verlauf es Makros selektiere ich ein Part welches als zweite Reference für die Intersection dienen soll welche ich erzeugen möchte. Das Problem liegt nun darin, dass die Intersection zwar angelegt wird jedoch stimmt etwas mit der besagten Reference nicht. Anbei ein Codeschnippsel
Code: Dim KSel As Variant Dim KFilter(3) Set KSel = ADoc.Selection KSel.Clear KFilter(0) = "Body" KFilter(1) = "HybridBody" KFilter(2) = "Part" KFilter(3) = "Product" Dim ref_plane As ReferenceSet ref_plane = MeinPart.CreateReferenceFromObject(MeinPart.HybridBodies.Item("GeoSections").HybridShapes.Item("Plane.1")) MsgBox "Bitte Wählen Sie ein Part aus.", 0, "Section erzeugen" KSelection = KSel.SelectElement2(sFilter, "Bitte Part auswählen", False) Dim MeinBauteil As AnyObject If KSelection = "Normal" Then Set MeinBauteil = KSel.Item2(1).Value End If Dim ref1 As Reference Set ref1 = AProduct.Products.Item(MeinBauteil .Name).ReferenceProduct.Parent.Part.CreateReferenceFromObject(KSel.Item2(1).Value) Dim Intersection As HybridShapeIntersection Set Intersection = oHybridShapeFactory.AddNewIntersection(ref_plane, ref_seitenwand) hybridBody1.AppendHybridShape Intersection MeinPart.Update
Ich hoffe mein Problem einigermaßen verständlich erklärt zu haben. Vielen Dank für eure Unterstützung! 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: 23. Mai. 2018 18:19 <-- editieren / zitieren --> Unities abgeben: Nur für Aitec
Servus Befinden sich beide Elemente der Intersection im gleichen Bauteil in der auch dieser erzeugt werden soll? Wo wird in deinem Code ref_seitenwand gebildet? Ist MeinBauteil nun die Instanz, das Part oder das ReferenceProduct? Gruß bernd
------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Aitec Mitglied
Beiträge: 30 Registriert: 25.04.2018 Catia V5-R2016
|
erstellt am: 24. Mai. 2018 08:59 <-- editieren / zitieren --> Unities abgeben:
Servus bgrittmann, in meinem Makro wird ein neues Part sowie eine neue Fläche erzeugt, welche in diesem Part liegt. Auf dieses Part greife ich über (MeinPart) zu. Die Seitenwand ist ein Part welches in einer komplexeren Produktstruktur untergeordnet ist. Die beiden Element befinden sich nicht im selben Bauteil. Ich habe ref_seitenwand durch ref1 ersetzt. Das habe ich aber bereits schon korrigiert. Mein Problem besteht vor allem jetzt darin das ich nicht weiß wie ich meine ref1 korrekt beschreibe. Ich möchte nämlich während des Makros nur auf die Seitenwand (per Maus) klicken und diese Selektion für die reference Erzeugung verwenden. Final soll die Intersection in dem von mir erzeugten Part liegen, dies geschieht auch bereits, außer das die Intersection nicht gebildet wird,da ihr die ref1 fehlt. Syr für diese verwirrenden Kennzeichnungen. Danke und VG! 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: 24. Mai. 2018 18:26 <-- editieren / zitieren --> Unities abgeben: Nur für Aitec
Servus Wenn du das manuell machst, wird ja automatisch eine verknüpfte Fläche in das Part kopiert. Das muss du leider auch in einem Makro nachbilden. Wenn der Baugruppenkontext (also die unterschiedliche Position der Bauteile) nicht erforderlich ist kannst du die Fläche einfach per PasteSpecial zwischen den Parts kopieren. Falls der Baugruppenkontext erforderlich ist wird es komplexer: zum kopieren muss der "Pfad" für die Referenz gebildet werden (siehe auch hier) Gruß Bernd ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Aitec Mitglied
Beiträge: 30 Registriert: 25.04.2018 Catia V5-R2016
|
erstellt am: 28. Mai. 2018 11:45 <-- editieren / zitieren --> Unities abgeben:
Hallo bgrittmann, danke für die Antwort. Ich habe das Problem jetzt mithilfe von Copy & Paste gelöst. Leider muss ich zum Kopieren immer genau das Solid aus dem Baum auswählen. Es wäre schön wenn dies auch Funktionieren würde wenn ich direkt auf das Bauteil klicke. VG und Danke ! 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: 28. Mai. 2018 17:57 <-- editieren / zitieren --> Unities abgeben: Nur für Aitec
Servus Dass geht zB mit LeafProduct dass dir die Instanz liefert Code: Sub CATMain()Dim osel As Variant Dim SelFilter(0) dim Status as String dim SelDocument as Document Set osel = Catia.Activedocument.Selection SelFilter(0) = "AnyObject" Status = osel.SelectElement2(SelFilter, "Bitte Part auswählen", False) if Status = "Normal" then msgBox osel.item2(1).LeafProduct.Name Set SelDocument = osel.item2(1).LeafProduct.ReferenceProduct.Parent MsgBox SelDocument.Name end if End Sub
------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |