Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de
  SolidWorks
  Solidworks VBA Maß ändern

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
  
SOLIDWORKS Online-Kurse | Jederzeit verfügbar << , ein Kurs
Autor Thema:  Solidworks VBA Maß ändern (174 / mal gelesen)
Obi1317
Mitglied
Konstrukteur


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

Beiträge: 27
Registriert: 15.02.2016

Win10, SWX2023

erstellt am: 29. Apr. 2025 14:24    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

Moin zusammen,

ich mache gerade meine ersten Gehversuche mit VBA in Solidworks. Mein mittelfristiges Ziel ist es, per Excel-VBA (hier habe ich bereits etwas Erfahrung) eine SWX-Datei zu öffnen und zu verändern.
Aktuell scheitere ich allerdings an den Basics der SWX-API. Ich bekomme zwar mein Modell geöffnet, kann auch den Wert eines Maßes auslesen, bekomme es aber nicht verändert. Das zweite Debug.Print spuckt zwar den veränderten Wert aus, aber das Modell selber wird nicht geändert.
Hier mein Probier-Code fürs Maß ändern, den ich aktuell aus Online-Beispielen zusammen gebastelt habe:

Sub Mass_aendern_Test()
    Dim swApp As Object
    Dim swDim As Object
    Dim mass As Double
    Dim errors As Long   
    Dim swModel As Object
   
    Set swApp = Application.SldWorks
    Set swModel = swApp.ActiveDoc
    If swModel Is Nothing Then Exit Sub
   
    Set swDim = swModel.Parameter("D1@Skizze1")
    Debug.Print ("Wert vorher: " & swDim.Value)
    If swDim Is Nothing Then Exit Sub
   
    mass = 0.007
    errors = swDim.SetSystemValue3(mass, swSetValueInConfiguration_e.swSetValue_InAllConfigurations, Empty)   
    Debug.Print ("Wert nachher: " & swDim.Value)
   
    swModel.EditRebuild3   
End Sub

Kann mir hier vielleicht jemand einen Tipp geben, wie ich die API anzuwenden habe, damit sich das SWX-Teil tatsächlich ändert?
Vielen Dank im Voraus!

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

Sirus
Ehrenmitglied
CAD Applikationsentwickler


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

Beiträge: 1576
Registriert: 03.06.2004

SolidWorks2024

erstellt am: 29. Apr. 2025 14:56    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 Obi1317 10 Unities + Antwort hilfreich

versuche es mal so:

Dim swApp As Object

Sub main()

Set swApp = Application.SldWorks

Dim swModel As Object
Set swModel = swApp.ActiveDoc

Dim swDim As Object

Dim dim_name As String
Dim feature As String
Dim mass As Double

dim_name = "D1"
feature = "Skizze1"
mass = 33

Set swDim = swModel.Parameter(dim_name & "@" & feature)
On Error Resume Next
swDim.SystemValue = mass / 1000

End Sub

------------------
gruss urs 

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

Obi1317
Mitglied
Konstrukteur


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

Beiträge: 27
Registriert: 15.02.2016

Win10, SWX2023

erstellt am: 29. Apr. 2025 15:05    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

Leider nein.
debug.Print swdim.value spuckt zwar den neuen Wert aus, im Solidworks bleibt das Maß aber unverändert.

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

Obi1317
Mitglied
Konstrukteur


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

Beiträge: 27
Registriert: 15.02.2016

Win10, SWX2023

erstellt am: 29. Apr. 2025 15:07    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

Hoppla, Kommando zurück, geht doch! Hatte nicht gesehen, dass in Deinem Code kein Neuaufbau war.
Vielen Dank!!!

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)2025 CAD.de | Impressum | Datenschutz