VBA Excel zu Solidworks

Hallo ihr alle
Ich möchte eine solidworks Funktion über eine Excel-Datei mit einem VBA-Makro steuern


Im Anhang befindet sich der Code für die Funktion EditSuppress2(), an der ich interessiert bin.
'Dim-Instanz als IModelDoc
'Dimmwert Als System.Boolean
'Wert = Instanz. BearbeitenUnterdrücken2()

 

Angehängt ist der Makrodatensatz über die Solidworks Software
'Sub main()

'swApp = _ setzen
'Anwendung.SldWorks

'Set Part = swApp.ActiveDoc
'boolstatus = Part.Extension.SelectByID2("Entfernt mat.-Extru.1@PièceX.part", "BODYFEATURE", 0, 0, 0, Falsch, 0, Nichts, 0)
'Teil.BearbeitenUnterdrücken2
'Part.ClearSelection2 Wahr
'Ende U-Boot

Hat jemals jemand an dieser Art von VBA gearbeitet? Wie bringen Sie beides unter einen Hut?

Ich möchte das Löschen einer Funktion über Excel eines Teils steuern?

Vielen Dank für Ihre Hilfe im Voraus.

Hallo

Was Sie anscheinend tun möchten, ist wie eine Familie von Zimmern. Ebenso effizient und einfach ist Excel, das in diesem Zusammenhang bereits nativ SW fährt.

2 „Gefällt mir“

Ja, absolut, aber ich möchte mit einem Excel-Makro fortfahren, ist das möglich?

Da ich mehrere Funktionen zu löschen habe, möchte ich ein Excel-Makro verwenden, das das Löschen von Solidworks-Funktionen steuert (EditSuppress2())

Hallo

Hier ist ein Beispiel für ein Makro in Excel, mit dem Sie den Namen des in Solidworks geladenen Teils abrufen können:

Sub Macro1()
    
Dim swApp As SldWorks.SldWorks
Dim swModel As SldWorks.ModelDoc2

Set swApp = CreateObject("SldWorks.Application")
swApp.Visible = True
        
Set swModel = swApp.ActiveDoc

MsgBox swModel.GetTitle

End Sub

Vergessen Sie nicht, die Verweise auf Solidworks im Excel-Makroeditor hinzuzufügen:

Der Rest ist nur Standard-VBA-Makro-Schreiben.

Herzliche Grüße

Hallo, danke für deine Antwort, 

Ich habe bereits ein Makro ähnlich wie Ihres erstellt, um die Abmessungen einer Münze mit dem angehängten Code zu ändern:

Part.Parameter("D1@Esquisse1@PièceX.Part").SystemValue = Excel.Range("B2") / 1000

 

Aber ich komme nicht weiter, wenn es darum geht, eine Funktion aus dem Teil zu löschen, es scheint mir, dass ich die Funktion EditSuppress2() verwenden sollte, aber ich kann sie nicht in VBA formatieren, um das Entfernen von Material aus meinem Teil zu entfernen ("Entfernen von mat.-Extru.1@PièceX.Part") 

Ich habe mein Musterstück bei der Post.

Danke für Ihre Hilfe.

 


piecex.sldprt

Hallo

Ein Beispiel für die Verwendung der Funktion EditSuppress2() finden Sie HIER.

Herzliche Grüße

Ich hatte das nicht versucht , aber ich habe immer noch das gleiche Ergebnis "es funktioniert nicht"

Ich habe diesen Code eingefügt:

Model.SelectByID("Enlèv. mat.-Extru.1@PièceX.Part", "BODYFEATURE", 0, 0, 0, False, 0, Nothing, 0) = Model.EditSuppress()

 

Ich habe einen Fehler bei der Ausführung "424" Erforderlicher Artikel

 

Es ist so, dass Sie ein Objekt haben, das nicht definiert ist, wahrscheinlich "Model".

Warum schreiben Sie "@piecex. Teil" nach dem "Enlevèv. mat.-Extru.1" in der "SelectByID", die "SelectByID2" sein sollte, sowie die "EditSuppress()", die "EditSuppress2()"...

Set Model = swApp.ActiveDoc
boolstatus = Model.Extension.SelectByID2("Mat.-Extru.1 entfernt", "BODYFEATURE", 0, 0, 0, Falsch, 0, Nichts, 0)
boolstatus = swModel.EditSuppress2()

Herzliche Grüße

Vielen Dank für Ihre Antwort, aber ich habe das gleiche Ergebnis 

Ich füge meinen gesamten Code an

Dim swApp As Object


Dim boolstatus As Boolean
Dim longstatus As Long, longwarnings As Long

Private Sub CommandButton1_Click()

Set swApp = CreateObject("SldWorks.application")

Set Model = swApp.ActiveDoc
boolstatus = Model.Extension.SelectByID2("Enlèv. mat.-Extru.1", "BODYFEATURE", 0, 0, 0, False, 0, Nothing, 0)
boolstatus = swModel.EditSuppress2()

Part.ClearSelection2 True


End Sub

 

und ich habe am Ende  immer noch den gleichen Fehler "Runtime error "424": Objekt erforderlich

Fehler meinerseits beim Kopieren und Einfügen, ersetzen Sie boolstatus = swModel.EditSuppress2() durch boolstatus = Model.EditSuppress2()

tolle Funktion Ich danke Ihnen vielmals, ich habe die ganze Woche mit diesem Code gekämpft vielen Dank