| |  | CATIA V5 Grundkurs | Einsteiger - 5 Std. 15 Min 48 | | |  | KISTERS 3DViewStation: 3D-Visualisierung für After Sales, Service und Ersatzteile, eine Pressemitteilung
|
Autor
|
Thema: Aktive DrawingView mit Makro erstellen wie manuell möglich (217 / mal gelesen)
|
Flo-p1 Mitglied Student
 Beiträge: 9 Registriert: 29.04.2025
|
erstellt am: 28. Mai. 2025 16:50 <-- editieren / zitieren --> Unities abgeben:         
Hallo zusammen, ich habe ein kleines vb.net Programm, in dem ich einzelne Flächen in Catia jeweils aus und einblende und dann zum richtigen Zeitpunkt eine Drawing View erzeuge. Diese muss ich jedoch wieder isolieren, da diese sonst bei der nächsten View (sichtbare Flächen im CatPart ändern sich) mit einem Update nicht mehr die alten Flächen zeigt. Ich würde gerne, wie es manuell möglich ist, erst zwei Geosets mit eben den jeweiligen Flächen auswählen und dann daraus eine View erzeugen, die dann nicht isoliert werden muss und eben nur auf die beiden Geosets zugreift/ zeigt. Ich habe das ganze schonmal so probiert.. Überraschung es funktioniert nicht so einfach, oder habe ich einen Fehler? Code: 'View erstellen Dim topView As DrawingView = firstPlyViews.Add("Top View") Dim behTop As DrawingViewGenerativeBehavior = topView.GenerativeBehavior behTop.Document = partDoc SelectPlyGeoset(plyindex, selection, partDoc) 'selektiert im CatPart die beiden gewünschten Geosets die jeweils eine Fläche beinhalten behTop.DefineFrontView(vecX(0), vecX(1), vecX(2), vecY(0), vecY(1), vecY(2)) behTop.Update()'Das ist die SelectPlyFunktion (Also soweit ich das manuell prüfen kann klappt die, außer ich habe ein activate etc. vergessen): Shared Sub SelectPlyGeoset(plyindex As Integer, selection As Selection, partDoc As PartDocument) 'plyindex 1 ist auch Ply 1 Dim plynames As New List(Of String) For Each kvp As KeyValuePair(Of String, String()) In LoadLayupInformation.layupInfos Dim values As String() = kvp.Value plynames.Add(values(2)) Next Dim part As Part = partDoc.Part Dim hybridbodies As HybridBodies = part.HybridBodies selection.Clear() For i As Integer = 1 To hybridbodies.Count Dim body As HybridBody = hybridbodies.Item(i) If body.Name = "Stacking" Then Dim pbBodies As HybridBodies = body.HybridBodies For j As Integer = 1 To pbBodies.Count Dim pbBody As HybridBody = pbBodies.Item(j) Dim seqBodies As HybridBodies = pbBody.HybridBodies For k As Integer = 1 To seqBodies.Count Dim seqBody As HybridBody = seqBodies.Item(k) Dim plyBodies As HybridBodies = seqBody.HybridBodies For l As Integer = 1 To plyBodies.Count Dim plyBody As HybridBody = plyBodies.Item(l) If plyBody.Name = plynames(plyindex - 1) Then selection.Add(plyBody) End If Next Next Next ElseIf body.Name = "Tooling_Export" Then selection.Add(body) End If Next End Sub
Ja ich weiß, das ich die Geosets mehrmals selektiere, aber das sollte jedoch kein Problem sein oder? Ich danke euch schonmal für eure Hilfe und wünsche einen schönen Tag. Viele Grüße Flo
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
wolfi_z Moderator Konstrukteur
      

 Beiträge: 2512 Registriert: 04.12.2004 CATIA V5 in der aktuellen Umgebung des jeweiligem OEM ;-) NX 2312 Daimler
|
erstellt am: 28. Mai. 2025 16:55 <-- editieren / zitieren --> Unities abgeben:          Nur für Flo-p1
Hi Flo, Wenn Du eine Ansicht auf eine bestimmte Geometrie 'fokussiert' haben willst, dann gibt es dafuer einen ziemlich anderen Weg. Du publizierst diese Geometrie im 3D und fuegst sie CPL in ein neues Part, welches Du in Deiner Baugruppe anlegst. Die fragliche View wird dann mit einer Szene verknuepft, in der exakt dieses Part im Show ist und Deine 'normalen' Teile im Hide LG ... Wolfi ------------------ NX neun minus CATIA fuenf ergibt Hartz IV  Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Flo-p1 Mitglied Student
 Beiträge: 9 Registriert: 29.04.2025
