| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für SOLIDWORKS |
| |
| PLM TechnologieForum Bamberg |
Autor
|
Thema: Bemaßungstext per Makro (1677 mal gelesen)
|
Klopfer195 Mitglied Konstrukteur
Beiträge: 27 Registriert: 05.02.2019 SolidWorks 2019 SP5
|
erstellt am: 21. Okt. 2019 07:58 <-- editieren / zitieren --> Unities abgeben:
Guten Morgen an alle, ich bräuchte mal wieder eure Hilfe bezüglich eines Makros. Ich hätte gerne ein Makro geschrieben das mir in eine Bemaßung auf der Zeichnung den Bemaßungstext ausfüllt. Bekomme das auch über EditDimensionProperties2 hin, aber bei diesem Befehl muss ich ja Toleranz usw. auch neu festlegen. Hier würde ich aber gerne alles so lassen und nur noch etwas dem Text hinzufügen ohne diesen komplett zu ändern. Also als Beispiel hinter dem "<DIM>" noch ein "<C#-1>" hinzu. Vielen dank schonmal Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Winni-two Mitglied Ing. Maschb.
Beiträge: 154 Registriert: 12.03.2010 SW 2021 SP5 Intel Xenon W2135 @3.7GHz Win 10 64 bit Graka: Nvidia Quadro P4000 32 GB Ram
|
erstellt am: 21. Okt. 2019 08:02 <-- editieren / zitieren --> Unities abgeben: Nur für Klopfer195
|
Klopfer195 Mitglied Konstrukteur
Beiträge: 27 Registriert: 05.02.2019 SolidWorks 2019 SP5
|
erstellt am: 21. Okt. 2019 09:05 <-- editieren / zitieren --> Unities abgeben:
Super vielen Dank. Über das Beispiel in der API Hilfe hab ich es zum laufen gebracht, weiß zwar nicht genau für was folgender Abschnitt gut ist, selCount = swSelMgr.GetSelectedObjectCount For i = 1 To selCount selType = swSelMgr.GetSelectedObjectType2(i) If selType = swSelDIMENSIONS Then Set swDisplayDim = swSelMgr.GetSelectedObject6(i, -1) swDisplayDim.SetText swDimensionTextSuffix, "<C#-1>" End If Next i aber ohne funktioniert es irgendwie nicht. Leider überschreibt es immernoch den Suffix Text und fügt nicht nur einen neuen hinzu. Könnte das Problem mit swDimensionTextCalloutAbove umgehen, aber vielleicht hat von euch jemand noch einen besseren Vorschlag. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Winni-two Mitglied Ing. Maschb.
Beiträge: 154 Registriert: 12.03.2010 SW 2021 SP5 Intel Xenon W2135 @3.7GHz Win 10 64 bit Graka: Nvidia Quadro P4000 32 GB Ram
|
erstellt am: 21. Okt. 2019 09:24 <-- editieren / zitieren --> Unities abgeben: Nur für Klopfer195
|
Christian_W Ehrenmitglied V.I.P. h.c. Konstrukteur (Dipl-Ing)
Beiträge: 3189 Registriert: 04.04.2001 CSWP 12/2015<P>SWX2021sp5 Win10/11 (SWX2016, SWX2012) proAlpha6.2e00/calinkV9 (Tactonworks) (Medusa7, NesCAD2010, solidEdge19)
|
erstellt am: 21. Okt. 2019 09:52 <-- editieren / zitieren --> Unities abgeben: Nur für Klopfer195
Zitat: … weiß zwar nicht genau für was folgender Abschnitt gut ist, … aber ohne funktioniert es irgendwie nicht.Leider überschreibt es immernoch den Suffix Text und fügt nicht nur einen neuen hinzu …
Grob: im Beispiel werden a) zuerst Maße angelegt, b) diese in Selection Manager genommen, c) und dort per Schleife verändert. du bist bei c) und ohne den kann es auch nicht tun. Detail: Mit SetText überschreibst du natürlich, sonst müsste es AddText heißen. Ich glaube "AddDisplayText" macht aber noch etwas anderes. würde deshalb experimentieren mit
Code: sNewSuffix = swDisplayDim.GetText(swDimensionTextSuffix) & "C#-1" swDisplayDim.SetText swDimensionTextSuffix, sNewSuffix
Gruß, Christian Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Klopfer195 Mitglied Konstrukteur
Beiträge: 27 Registriert: 05.02.2019 SolidWorks 2019 SP5
|
erstellt am: 21. Okt. 2019 12:13 <-- editieren / zitieren --> Unities abgeben:
Danke für die grobe Erklärung, aber was davon brauch ich für den Befehl unbedingt? Oder anders gefragt, wieso Funktioniert er alleinstehend nicht in einem Code? Dim swApp As SldWorks.SldWorks Dim Part As SldWorks.DisplayDimension Dim boolstatus As Boolean Dim longstatus As Long, longwarnings As Long Sub main() Set swApp = Application.SldWorks Set Part = swApp.ActiveDoc Part.SetText swDimensionTextSuffix, "AB"
End Sub
Das Zusammenfügen von dem alten und dem neuen Suffix hat super geklappt, hatte Anfangs nur vergessen den Wert für sNewSuffix zu Löschen am Anfang des Makros. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Christian_W Ehrenmitglied V.I.P. h.c. Konstrukteur (Dipl-Ing)
Beiträge: 3189 Registriert: 04.04.2001 CSWP 12/2015<P>SWX2021sp5 Win10/11 (SWX2016, SWX2012) proAlpha6.2e00/calinkV9 (Tactonworks) (Medusa7, NesCAD2010, solidEdge19)
|
erstellt am: 21. Okt. 2019 12:45 <-- editieren / zitieren --> Unities abgeben: Nur für Klopfer195
Dein Objekt "Part" ist das aktive Dokument - in dem Fall die Zeichnung. Die kennt nicht den Befehl setText Dimensiontexte Auf der Zeichnung müssen erstmal die Bemaßungsobjekte gefunden werden. Das passiert in dem Beispiel über den "selektionmanager". Dann werden alle gefundenen Objekte durchgegangen "set swDisplayDim = …" und bei denen funktioniert dann die Textänderung. Warum du den Wert löschen musst versteh ich nicht ganz, deklarieren mit dim müsste doch reichen? alternativ kann man mit 2 Schleifen arbeiten. - im Blatt durch alle views durchlaufen - in den views durch alle Beschriftungen gehen. - dann musst du prüfen, ob die Bemerkung schon drin ist, oder nicht ... Gruß, Christian
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Klopfer195 Mitglied Konstrukteur
Beiträge: 27 Registriert: 05.02.2019 SolidWorks 2019 SP5
|
erstellt am: 22. Okt. 2019 07:15 <-- editieren / zitieren --> Unities abgeben:
|