| | | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für SOLIDWORKS | | | | 3DEXPERIENCE Conference, eine Veranstaltung am 16.10.2024
|
Autor
|
Thema: API: Zeichnungsinhalte löschen (965 / mal gelesen)
|
S Anja S Mitglied
Beiträge: 8 Registriert: 14.06.2016 SolidWorks 2013 SP5.0
|
erstellt am: 25. Jul. 2016 12:19 <-- editieren / zitieren --> Unities abgeben:
Hallo zusammen, ich möchte auf Zeichnungen in einem bestimmten Bereich alles löschen was sich dort befindet - das können Blöcke oder auch Skizzenelemente sein. Hintergrund des Ganzen ist, das ich alte Angaben zu Oberflächenbeschaffenheiten von unseren Zeichnungen löschen möchte um per Makro aktuelle Angaben hin zu schreiben. Das hinschreiben per Makro funktioniert auch schon, zur Zeit muss ich die Altlasten jedoch noch per Hand löschen. Das müsste doch auch per Makro gehen?!? Manuell geht das so einfach, mit der linken Maustaste einen Bereich selektieren, "Entf" und fertig Der Makrorekorder spuckt mir folgenden Code aus:
Code: boolstatus = Part.Extension.SketchBoxSelect("0.245", "0.055", "0.000000", "0.411", "0.068", "0.000000") Part.EditDelete
Leider passiert da absolut gar nichts Kann mir jemand weiter helfen?? Vielen Dank und viele Grüße Anja
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bk.sc Ehrenmitglied V.I.P. h.c. Konstrukteur Sondermaschinenbau
Beiträge: 2795 Registriert: 18.07.2012 -Solid Works 2019 SP5 -Pro Engineer WF 3
|
erstellt am: 25. Jul. 2016 13:02 <-- editieren / zitieren --> Unities abgeben: Nur für S Anja S
Hallo Anja, hast du vorher auch die Skizze aktiviert? Weil auch eine Zeichnung hat eine "Skizze" die vorher aktiviert sein muss. Hier mal mein auf die schnelle getippselter Code dazu, ob er hier auch Blöcke u.ä. berücksichtigt hab ich nicht getestet. Code: Option ExplicitDim swApp As SldWorks.SldWorks Dim swModelDoc As ModelDoc2 Dim swModelDocExt As ModelDocExtension Dim swDrawingDoc As DrawingDoc Dim swView As View Dim swSketch As Sketch Dim boolstatus As Boolean Sub main() Set swApp = Application.SldWorks Set swModelDoc = swApp.ActiveDoc Set swModelDocExt = swModelDoc.Extension Set swDrawingDoc = swModelDoc Set swView = swDrawingDoc.GetFirstView Set swSketch = swView.GetSketch boolstatus = swModelDocExt.SketchBoxSelect(0.245, 0.055, 0, 0.411, 0.068, 0) swModelDoc.EditDelete End Sub
[EDIT] Eben schnell gestestet, Blöcke werden hier beim löschen ignoriert, was ich mir fast schon dachte. Gruß Bernd ------------------ --- Man muß nicht alles wissen, man muß nur wissen wo es steht --- Staatlich anerkannte Deutschniete [Diese Nachricht wurde von bk.sc am 25. Jul. 2016 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
S Anja S Mitglied
Beiträge: 8 Registriert: 14.06.2016 SolidWorks 2013 SP5.0
|
erstellt am: 25. Jul. 2016 13:48 <-- editieren / zitieren --> Unities abgeben:
Hallo Bernd, danke für die schnelle Antwort! Nein, ich hatte keine Skizze aktiviert - mit deinem Code funktioniert das, wie gesagt zumindest für Skizzenelemente, super! Ist das mit der "FirstView" stabil? In dem aktuellen Beispiel hat es funktioniert... Ich kann die Skizze bei mir auch nicht sehen - irgendwie ist mir diese Skizze noch etwas unsympatisch Viele Grüße Anja Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bk.sc Ehrenmitglied V.I.P. h.c. Konstrukteur Sondermaschinenbau
Beiträge: 2795 Registriert: 18.07.2012 -Solid Works 2019 SP5 -Pro Engineer WF 3
|
erstellt am: 25. Jul. 2016 14:38 <-- editieren / zitieren --> Unities abgeben: Nur für S Anja S
Hallo Anja, meines wissens ist der FirstView immer das Zeichnungsblatt, der Zweite dann das Shett und dannach kommen erst die eigentlichen Ansichten. Du könntest zur Sicherheit natürlich noch vor dem Löschen eine Abfragen einbauen um welchen Typ View es sich handelt, hier must du dann natürlich eine Schleife durch alle Views einbauen. Code:
Do While Not swView Is NothingIf swView.Type = swDrawingSheet Then boolstatus = swModelDocExt.SketchBoxSelect(0, 0, 0, 0.411, 0.068, 0) swModelDoc.EditDelete Exit Do Else set swView = swView.GetNextView End If Loop
Gruß Bernd [EDIT]Genau genommen ist es dem Programm aber egal da alle Skizzenelemente auf der selben Skizze liegen auch wenn du Sie an eine Ansichten gebunden hast. ------------------ --- Man muß nicht alles wissen, man muß nur wissen wo es steht --- Staatlich anerkannte Deutschniete [Diese Nachricht wurde von bk.sc am 25. Jul. 2016 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
S Anja S Mitglied
Beiträge: 8 Registriert: 14.06.2016 SolidWorks 2013 SP5.0
|
erstellt am: 25. Jul. 2016 14:44 <-- editieren / zitieren --> Unities abgeben:
|
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
|