| | | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für SOLIDWORKS | | | | Konstruktionsleiter Forum, Veranstaltung am 17.10.2024 |
Autor
|
Thema: Komponente löschen mittels ? (2482 mal gelesen)
|
MrSoul4470 Mitglied Konstrukteur
Beiträge: 19 Registriert: 28.09.2010 SolidWorks 2008 SP5
|
erstellt am: 01. Mrz. 2011 16:37 <-- editieren / zitieren --> Unities abgeben:
Hallo an alle, ich habe folgendes Problem. Ich möchte aus Modellen automatisch alle unterdrückten Komponenten rauslöschen. Weil <Set ModelDoc2 = Component.GetModelDoc> bei unterdrückten Komponenten NULL zurückgibt, hebe ich zuerst die Unterdrückung mit <Component.SetSuppression2 swComponentResolved> auf. Das funktioniert auch wunderbar. Anschließend hole ich mit <Set ModelDoc2 = Component.GetModelDoc> das Modeldoc aus der Komponente und möchte dieses dann mit <ModelDoc2.EditDelete> löschen. Nur tut es das nicht. Die Komponente bleibt, egal was ich versuche. Mein Code dazu sieht so aus: If Component.IsSuppressed Then Component.SetSuppression2 swComponentResolved 'Unterdrückung aufheben Set ModelDoc2 = Component.GetModelDoc 'ModelDoc der unterdrückten Komponente holen If Not ModelDoc2 Is Nothing Then ModelDoc2.EditDelete 'Komponente löschen End If End If Kann mir jemand helfen? ich steh auf dem Schlauch. Weiß nicht woran es liegt. Mache ich einen Denkfehler? Viele Grüße Christian ------------------ PEC Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Torsten Niemeier Ehrenmitglied V.I.P. h.c. Maschinenbau Ingenieur
Beiträge: 3703 Registriert: 21.06.2001 "ZUSE I.36", 8 BIT, 32 Lämpchen, Service-Ölkännchen "ESSO-Super", Software: AO auf Kuhlmann-Parallelogramm-Plattform ** CSWP 04/2011 ** ** CSWE 08/2011 **
|
erstellt am: 01. Mrz. 2011 22:25 <-- editieren / zitieren --> Unities abgeben: Nur für MrSoul4470
Hallo Christian, ohne Test: If Component.IsSuppressed Then Component.select3 (false) baugruppenname.editdelete <- für "baugruppenname" die zugewiesene Variable der Baugruppe benutzen End If Gruß, Torsten
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
StefanBerlitz Guter-Geist-Moderator IT Admin (CAx)
Beiträge: 8756 Registriert: 02.03.2000 SunZu sagt: Analysiere die Vorteile, die du aus meinem Ratschlag ziehst. Dann gliedere deine Kräfte entsprechend und mache dir außergewöhnliche Taktiken zunutze.
|
erstellt am: 02. Mrz. 2011 08:13 <-- editieren / zitieren --> Unities abgeben: Nur für MrSoul4470
Hallo Christian, so wie ich deinen Code lese versuchst du, die Modelldateien der unterdrückten Dokumente zu löschen, nicht die unterdrückten Komponenten aus der Baugruppe zu entfernen. Du überprüfst zuerst, ob die Komponente unterdrückt ist, so weit so gut. Aber dann hebst du die Unterdrückung auf, dadurch wird das Modell in den Arbeitsspeicher geladen und ist somit für das Löschen im Betriebssystem gesperrt, weil ja im Zugriff. Dann versuchst du in diesem Modell (der Pointer steht auf ModelDoc2, das ist ja das Object deiner Komponente, nicht die Baugruppe) die selektierten Objekte zu löschen, glücklicherweise ist da nix selektiert, sonst würdest du dir deine Komponentendatei zerbasteln! So wie Torsten vorgeschöagen hat sollte es dann gehen: wenn du einen unterdrückte Komponente gefunden hast diese selektieren und dann in der Baugruppe die Selektion mit EditDelete löschen. Dadurch bleibt die Modelldatei selbst unangetastet, nur in der Baugruppe wird es rausgeschmissen. Ciao, Stefan ------------------ Inoffizielle deutsche SolidWorks Hilfeseite http://solidworks.cad.de Stefans SolidWorks Blog Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
MrSoul4470 Mitglied Konstrukteur
Beiträge: 19 Registriert: 28.09.2010 SolidWorks 2008 SP5
|
erstellt am: 02. Mrz. 2011 13:31 <-- editieren / zitieren --> Unities abgeben:
Hallo Stefan, hallo Torsten, danke für Eure wertvollen Tipps... So funktioniert es jetzt schon mal: If Component.IsSuppressed Then Component.SetSuppression2 swComponentResolved 'Unterdrückung aufheben Set ModelDoc = Component.GetModelDoc 'ModelDoc der Komponente holen boolstatus = Component.Select3(False, ModelDoc) Set SelMgr = Part.SelectionManager Part.EditDelete End If Jetzt habe ich "nur" noch das Problem, dass ich jede Baugruppe öffnen muss, die unterdrückte Teile/Baugruppen enthält, weil ich direkt nur Komponenten aus dem obersten Level der Struktur rauslöschen kann und andernfalls immer die Baugruppe, die die unterdrückten Komponenten enthält mit rausfliegt. Mal schauen. Wenn's weiterhin hakt, dann melde ich mich nochmal. Auf jeden Fall vielen Dank! Christian ------------------ PEC Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
MrSoul4470 Mitglied Konstrukteur
Beiträge: 19 Registriert: 28.09.2010 SolidWorks 2008 SP5
|
erstellt am: 02. Mrz. 2011 15:27 <-- editieren / zitieren --> Unities abgeben:
So... mein Makro geht jetzt durch alle Teile / Baugruppen eines beliebigen Modells und löscht mir die unterdrückten Teile / Baugruppen sauber raus. Und an der Sache mit dem Markieren wäre ich fast gescheitert. Manchmal ist es zum Verzweifeln. Danke nochmal! Christian ------------------ Christian Pelg, Regensburg Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
|