| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für SOLIDWORKS |
| |
| Performance steigern von großen Baugruppen und Zeichnungen mit SOLIDWORKS 2024 |
Autor
|
Thema: Bemaßungsfavoriten (1857 mal gelesen)
|
Stefan65 Mitglied Werkzeugkonstrukteur
Beiträge: 48 Registriert: 14.02.2014 Dell Precision 5820 Windows 10 Enterprise 64bit Intel Xeon W-2123 @ 3.60GHz 16GB RAM NVIDIA Quadro P2000 SolidWorks 2018 SP5 DBWorks-R17 SP2.5
|
erstellt am: 09. Jul. 2015 17:45 <-- editieren / zitieren --> Unities abgeben:
Hallo Zusammen, gibt es eine Möglichkeit die Bemaßungsfavoriten ( Stil ) über ein Makro zu löschen und danach neue hinzu zu fügen? Leider ist es mir nicht gelungen ein Makro aufzuzeichnen und so an die API Befehle heranzukommen. Da ich beim Rahmentausch ja diese Bemaßungsfavoriten ( Stil ) nicht mit austauschen kann suche ich eine Möglichkeit dieses per Makro zu realisieren um auch alte Rahmen auf den neusten Stand zu bringen. Gruß Stefan Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bk.sc Ehrenmitglied V.I.P. h.c. Konstrukteur Sondermaschinenbau
Beiträge: 2776 Registriert: 18.07.2012 -Solid Works 2019 SP5 -Pro Engineer WF 3
|
erstellt am: 10. Jul. 2015 06:37 <-- editieren / zitieren --> Unities abgeben: Nur für Stefan65
Hallo Stefan, wenn ich das richtig aus der API-Hilfe rausgelesen habe geht das nur über das allgemeine iAnnotation (Beschriftung) Objekt in deinem Fall muß ein Bemassung markierte/selectierte sein bevor du die unten stehenden Methoden verwenden kannst. LoadStyle Method (IAnnotation) DeleteStyle Method (IAnnotation) Hier mal ein Beispielcode: Code: Option ExplicitDim swApp As SldWorks.SldWorks Dim swDraw As SldWorks.ModelDoc2 Dim swView As SldWorks.View Dim swAnno As SldWorks.Annotation Dim boolstatus As Boolean
Sub main() Set swApp = Application.SldWorks Set swDraw = swApp.ActiveDoc Set swView = swDraw.GetFirstView Do Until swView Is Nothing If swView.Type = swDrawingStandardView Or swView.Type = swDrawingNamedView Then Exit Do Else Set swView = swView.GetNextView End If Loop 'Debug.Print swView.GetName2 Set swAnno = swView.GetFirstAnnotation3() Do Until swAnno Is Nothing If swAnno.GetType = swDisplayDimension Then Exit Do End If Set swAnno = swAnno.GetNext3() Loop 'Debug.Print swAnno.GetType If swAnno Is Nothing Then Msgbox "Keine Ansicht oder Bemassung gefunden", vbInformation Else boolstatus = swAnno.LoadStyle("SPEICHERPFAD_DES_STILES") boolstatus = swAnno.DeleteStyle("NAMEN_DES_STILES") End If End Sub
Gruß Bernd ------------------ --- Man muß nicht alles wissen, man muß nur wissen wo es steht --- Staatlich anerkannte Deutschniete [EDIT] Beispielcode ergänzt. [/EDIT] [Diese Nachricht wurde von bk.sc am 10. Jul. 2015 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Stefan65 Mitglied Werkzeugkonstrukteur
Beiträge: 48 Registriert: 14.02.2014 Dell Precision 5820 Windows 10 Enterprise 64bit Intel Xeon W-2123 @ 3.60GHz 16GB RAM NVIDIA Quadro P2000 SolidWorks 2018 SP5 DBWorks-R17 SP2.5
|
erstellt am: 10. Jul. 2015 17:49 <-- editieren / zitieren --> Unities abgeben:
Hallo Bernd, recht herzlichen Dank für deinen Beispielcode und deine Hilfe. Es ist genau das, was ich schon lange gesucht habe und der Code funktioniert hervorragend. Ich habe das Makro gleich auf unsere Bedürfnisse angepasst. Nochmals vielen Dank!!! Gruß Stefan Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bk.sc Ehrenmitglied V.I.P. h.c. Konstrukteur Sondermaschinenbau
Beiträge: 2776 Registriert: 18.07.2012 -Solid Works 2019 SP5 -Pro Engineer WF 3
|
erstellt am: 10. Jul. 2015 21:31 <-- editieren / zitieren --> Unities abgeben: Nur für Stefan65
Hallo Stefan, kein Problem, hatte mich selber gereitzt das mal als Übung zu machen auch wenn ich noch keine Verwendung dafür habe . Mit ein bisschen SWX auf Englisch umgestellt, Macro Recorder und viel API / VBA Hilfe war das in ca. 2h zu realisieren. Mit mehr Zeit und Muse könnten die Schleifen vielleicht besser aussehen und verschachtelt sein aber da fehlen mir noch paar Übungsstunden was Schleifen angeht . Gruß Bernd ------------------ --- Man muß nicht alles wissen, man muß nur wissen wo es steht --- Staatlich anerkannte Deutschniete Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Stefan65 Mitglied Werkzeugkonstrukteur
Beiträge: 48 Registriert: 14.02.2014 Dell Precision 5820 Windows 10 Enterprise 64bit Intel Xeon W-2123 @ 3.60GHz 16GB RAM NVIDIA Quadro P2000 SolidWorks 2018 SP5 DBWorks-R17 SP2.5
|
erstellt am: 11. Jul. 2015 18:13 <-- editieren / zitieren --> Unities abgeben:
Hallo Bernd, ich bin auch ein ziemlicher Laie was Programmierung angeht und ich bin froh wenn das Makro seinen Dienst verrichtet auch wenn es nicht so professionell aufgebaut ist. Ich habe es soweit hinbekommen das wenn die erste Ansicht keine Bemaßung enthält solange in den Ansichten gesucht wird bis eine Bemaßung in den nächsten Ansichten gefunden wird. Alles läuft soweit ganz gut nur bei manchen Zeichnungen wird die Toleranz an den Maß durch den zuletzt geladenen Stiel ersetzt und teilweise kommt auch noch ein Durchmesser dazu, wie bei dem Maß 5 +0,5 links in den beiden angehängten Zeichnungen. Ich bin da echt ratlos was man dagegen machen kann. Anbei noch der von mir veränderte Code Gruß Stefan Option Explicit
Dim swApp As SldWorks.SldWorks Dim swDraw As SldWorks.ModelDoc2 Dim swView As SldWorks.View Dim swAnno As SldWorks.Annotation Dim swModel As SldWorks.ModelDoc2 Dim boolstatus As Boolean Sub main() Set swApp = Application.SldWorks Set swModel = swApp.ActiveDoc Set swDraw = swApp.ActiveDoc If swModel Is Nothing Then MsgBox "Kein Dokument offen", vbSystemModal, "Fehlermeldung" Exit Sub End If Set swView = swDraw.GetFirstView Do Until swView Is Nothing Set swView = swView.GetNextView 'Debug.Print swView.GetName2 'MsgBox swView.GetName2 If swView Is Nothing Then MsgBox "Keine Ansicht mit Bemassung gefunden", vbInformation Exit Sub End If Set swAnno = swView.GetFirstAnnotation3() Do Until swAnno Is Nothing If swAnno.GetType = swDisplayDimension Then Exit Do End If Set swAnno = swAnno.GetNext3() Loop 'Debug.Print swAnno.GetType If swAnno Is Nothing Then Else '----vorhandene Bemaßungsfavoriten löschen boolstatus = swAnno.DeleteStyle("NAMEN_DES_STILES") '----neue Bemaßungsfavoriten hinzu fügen boolstatus = swAnno.LoadStyle("SPEICHERPFAD_DES_STILES") Set swApp = Nothing Set swModel = Nothing Set swDraw = Nothing Set swView = Nothing MsgBox "Die Bemaßungsfavoriten wurden aktualisiert. Die Zeichnung muss neu gespeichert werden!!!!!", vbInformation Exit Sub End If Loop End Sub
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bk.sc Ehrenmitglied V.I.P. h.c. Konstrukteur Sondermaschinenbau
Beiträge: 2776 Registriert: 18.07.2012 -Solid Works 2019 SP5 -Pro Engineer WF 3
|
erstellt am: 13. Jul. 2015 06:32 <-- editieren / zitieren --> Unities abgeben: Nur für Stefan65
Hallo Stefan, kann es sein dass im geladenen Still das Durchmesserzeichen bzw. eine Toleranz mitgespeichert sind, weil diese informationen sind ja im Still auch gespeichert. Bei mir konnte ich so ein verhalten nicht reproduzieren, SWX hat immer nur den Stile ersetzt wie er sollte. Gruß Bernd ------------------ --- Man muß nicht alles wissen, man muß nur wissen wo es steht --- Staatlich anerkannte Deutschniete Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Stefan65 Mitglied Werkzeugkonstrukteur
Beiträge: 48 Registriert: 14.02.2014 Dell Precision 5820 Windows 10 Enterprise 64bit Intel Xeon W-2123 @ 3.60GHz 16GB RAM NVIDIA Quadro P2000 SolidWorks 2018 SP5 DBWorks-R17 SP2.5
|
erstellt am: 14. Jul. 2015 18:24 <-- editieren / zitieren --> Unities abgeben:
Hallo Bernd, ja, in den Stielen sind Toleranzen mit gespeichert aber kein Durchmesserzeichen. Das Phänomen mit dem Durchmesserzeichen tritt auch nur bei normaler Bemaßung auf und nicht bei Ordinatenbemaßung. Ich werde das bei Gelegenheit mal unter Solidworks 2015 ausprobieren um zu schauen ob dort auch das Phänomen mit dem Durchmesserzeichen auf tritt. Wenn ich das unter Solidworks 2015 getestet habe, melde ich mich noch mal. Nochmal herzlichen Dank für deine Mühe Gruß Stefan Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |