Autor
|
Thema: Extract und Fill in GeoSet detektieren (1091 / mal gelesen)
|
4ppU Mitglied
Beiträge: 44 Registriert: 19.04.2016 Unterschiedliche Arbeitsplätze/ Hardware. Catia V5 Microsoft Visual Basic for Applications
|
erstellt am: 05. Jul. 2016 10:27 <-- editieren / zitieren --> Unities abgeben:
Guten Tag zusammen Ich habe ein Geometrisches Set, dass in einem Makro erstellt wird. In dieses GeoSet werden Extracts und Fills geschrieben. Diese möchte ich alle erfassen und durch einen Join zusammenfassen. Hat jemand eine Idee/Anregung wie ich das umsetzen kann? Es befinden sich allerdings auch ausgeblendete Extracts in dem GeoSet, die wiederum nicht in den Join kommen sollen Problem ist, es können mal nur 3 Fill& Extracts sein, mal 10, es sollen aber stets alle im GeoSet befindlichen F&E erfasst werden. Sollte man mit einem Search Filter arbeiten ? Oder gibt noch andere Möglichkeiten? Vielen Dank schon mal 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: 05. Jul. 2016 10:39 <-- editieren / zitieren --> Unities abgeben: Nur für 4ppU
Servus Am Einfachst ist das wohl über die Suche: GeoSet selektieren und in der Selektion nach Extracts und Fills suchen die sichtbar sind. Hier ein Beispiel-Suchstring: Code: selection1.Search "(CATGmoSearch.GSMFill.Visibility=Visible + CATGmoSearch.GSMExtract.Visibility=Visible),sel"
Gruß Bernd ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
4ppU Mitglied
Beiträge: 44 Registriert: 19.04.2016 Unterschiedliche Arbeitsplätze/ Hardware. Catia V5 Microsoft Visual Basic for Applications
|
erstellt am: 05. Jul. 2016 11:00 <-- editieren / zitieren --> Unities abgeben:
Moin Bernd, danke für die schnelle Antwort. Ich werde es gleich mal ausprobieren. Die erfassten F&E werden dann in der Variable "selection1" gespeichert oder? Da das GeoSet ja zuvor erstellt wird und immer den gleich Namen haben wird, kann ich die Selektion ja auch über das Makro einbinden. Besten Dank. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
joehz Moderator Freiberuflicher Konstrukteur
Beiträge: 1057 Registriert: 25.11.2006 Win7 Pro 64 + Ubuntu + Irix6.5.20 Dell Precision M6600 i7-2960XM 2.7GHz 16GB NVidia Quadro M5010 Catia V5R19 VB6Pro.SP6/VBA 6.5.1053
|
erstellt am: 05. Jul. 2016 11:20 <-- editieren / zitieren --> Unities abgeben: Nur für 4ppU
Hi 4ppU, Zitat:
Ich habe ein Geometrisches Set, dass in einem Makro erstellt wird. In dieses GeoSet werden Extracts und Fills geschrieben. Diese möchte ich alle erfassen und durch einen Join zusammenfassen.
Du könntest auch Dein Makro um den Join erweitern indem Du - entweder die interessanten Elemente direkt nach der Erzeugung zunächst merkst und anschliessend joinst - oder nach dem Erzeugen der Elemente das (neu erzeugte) Set ausliest und die Fills zusammenfügst Tschau, Joe ------------------ Inoffizielle Catia Hilfeseite Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
4ppU Mitglied
Beiträge: 44 Registriert: 19.04.2016 Unterschiedliche Arbeitsplätze/ Hardware. Catia V5 Microsoft Visual Basic for Applications
|
erstellt am: 05. Jul. 2016 11:28 <-- editieren / zitieren --> Unities abgeben:
Hey joehz, Zitat: - entweder die interessanten Elemente direkt nach der Erzeugung zunächst merkst und anschliessend joinst
das klingt auch nicht schlecht. Aber wie muss ich mir das mit dem merken vorstellen? Also in dem Makro wird halt zunächst das GeoSet erstellt, anschließend ein Extract und dann über eine Schleife mehrere Fills. Das mit dem merken finde ich irgendwie gut ^^ nur kann ich mir da noch nicht wirklich etwas drunter vorstellen :P 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: 05. Jul. 2016 11:38 <-- editieren / zitieren --> Unities abgeben: Nur für 4ppU
Servus Du erstellst dir ein Array/Collection und packst dort die Fills/Extracts rein. Später dann beim erstellen des Joins den Array/Collection mit einer Schleife abarbeiten. Gruß Bernd ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
4ppU Mitglied
Beiträge: 44 Registriert: 19.04.2016 Unterschiedliche Arbeitsplätze/ Hardware. Catia V5 Microsoft Visual Basic for Applications
|
erstellt am: 05. Jul. 2016 14:10 <-- editieren / zitieren --> Unities abgeben:
Okay, scheint ne ganze coole Methodik zu sein Hab den Code mal angefangen. Es werden auch im Locals Fenster angezeigt, das er die Fs&Es gefunden hat. Allesdings verstehe ich nicht, wie das mit der Schleife gemeint ist? Also wenn ich jetzt über die Search Funktion gehe. Habe ich anschließend XY F&E, aber wie kann ich diese über eine Schleife wieder einlesen? Find das nicht im Forum EDIT: Also mit XY F&E meine ich, eine gewisse Anzahl an Fills und Extracts. Ich hab dann ja die Zeile in der die Variablen bzw. die F&E geaddet werden müssen. Da hänge ich nun. Code: Set hybridShapeAssemble1 = hybridShapeFactory1.AddNewJoin(Elements(i))
Ich glaube, wenn ich das dann verstanden habe, müsste das funktionieren. [Diese Nachricht wurde von 4ppU am 05. Jul. 2016 editiert.] 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: 05. Jul. 2016 14:50 <-- editieren / zitieren --> Unities abgeben: Nur für 4ppU
Servus Indem du (wie in deinem andern Makro) über ".Item2" (+den Zähler) auf die einzelnen Element der Selektion zugreifst (siehe Doku) Gruß BErnd ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
4ppU Mitglied
Beiträge: 44 Registriert: 19.04.2016 Unterschiedliche Arbeitsplätze/ Hardware. Catia V5 Microsoft Visual Basic for Applications
|
erstellt am: 05. Jul. 2016 15:36 <-- editieren / zitieren --> Unities abgeben:
Okay jetzt bin ich raus... Also ich habe folgenden Code: Code: Sub CATMain()Dim MyCatiaDocument As Document Set selection1 = CATIA.ActiveDocument.Selection MsgBox "Ein Join wird erstellt." selection1.Search "(CATGmoSearch.GSMFill.Visibility=Visible + CATGmoSearch.GSMExtract.Visibility=Visible),GeoSet_Close_Surface" Dim Elements() As Object ReDim Elements(selection1.Count) For i = 1 To selection1.Count Set Elements(i) = selection1.Item2(i) Next '######################## ' Hier die Schleife erstellen, um die Referenzen dem Join hinzuzufügen? '######################## Dim hybridShapeAssemble1 As HybridShapeAssemble Set hybridShapeAssemble1 = hybridShapeFactory1.AddNewJoin(Elements) hybridShapeAssemble1.SetConnex 1 hybridShapeAssemble1.SetManifold 0 hybridShapeAssemble1.SetSimplify 0 hybridShapeAssemble1.SetSuppressMode 0 hybridShapeAssemble1.SetDeviation 0.001 hybridShapeAssemble1.SetAngularToleranceMode 0 hybridShapeAssemble1.SetAngularTolerance 0.5 hybridShapeAssemble1.SetFederationPropagation 0 hybridBody1.AppendHybridShape hybridShapeAssemble1 part1.InWorkObject = hybridShapeAssemble1 part1.Update End Sub
Also braucht .AddNewJoin auch eine reference? Also ich hab das jetzt so verstanden: Über die selection1.search werden alle F&E im GeoSet gefunden. Über Elements werden diese abgelegt. Im Locals Fenster werden diese ja auch unter Elements angezeigt. Nun muss ich im Anschluss eine Schleife mit Hilfe der Selection erstellen, in der diese Elements wieder hergeholt werden und in den AddNewJoin eingesetzt werden?!
Zitat: ".Item2" (+den Zähler)
Meinst du dann quasi selection1.Item2(1 + i) oder wie? Gibts hier im Forum ein ähnliches Beispiel oder so, wie man diese Werte wiederholt und einsetzt? sorry:
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: 05. Jul. 2016 15:41 <-- editieren / zitieren --> Unities abgeben: Nur für 4ppU
Servus Du kannst direkt aus der Selektion schon die Reference bilden: Code: Set Elements(i)= selection1.Item2(i).Reference
Schau dir mal in der Doku den Join an. Bei "AddNewJoin" müssen zwei Referenzen übergeben werden und danach die anderen mit ".AddElement" hinzugefügt werden. Gruß Bernd EDIT: Folgende Zeile ist bei dir noch falsch:
Code: selection1.Search "(CATGmoSearch.GSMFill.Visibility=Visible + CATGmoSearch.GSMExtract.Visibility=Visible),GeoSet_Close_Surface sel"
Zum muss vorher das GeoSet im dem du suchst selektiert sein. ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
4ppU Mitglied
Beiträge: 44 Registriert: 19.04.2016 Unterschiedliche Arbeitsplätze/ Hardware. Catia V5 Microsoft Visual Basic for Applications
|
erstellt am: 06. Jul. 2016 11:15 <-- editieren / zitieren --> Unities abgeben:
Guten Tag zusammen, und danke für die Hinweise. Es klappt jetzt soweit, nur das am Ende die F&E nicht ausgeblendet werden, wie bei nem Join üblich. Hat da nochmal jemand nen Tipp oder ne Idee, warum das nicht zu Ende läuft? Am Anfang hat es ein mal geklappt. Allerdings habe ich dann angefangen den Code weiterzubearbeiten, joa, und dann wars das ^^ Und @Bernd: wenn ich da sel hinmache klappt es nicht. Mit meinem Geo_Set_... funktioniert es. Zumindest fast ^^ Hier ist nun der Code: Code: 'Joinen von extracts und fillsSub Assembly() Dim partDocument1 As PartDocument Set partDocument1 = CATIA.ActiveDocument Dim part1 As Part Set part1 = partDocument1.Part Dim hybridBodies1 As HybridBodies Set hybridBodies1 = part1.HybridBodies Dim gSet As HybridBody Set gSet = hybridBodies1.Item("GeoSet_Close_Surface") Dim hybridShapes1 As HybridShapes Set selection1 = CATIA.ActiveDocument.Selection Dim i As Integer Dim hybridShapeFactory1 As HybridShapeFactory Dim oAssy As HybridShapeAssemble Set hybridShapeFactory1 = CATIA.ActiveDocument.Part.HybridShapeFactory selection1.Search "(CATGmoSearch.GSMFill.Visibility=Visible + CATGmoSearch.GSMExtract.Visibility=Visible),GeoSet_Close_Surface" Dim Elements() As Object ReDim Elements(selection1.Count) For i = 1 To selection1.Count Set Elements(i) = selection1.Item2(i).Reference Next Set oAssy = hybridShapeFactory1.AddNewJoin(Elements(1), Elements(2)) If selection1.Count > 2 Then For i = 3 To selection1.Count oAssy.AddElement selection1.Item2(i).Reference Next End If selection1.Clear oAssy.SetConnex 1 oAssy.SetManifold 0 oAssy.SetSimplify 0 oAssy.SetSuppressMode 0 oAssy.SetDeviation 0.001 oAssy.SetAngularToleranceMode 0 oAssy.SetAngularTolerance 0.5 oAssy.SetFederationPropagation 0 gSet.AppendHybridShape oAssy part1.InWorkObject = oAssy part1.Update CATIA.ActiveDocument.Part.UpdateObject oAssy End Sub
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: 06. Jul. 2016 11:23 <-- editieren / zitieren --> Unities abgeben: Nur für 4ppU
Servus Zum Ausblenden: da du die Element ja noch selektiert hast kannst du diese ja einfach auslebenden (VisPropertySet). IMHO musst du dein GeSet selektieren und dann darin suchen: Code: selection1.Clear selection1.add gSet selection1.Search "(CATGmoSearch.GSMFill.Visibility=Visible + CATGmoSearch.GSMExtract.Visibility=Visible),sel"
Gruß Bernd ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
4ppU Mitglied
Beiträge: 44 Registriert: 19.04.2016 Unterschiedliche Arbeitsplätze/ Hardware. Catia V5 Microsoft Visual Basic for Applications
|
erstellt am: 06. Jul. 2016 11:46 <-- editieren / zitieren --> Unities abgeben:
hmm naja ok. Ist natürlich n blöder weg, aber wenns sein muss. das merkwürdige ist ja, wenn ich den Join öffne (dk) und dann auf ok gehe, is alles ausgeblendet und alles so wie es gewollt ist... sehr merkwürdig alles ... EDIT: Sorry, war nicht so gemeint. Nur schade, dass es dann nach der ganzen Programmiererei nicht so schön funktioniert, als würde man es händisch machen. Ich dachte, vielleicht hat noch jemand einen Tipp, was da fehlt oder so, das es dann auch automatisch ausgeblendet wird. Aber jetzt funktioniert alles. Vielen Dank an alle \o/ [Diese Nachricht wurde von 4ppU am 07. Jul. 2016 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |