|  |  | 
|  | Gut zu wissen: Hilfreiche Tipps und Tricks aus  der Praxis prägnant, und auf den Punkt gebracht für SOLIDWORKS | 
|  |  | 
|  | Konstrukteur/-in für SolidWorks , ein Kurs (bis zu 100% förderbar mit Bildungsgutschein) 
 | 
| Autor | Thema:  Komponente löschen mittels ? (2940 mal gelesen) | 
 | MrSoul4470 Mitglied
 Konstrukteur
 
  
 
      Beiträge: 19Registriert: 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 ThenComponent.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üßeChristian
 ------------------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: 3743Registriert: 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 ThenComponent.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: 8756Registriert: 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: 19Registriert: 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 ThenComponent.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: 19Registriert: 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 |