Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  SolidWorks
  Löschen aller Bemaßungs-Stile einer Zeichnung durch VBA Makro

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
  
Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für SOLIDWORKS
  
Auszubildende der HERMLE AG bei SolidCAM, eine Pressemitteilung
Autor Thema:  Löschen aller Bemaßungs-Stile einer Zeichnung durch VBA Makro (174 / mal gelesen)
Solidwörker
Mitglied
Konstrukteur

Sehen Sie sich das Profil von Solidwörker an!   Senden Sie eine Private Message an Solidwörker  Schreiben Sie einen Gästebucheintrag für Solidwörker

Beiträge: 7
Registriert: 20.09.2012

SWX 2019 SP5 (noch)
Win10 64bit
SolidWorks PDM
HP Z4
Intel Xeon W-2225
32GB RAM
Nvidia Quadro RTX4000

erstellt am: 15. Nov. 2024 13:51    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo zusammen,
bei uns sind sehr viele alte Zeichnungen im System und bei kleinen Änderungen ist es nervig, wenn die neuen Stile für Bemaßung, Oberflächenbeschaffenheit oder Geometrische Toleranzen fehlen.
Ein Programm zum Einfügen der neuen Stile wurde bereits erfolgreich erstellt. Mit dem Programm können auch alte Stile gelöscht werden, jedoch muss man wissen, wie diese heißen.
Beim „Benutzen“ einer vorhandenen Bemaßung zum Einfügen der Stile wird die Bemaßung mit dem Stil modifiziert, was nicht gewünscht ist. Deshalb wird eine neue Linie mit Maß eingefügt. Leider muss der User die Maßeingabe bestätigen.
Daraus ergeben sich 2 Fragen:

Gibt es eine Möglichkeit alle auf der Zeichnung befindlichen Stile zu löschen, egal wie diese heißen?
Kann ein Maße ohne Benutzer-Bestätigung eingefügt werden?
Unten ein Auszug aus dem Code.

Ich freue mich auf die Rückmeldungen!

Function delete_BemassungsStile(swApp As SldWorks.SldWorks)

    Dim swDraw                  As SldWorks.ModelDoc2
    Dim swView                  As View
    Dim swDispDim              As SldWorks.DisplayDimension
    Dim myAnnotation            As SldWorks.Annotation
    Dim retval                  As Boolean
    Dim i                      As Integer
   
    Dim Pfad_BemFav            As String
    Dim Endung_BemFav            As String
    Dim zuloeschendeBemStile(10)  As String
    Dim neueBemStile            As Variant

    zuloeschendeBemStile(0) = "H7"
    zuloeschendeBemStile(1) = "F7"
    zuloeschendeBemStile(2) = "K6"
    zuloeschendeBemStile(3) = "h6"
    zuloeschendeBemStile(4) = "f7"
    zuloeschendeBemStile(5) = "g6"
    zuloeschendeBemStile(6) = "0,1"
    zuloeschendeBemStile(7) = "0,2"
    zuloeschendeBemStile(8) = "0,05"
    zuloeschendeBemStile(9) = "+0,05  +0,15"
    zuloeschendeBemStile(10) = "0  -0,05"
   
    Set swDraw = swApp.ActiveDoc

    Pfad_BemFav = swApp.GetUserPreferenceStringValue(swFileLocationsDimensionFavorites) & "\Bemaßung\"
    Endung_BemFav = ".sldstl"

    neueBemStile = fileList(Pfad_BemFav, Endung_BemFav)
   
    'Pfad ergänzen
    For i = 0 To UBound(neueBemStile)
        neueBemStile(i) = Pfad_BemFav & neueBemStile(i)
    Next

    Set swView = swDraw.GetFirstView
   
    Dim swLine As SketchSegment

    ' Linie erstellen
    Set swLine = swDraw.CreateLine2(0, 0, 0, -0.01, 0, 0)

    ' Bemaßung horizontal zur Linie hinzufügen
    swDraw.AddHorizontalDimension2 0, 0, 0

    Set swDispDim = swView.GetFirstDisplayDimension5
    Set myAnnotation = swDispDim.GetAnnotation()
   
    'definierte Bemaßungs-Stile löschen
    For i = 0 To UBound(zuloeschendeBemStile)
        retval = myAnnotation.DeleteStyle(zuloeschendeBemStile(i))
    Next i
     
    'Bemaßungs-Stile einfügen
    For i = 0 To UBound(neueBemStile)
        retval = myAnnotation.LoadStyle(neueBemStile(i))
    Next i
End function

Function fileList(Pfad_Fav As String, FavEndung As String) As Variant
    Dim oFSO                As Object
    Dim oFolder            As Object
    Dim objFile            As Object
    Dim Ordnerinhalt()    As String
   
    ReDim Ordnerinhalt(0)
   
    Set oFSO = CreateObject("Scripting.FileSystemObject")
    Set oFolder = oFSO.GetFolder(Pfad_Fav)

    For Each objFile In oFolder.Files
        If Ordnerinhalt(UBound(Ordnerinhalt)) <> "" Then ReDim Preserve Ordnerinhalt(UBound(Ordnerinhalt) + 1)
        Ordnerinhalt(UBound(Ordnerinhalt)) = objFile.Name
    Next objFile
   
    fileList = Ordnerinhalt
   
