Autor
|
Thema: Zeichnungsrahmen 2D-Komponenten zerlegen (1366 mal gelesen)
|
mou551 Mitglied
Beiträge: 20 Registriert: 25.09.2015
|
erstellt am: 16. Apr. 2019 13:52 <-- editieren / zitieren --> Unities abgeben:
Moin, ich habe ein kleines Problem und bekomme es nicht gelöst. Ich möchte in meiner Zeichnung quasi den Rahmen selektieren und dann Rechtsklick auf den Rahmen und dann Objekte -> 2D Komponente zerlegen (siehe Bild), und das will ich natürlich automatisieren. Über Makro aufzeichnen bekomme ich nicht den Befehl. https://ww3.cad.de/foren/ubb/Forum137/HTML/002257.shtml Habe es dann über diesen Thread versucht, klappt aber nicht so ganz: Sub CATMain() Dim oDRWDoc As DrawingDocument Dim oSheet As DrawingSheet Dim oView As DrawingView Dim oDRWComp As DrawingComponent Set oDRWDoc = CATIA.ActiveDocument 'Schleife für alle Sheets For i = 1 To oDRWDoc.Sheets.Count Set oSheet = oDRWDoc.Sheets.Item(i) 'Ist das Sheet kein Detail-Sheet? If Not oSheet.IsDetail Then 'Schleife für alle Views im Sheet For j = 1 To oSheet.Views.Count Set oView = oSheet.Views.Item(j) 'Schleife für alle 2D-Komponenten der View For k = 1 To oView.Components.Count Set oDRWComp = oView.Components.Item(k) '2D-Komponente zerlegen oDRWComp.Explode Next k Next j End If Next i End Sub Der Befehl: "Explode" sollte denke ich eigentlich die Komponente zerlegen, allerdings zerlegt er sie nicht und mit der Hilfe komme ich auch nicht weiter. Hat jemand eine Lösung parat oder zumindest, ob ich mit der Idee in die richtige Richtung gehe Grüße 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: 16. Apr. 2019 18:53 <-- editieren / zitieren --> Unities abgeben: Nur für mou551
Servus Der Code sieht doch vielversprechend aus. In meinem Kurztest hat das Explode geklappt, nur scheinbar wird eine Kopie der Komponente erzeugt. Versuch mal diese nach dem Explode zu entfernen (oView.Components.Item(k).Remove) ggf dazu die Schleife von hinten nach vorne abarbeiten (oder extra Schleife nach dem Explode). Für dich sollte reichen wenn du nur in der 2. Ansicht des Blattes (Background) die Komponenten zerlegst bzw entfernst. Gruß Bernd ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Randle Mitglied CAD/PLM Consultant
Beiträge: 695 Registriert: 12.04.2003 Win10 x64 CATIA V5 R18, R19, R21, R27-29
|
erstellt am: 17. Apr. 2019 08:25 <-- editieren / zitieren --> Unities abgeben: Nur für mou551
Hallo, versuche es mal mit Code:
oDRWDoc.Selection.Clear oDRWComp.ExplodeAndSelect oDRWDoc.Selection.Clear oDRWDoc.Selection.Add oDRWComp oDRWDoc.Selection.Delete
Gruß Randle
------------------ Wer für nichts steht, fällt für alles! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
mou551 Mitglied
Beiträge: 20 Registriert: 25.09.2015
|
erstellt am: 17. Apr. 2019 09:56 <-- editieren / zitieren --> Unities abgeben:
|
bgrittmann Moderator Konstrukteur
Beiträge: 11780 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 17. Apr. 2019 10:00 <-- editieren / zitieren --> Unities abgeben: Nur für mou551
|
mou551 Mitglied
Beiträge: 20 Registriert: 25.09.2015
|
erstellt am: 17. Apr. 2019 10:10 <-- editieren / zitieren --> Unities abgeben:
Hallo Randle, danke für deine Antwort, ich habe deinen Code mal eingepflegt. Allerdings generiere ich bei den ersten drei mal diesen Fehler (siehe Bild) und beim vierten Mal läuft es durch Sub loeschenReferenz_3() Dim oDRWDoc As DrawingDocument Dim oSheet As DrawingSheet Dim oView As DrawingView Dim oDRWComp As drawingComponent Set oDRWDoc = CATIA.ActiveDocument 'Schleife für alle Sheets For i = 1 To oDRWDoc.Sheets.Count Set oSheet = oDRWDoc.Sheets.Item(i) 'Ist das Sheet kein Detail-Sheet? If Not oSheet.IsDetail Then 'Schleife für alle Views im Sheet For j = 1 To oSheet.Views.Count Set oView = oSheet.Views.Item(j) 'Schleife für alle 2D-Komponenten der View For k = 1 To oView.Components.Count Set oDRWComp = oView.Components.Item(k) '2D-Komponente zerlegen 'oDRWComp.Explode 'Lösung Randle: oDRWDoc.Selection.Clear oDRWComp.ExplodeAndSelect oDRWDoc.Selection.Clear oDRWDoc.Selection.Add oDRWComp oDRWDoc.Selection.Delete Next k Next j End If Next i End Sub
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: 17. Apr. 2019 10:16 <-- editieren / zitieren --> Unities abgeben: Nur für mou551
Servus Tritt der Fehler nur bei einer bestimmten View oder Componente auf? Überlege dir wann du was löschst. Wenn du das erste Element löschst, wandern alle nachfolgenden eins nach unten. Deshalb würde ich es zB mal so probieren: Code: For k = oView.Components.Count to 1 Step -1 Set oDRWComp = oView.Components.Item(k) oDRWComp.Explode oView.Components.Remove(k) Next
Willst du wirklich alle Views bearbeiten oder nur den Background? Gruß Bernd ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
mou551 Mitglied
Beiträge: 20 Registriert: 25.09.2015
|
erstellt am: 17. Apr. 2019 10:22 <-- editieren / zitieren --> Unities abgeben:
|
Randle Mitglied CAD/PLM Consultant
Beiträge: 695 Registriert: 12.04.2003 Win10 x64 CATIA V5 R18, R19, R21, R27-29
|
erstellt am: 17. Apr. 2019 11:29 <-- editieren / zitieren --> Unities abgeben: Nur für mou551
|