|
erstellt am: 28. Mai. 2025 17:01 <-- editieren / zitieren --> Unities abgeben:         
Hi Wolfi, danke für deine Antwort. vielleicht hätte ich das noch erwähnen sollen, aber es handelt sich um Flächen die in einem CatPart gespeichert sind und diese müssen auch dort drinnen bleiben. Eine Fokussierung über ein anderes CatPart würde nicht funktionieren, da 1. alles in dem CatPart bleiben muss und 2. es sehr viele verschiedene Views geben wird und es dann unendlich viele CatParts geben müsste. Gruß Flo Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
wolfi_z Moderator Konstrukteur
      

 Beiträge: 2512 Registriert: 04.12.2004 CATIA V5 in der aktuellen Umgebung des jeweiligem OEM ;-) NX 2312 Daimler
|
erstellt am: 28. Mai. 2025 17:10 <-- editieren / zitieren --> Unities abgeben:          Nur für Flo-p1
Hmm. Also (1) die Flaechen bleiben ja in dem CATPart. Die Flaechen in den zusaetzlichen CATParts sind wie ja eingangs gepostet nur abhaengige Kopien davon. Ja gut, wenn es dann hinterher (2) sehr viele Parts gibt, dann ist das halt so. Aber so kannst Du es regeln mit Basis-CATIA-Funktionalitaet. LG ... Wolfi Edit: Ansonsten kann man Views auch sperren nachdem man sie upgedated hat mit den relevanten Daten im Show. Das ist in der Wirkung wie isolieren (kein Update mehr), kann im Gegensatz dazu aber wieder rueckgaengig gemacht werden. ------------------ NX neun minus CATIA fuenf ergibt Hartz IV  Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bgrittmann Moderator Konstrukteur
       
 Beiträge: 12074 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 28. Mai. 2025 17:18 <-- editieren / zitieren --> Unities abgeben:          Nur für Flo-p1
Servus Du solltest über: .GenerativeLinks.AddLink der Ansicht die anzuzeigenden GeoSets direkt der Ansicht zuweisen können (selektieren ist nicht erforderlich bzw geht vermutlich auch nicht) Das GenerativeBehavior.Document kann dann entfallen. Beispiel (als CATScript): Code: Sub CATMain()Dim oDrawingDoc As Document Dim oDrwSheet As DrawingSheet Dim oDrwView As DrawingView Dim oBody1 as Body DIm oBody2 as Body Dim oPartDoc as PartDocument Dim oDrwViewGenerativeBehavior As DrawingViewGenerativeBehavior Dim oDrwViewGenerativLinks As DrawingViewGenerativeLinks ' get bodies Set oPartDoc = CATIA.ActiveDocument Set oBody1 = oPartDoc.Part.Bodies.Item(3) Set oBody2 = oPartDoc.Part.Bodies.Item(4) ' create drawing Set oDrawingDoc = CATIA.Documents.Add("Drawing") Set oDrwSheet = oDrawingDoc.Sheets.Item(1) oDrwSheet.PaperSize = catPaperA3 oDrwSheet.Scale2 = 1.000000 oDrwSheet.Orientation = catPaperLandscape ' create view Set oDrwView = oDrwSheet.Views.Add("AutomaticNaming") Set oDrwViewGenerativLinks = oDrwView.GenerativeLinks Set oDrwViewGenerativeBehavior = oDrwView.GenerativeBehavior oDrwViewGenerativeBehavior.DefineFrontView 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 1.000000 ' add bodies to view oDrwViewGenerativLinks.AddLink oBody1 oDrwViewGenerativLinks.AddLink oBody2 oDrwViewGenerativeBehavior.Update oDrwView.Activate End Sub
Gruß Bernd ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Flo-p1 Mitglied Student
 Beiträge: 9 Registriert: 29.04.2025
|
erstellt am: 02. Jun. 2025 08:17 <-- editieren / zitieren --> Unities abgeben:         
|
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
 |