End Function

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

bk.sc
Ehrenmitglied V.I.P. h.c.
Konstrukteur Sondermaschinenbau



Sehen Sie sich das Profil von bk.sc an!   Senden Sie eine Private Message an bk.sc  Schreiben Sie einen Gästebucheintrag für bk.sc

Beiträge: 2800
Registriert: 18.07.2012

-Solid Works 2019 SP5
-Pro Engineer WF 3

erstellt am: 20. Nov. 2024 15:01    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Solidwörker 10 Unities + Antwort hilfreich

Hallo,

du könntest dir doch die Namen der Stile mit der "GetStyleName Method (IAnnotation)" holen und dann löschen, also erst alle Annotations durchgehen und die vorhandenen Namen in einem Arry sammeln und die dann löschen. Oder kann es auch sein das ungenutzte Stile vorhanden sind, weil dann fällt mirnichts ein auf die schnelle.

Zum 2.Punkzt glaube ich musst du die Option "Bemaßungswert einsetzen" aus den Systemoptionen temporär deaktivieren und nach dem ablaufdes Makros natürlich wieder aktivieren.
Mit der Zeile "swApp.SetUserPreferenceToggle swUserPreferenceToggle_e.swInputDimValOnCreate, False" kannst du die Option deaktivieren.

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

Solidwörker
Mitglied
Konstrukteur

Sehen Sie sich das Profil von Solidwörker an!   Senden Sie eine Private Message an Solidwörker  Schreiben Sie einen Gästebucheintrag für Solidwörker

Beiträge: 7
Registriert: 20.09.2012

SWX 2019 SP5 (noch)
Win10 64bit
SolidWorks PDM
HP Z4
Intel Xeon W-2225
32GB RAM
Nvidia Quadro RTX4000

erstellt am: 21. Nov. 2024 06:53    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Guten Morgen Bernd,

die meisten Stile werden nicht benutzt, somit fällt diese Möglichkeit mit „GetStyleName“ leider weg.

Auf die Idee, dass die erforderliche Maßeingabe eine Systemeinstellung ist, bin ich nicht gekommen. Jetzt lese ich die eingestellte Option aus, setze sie auf „False“ und setzte sie später wieder auf die User-Einstellung.
swApp.SetUserPreferenceToggle swUserPreferenceToggle_e.swInputDimValOnCreate, False
Klappt super! 


Vielen Dank für die Rückmeldung!

Grüße Daniel

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

ad_man
Mitglied
freiberuflicher Entwicklungsing. (Fahrzeugtechnik, CSWP, CPPA))


Sehen Sie sich das Profil von ad_man an!   Senden Sie eine Private Message an ad_man  Schreiben Sie einen Gästebucheintrag für ad_man

Beiträge: 1444
Registriert: 20.12.2003

SolidWorks 2024 SP5 mit Enterprise PDM , Windows 11, Dell Precision 3660, i7-12700K, 96 GB DDR-Ram, Quadro RTX A4000

erstellt am: 21. Nov. 2024 10:14    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Solidwörker 10 Unities + Antwort hilfreich

Hallo Daniel,

alternativ könntest du versuchen, die vorhandenen Bemaßungen auf den
Standard zurückzusetzen und dann mit dem neuen Style zu versehen.

Zurücksetzen:
https://help.solidworks.com/2024/english/api/sldworksapi/SolidWorks.Interop.sldworks~SolidWorks.Interop.sldworks.IAnnotation~ApplyDefaultStyleAttributes.html

Neu zuweisen:
https://help.solidworks.com/2024/english/api/sldworksapi/SolidWorks.Interop.sldworks~SolidWorks.Interop.sldworks.IAnnotation~SetStyleName.html

------------------
==========
Gruß
Andreas
==========

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Solidwörker
Mitglied
Konstrukteur

Sehen Sie sich das Profil von Solidwörker an!   Senden Sie eine Private Message an Solidwörker  Schreiben Sie einen Gästebucheintrag für Solidwörker

Beiträge: 7
Registriert: 20.09.2012

SWX 2019 SP5 (noch)
Win10 64bit
SolidWorks PDM
HP Z4
Intel Xeon W-2225
32GB RAM
Nvidia Quadro RTX4000

erstellt am: 22. Nov. 2024 12:38    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo Bernd,

vielen Dank für den Vorschlag.
Beim Zurücksetzen auf den Standard werden die ausgewählten Favoriten z.B. bei Maßen Passungsangaben gelöscht. D.h. es müssten alle vorhandenen Angaben, welche mit Favoriten erstellt wurden, erneut geprüft oder zuvor mit VBA eingelesen und wieder übersetzt werden.

Mein aktueller Stand: die zu löschenden Styles werden in einer händisch erstellten Exceltabelle aufgetragen. Das Makro fragt die entsprechenden Zellen ab und löscht dann die aufgelisteten Styles. Der Vorteil ist, man kann einfach in der Excel-Tabelle ergänzen und muss nicht jedes Mal das Makro anpassen.

Grüße Daniel

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2024 CAD.de | Impressum | Datenschutz