Autor
|
Thema: Applications im CATIA Strukturbaum benutzerdefiniert neu sortieren (4027 mal gelesen)
|
projo Mitglied Dipl.-Inf.
Beiträge: 9 Registriert: 26.01.2012 Dell Precision M4400 Gesamtspeicher : 3.49GB DDR3 SO-DIMM Prozessor : Intel(R) Core(TM)2 Duo CPU P8400 @ 2.26GHz (2C 2.4GHz/2.26GHz 5% OC Turbo, 3MB L2) Grafikkarte : NVIDIA Quadro FX 770M (32 SP 800MHz, 512MB DDR3 600MHz 128-bit, PCIe 2.00 x16) Windows XP SP3 Professional, CATIA V5R19 SP9
|
erstellt am: 26. Jan. 2012 10:14 <-- editieren / zitieren --> Unities abgeben:
Hallo zusammen, ich möchte die Elemente unter "Applications" im CATIA Strukturbaum mit CATVBA benutzerdefiniert neu sortieren/anordnen. Es handelt sich dabei konkret um "Measure", "Group", "Sections", "Tracks" und "Shuttle" (siehe angehängter Screenshot). Ich habe das für "Groups", "Sections" und "Tracks" bereits hinbekommen. Bei "Measure" und "Shuttle" scheitert es daran, dass ich mit CATIA.ActiveDocument.Product.GetTechnologicalObject(...) nicht an das entsprechende Objekt herankomme. Gibt es vielleicht eine Alternative? Vielen Dank schonmal, Johannes 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: 26. Jan. 2012 12:47 <-- editieren / zitieren --> Unities abgeben: Nur für projo
|
projo Mitglied Dipl.-Inf.
Beiträge: 9 Registriert: 26.01.2012 Dell Precision M4400 Gesamtspeicher : 3.49GB DDR3 SO-DIMM Prozessor : Intel(R) Core(TM)2 Duo CPU P8400 @ 2.26GHz (2C 2.4GHz/2.26GHz 5% OC Turbo, 3MB L2) Grafikkarte : NVIDIA Quadro FX 770M (32 SP 800MHz, 512MB DDR3 600MHz 128-bit, PCIe 2.00 x16) Windows XP SP3 Professional, CATIA V5R19 SP9
|
erstellt am: 26. Jan. 2012 13:37 <-- editieren / zitieren --> Unities abgeben:
Die Sortierung von "Sections" habe ich wie folgt durchgeführt: Code: Sub SetSectionOrderOfListBox(listBoxOrder() As String) Dim i As Integer i = 1 For i = 1 To UBound(listBoxOrder) SelectSectionByName listBoxOrder(i) CopyAndPaste DeleteSectionByName listBoxOrder(i) SetOldSectionName listBoxOrder(i) Next End SubSub CopyAndPaste() Dim sel As Selection Set sel = CATIA.ActiveDocument.Selection sel.Copy sel.Paste End Sub Sub SetOldSectionName(secName As String) Dim secs As Sections Set secs = CATIA.ActiveDocument.Product.GetTechnologicalObject("Sections") Dim i As Integer i = 1 For i = 1 To secs.Count If secs.Item(i).Name = "Copy of " & secName Then secs.Item(i).Name = secName End If Next End Sub Sub DeleteSectionByName(secName As String) Dim sel As Selection Dim searchstring As String Set sel = CATIA.ActiveDocument.Selection sel.Clear searchstring = "(Name='" & secName & "'&'Digital Mockup'.Section);all" sel.Search (searchstring) sel.Delete End Sub Sub SelectSectionByName(secName As String) Dim sel As Selection Dim searchstring As String Set sel = CATIA.ActiveDocument.Selection sel.Clear searchstring = "(Name='" & secName & "'&'Digital Mockup'.Section);all" sel.Search (searchstring) End Sub Function GetSectionNames() Dim secs As Sections Set secs = CATIA.ActiveDocument.Product.GetTechnologicalObject("Sections") Dim secsNames() As String ReDim secsNames(secs.Count) Dim i As Integer i = 1 For i = 1 To secs.Count secsNames(i) = secs.Item(i).Name Next GetSectionNames = secsNames End Function
Ich würde das nun gerne analog für "Measure" und "Shuttle" hinbekommen! Gruß Johannes 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: 26. Jan. 2012 18:20 <-- editieren / zitieren --> Unities abgeben: Nur für projo
Servus Anbei ein Beispiel wie du an die Shuttels und Tracks drankommst (zumindest spuckt dies die Objektauflösung so aus): Code: Dim productDocument1 As ProductDocument Set productDocument1 = CATIA.ActiveDocumentDim fittingWorkbench1 As FittingWorkbench Set fittingWorkbench1 = productDocument1.GetWorkbench("FittingWorkbench") Dim shuttles1 As Shuttles Set shuttles1 = fittingWorkbench1.Shuttles Dim shuttle1 As Shuttle Set shuttle1 = shuttles1.Item(1) ' 1. Shuttel Dim sampledsNode1 As SampledsNode Set sampledsNode1 = product1.GetTechnologicalObject("Sampleds") Dim tracks1 As Tracks Set tracks1 = sampledsNode1.GetSampleds("Tracks") Dim track1 As Track Set track1 = tracks1.Item(1) '1. Track
Gruß Bernd------------------ Warum einfach, wenn es auch kompliziert geht. [Diese Nachricht wurde von bgrittmann am 26. Jan. 2012 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
projo Mitglied Dipl.-Inf.
Beiträge: 9 Registriert: 26.01.2012 Dell Precision M4400 Gesamtspeicher : 3.49GB DDR3 SO-DIMM Prozessor : Intel(R) Core(TM)2 Duo CPU P8400 @ 2.26GHz (2C 2.4GHz/2.26GHz 5% OC Turbo, 3MB L2) Grafikkarte : NVIDIA Quadro FX 770M (32 SP 800MHz, 512MB DDR3 600MHz 128-bit, PCIe 2.00 x16) Windows XP SP3 Professional, CATIA V5R19 SP9
|
erstellt am: 27. Jan. 2012 15:36 <-- editieren / zitieren --> Unities abgeben:
|
bgrittmann Moderator Konstrukteur
Beiträge: 11780 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 27. Jan. 2012 15:45 <-- editieren / zitieren --> Unities abgeben: Nur für projo
|
projo Mitglied Dipl.-Inf.
Beiträge: 9 Registriert: 26.01.2012 Dell Precision M4400 Gesamtspeicher : 3.49GB DDR3 SO-DIMM Prozessor : Intel(R) Core(TM)2 Duo CPU P8400 @ 2.26GHz (2C 2.4GHz/2.26GHz 5% OC Turbo, 3MB L2) Grafikkarte : NVIDIA Quadro FX 770M (32 SP 800MHz, 512MB DDR3 600MHz 128-bit, PCIe 2.00 x16) Windows XP SP3 Professional, CATIA V5R19 SP9
|
erstellt am: 30. Jan. 2012 15:05 <-- editieren / zitieren --> Unities abgeben:
Hallo zusammen, zunächst mal Dankeschön für die bisherigen Anworten. Insbesondere an Bernd. Ich habe leider immer noch Probleme mit "Shuttles" und "Measure". Bei den "Shuttles" funktioniert das Copy and Paste nicht so wie ich es möchte. Die Kopie wird wird dem ursprünglichen Namen (nicht "Copy of ...") unterhalb des Ursprünglichen "Shuttles" eingefügt. Das soll nicht so sein. Letztendlich will ich ja durch Copy and Paste die Reihenfolge der Shuttles ändern (siehe Quellcode der das anhand von "Sections" zeigt). Bei "Measure" habe ich das Problem, dass ich nicht weiß in welchen Datentyp ich die Elemente speichern soll. "Distance" und "Inertia" funktioniert nicht. Auch hier möchte ich letztendlich die Reihenfolge der "Meaures" ändern. Den Ansatz, welchen ich dabei für die "Sections" gewählt habe muss ich dabei nicht ungedingt übernehmen. Ich bin für jede hilfreiche Anregung dankbar. Gerne führe ich auch alternative Lösungswege durch. Leider komme ich so erst mal nicht weiter. Danke und Gruß, Johannes 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: 30. Jan. 2012 18:03 <-- editieren / zitieren --> Unities abgeben: Nur für projo
Servus Wenn du ein Shuttel kopiert und wieder eingefügt hast solltest du einfach das letzte Shutte ansprechen können (das gerade eingefügte) (ungetestet): Code: Set shuttle1 = shuttles1.Item(shuttles1.count)
Gruß Bernd ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
projo Mitglied Dipl.-Inf.
Beiträge: 9 Registriert: 26.01.2012 Dell Precision M4400 Gesamtspeicher : 3.49GB DDR3 SO-DIMM Prozessor : Intel(R) Core(TM)2 Duo CPU P8400 @ 2.26GHz (2C 2.4GHz/2.26GHz 5% OC Turbo, 3MB L2) Grafikkarte : NVIDIA Quadro FX 770M (32 SP 800MHz, 512MB DDR3 600MHz 128-bit, PCIe 2.00 x16) Windows XP SP3 Professional, CATIA V5R19 SP9
|
erstellt am: 31. Jan. 2012 11:28 <-- editieren / zitieren --> Unities abgeben:
Hallo Bernd, danke für den Tipp. Leider wird bei mir die Kopie immer unterhalb des Originals im Srukturbaum einfgefügt (siehe Screenshot). Das macht mir eine Umsortierung durch Copy and Paste unmöglich. Gruß Johannes 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: 31. Jan. 2012 12:41 <-- editieren / zitieren --> Unities abgeben: Nur für projo
Servus Vor dem Einfügen solltest du die Shuttels (oder das Product oder Part)zu selektieren, dann sollt es passen. Wundert mich dass es bei den Sctions usw funktioniert. Gruß Bernd ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
projo Mitglied Dipl.-Inf.
Beiträge: 9 Registriert: 26.01.2012 Dell Precision M4400 Gesamtspeicher : 3.49GB DDR3 SO-DIMM Prozessor : Intel(R) Core(TM)2 Duo CPU P8400 @ 2.26GHz (2C 2.4GHz/2.26GHz 5% OC Turbo, 3MB L2) Grafikkarte : NVIDIA Quadro FX 770M (32 SP 800MHz, 512MB DDR3 600MHz 128-bit, PCIe 2.00 x16) Windows XP SP3 Professional, CATIA V5R19 SP9
|
erstellt am: 01. Feb. 2012 10:24 <-- editieren / zitieren --> Unities abgeben:
|
bgrittmann Moderator Konstrukteur
Beiträge: 11780 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 01. Feb. 2012 12:25 <-- editieren / zitieren --> Unities abgeben: Nur für projo
Servus Versuch es mal so: Code: Sub CopyAndPaste() Dim sel As Selection Set sel = CATIA.ActiveDocument.Selection sel.Copy #Selektion leeren und Product selektieren sel.clear sel.add CATIA.ActiveDocument.product sel.Paste End Sub
------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
projo Mitglied Dipl.-Inf.
Beiträge: 9 Registriert: 26.01.2012 Dell Precision M4400 Gesamtspeicher : 3.49GB DDR3 SO-DIMM Prozessor : Intel(R) Core(TM)2 Duo CPU P8400 @ 2.26GHz (2C 2.4GHz/2.26GHz 5% OC Turbo, 3MB L2) Grafikkarte : NVIDIA Quadro FX 770M (32 SP 800MHz, 512MB DDR3 600MHz 128-bit, PCIe 2.00 x16) Windows XP SP3 Professional, CATIA V5R19 SP9
|
erstellt am: 01. Feb. 2012 13:45 <-- editieren / zitieren --> Unities abgeben:
|
bgrittmann Moderator Konstrukteur
Beiträge: 11780 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 01. Feb. 2012 17:10 <-- editieren / zitieren --> Unities abgeben: Nur für projo
Servus "Händisch" muss du zum einfügen den Eintrag "Shuttels" im Strukturbaum selektieren. IMHO kann man diesen Eintrag nicht mit einem Makro selektieren, somit musst du dir wohl eine andre Lösung suchen. (zB Windows API) Gruß Bernd ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
projo Mitglied Dipl.-Inf.
Beiträge: 9 Registriert: 26.01.2012 Dell Precision M4400 Gesamtspeicher : 3.49GB DDR3 SO-DIMM Prozessor : Intel(R) Core(TM)2 Duo CPU P8400 @ 2.26GHz (2C 2.4GHz/2.26GHz 5% OC Turbo, 3MB L2) Grafikkarte : NVIDIA Quadro FX 770M (32 SP 800MHz, 512MB DDR3 600MHz 128-bit, PCIe 2.00 x16) Windows XP SP3 Professional, CATIA V5R19 SP9
|
erstellt am: 01. Feb. 2012 18:00 <-- editieren / zitieren --> Unities abgeben:
Hallo, danke für den Hinweis. Besteht vielleicht denn eine Möglichkeit "Measure" nach meinem Schema (siehe "Sections") zu sortieren? Ich weiß allerdings nicht, welchen Datentyp ich als Zwischenspeicher verwenden kann. "Distance" und "Inertia" scheint nicht zu funktionieren. Gruß Johannes Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
projo Mitglied Dipl.-Inf.
Beiträge: 9 Registriert: 26.01.2012 Dell Precision M4400 Gesamtspeicher : 3.49GB DDR3 SO-DIMM Prozessor : Intel(R) Core(TM)2 Duo CPU P8400 @ 2.26GHz (2C 2.4GHz/2.26GHz 5% OC Turbo, 3MB L2) Grafikkarte : NVIDIA Quadro FX 770M (32 SP 800MHz, 512MB DDR3 600MHz 128-bit, PCIe 2.00 x16) Windows XP SP3 Professional, CATIA V5R19 SP9
|
erstellt am: 13. Feb. 2012 14:20 <-- editieren / zitieren --> Unities abgeben:
Hallo zusammen, es hat sich im Zusammenhang mit der Sortierung ein neues Problem ergeben. Auf einem WinXP 32 Bit System läuft die Sortierung einwandfrei. Der Strukturbaum wird sofort (in Echtzeit) aktualisiert. Auf einem WinXP 64 Bit System funktioniert die Aktualisierung des Strukturbaums nicht. Erst nachdem die GUI beendet wurde, wird die Aktualisierung angestoßen. Wie lässt sich dieses Problem lösen? Gruß Johannes Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |