Probleme macro sw 2018 et 2020

Hallo

 

Ich habe 2018 ein einfaches Makro erstellt, das sehr gut funktioniert und mit der neuen Version 2020 funktioniert es nicht mehr.

Die Funktion gibt nichts  zurück und rine tritt nicht auf

 

Danke für Ihre Hilfe

 

Erstellen der Skala
myModelView als Objekt dimmen
Festlegen von myModelView = Part.ActiveView
myModelView.FrameState = swWindowState_e.swWindowMaximized
boolstatus = Part.Extension.SelectByID2("Imported-Surface1", "REFSURFACE", 0, 0, 0, True, 0, Nichts, 0)
fonction_echelle als Objekt dimmen
Legen Sie fonction_echelle = Part.FeatureManager.InsertScale(0, True, 1.5, 1.5, 1.5) fest
 

Hallo

Indem Variablen deklariert werden, anstatt sie im Objekttyp zu belassen (z. B. fonction_echelle als SldWorks.Feature), denke ich, dass es besser gehen wird.

Nachdem ich denke, dass uns ein Teil des Codes fehlt, müssten wir ihn Schritt für Schritt durchgehen, um zu sehen, wo er hängen bleibt (er kann beispielsweise aus der Entitätsauswahl stammen, die leer ist).

Danach sollten wir die Makroreferenzen überprüfen, ob SW2020 aufgeführt ist.

3 „Gefällt mir“

Gleiche Meinung und

Dim myModelView As SldWorks.View
1 „Gefällt mir“

Hallo

Nach Ihren Antworten funktioniert es immer noch nicht.

Haben Sie noch weitere Hinweise?

Vielen Dank

 

 

 

Hallo

Laut der Dokumentation funktioniert die Funktion InsertScale nur bei Volumenkörpern oder Flächenkörpern. Aber "REFSURFACE" verweist auf die Funktion, die den Körper erschaffen hat, nicht auf den Körper selbst. Die Tatsache, dass der Flächenkörper den gleichen Namen wie die Funktion hat , könnte erklären , warum es mit 2016 trotzdem funktionierte.

Das funktioniert bei mir im Jahr 2020:

Option Explicit
Sub main()
Dim swApp As SldWorks.SldWorks
Dim swModel As SldWorks.ModelDoc2
Dim swFeat As SldWorks.Feature
Dim boolstatus As Boolean
Set swApp = Application.SldWorks
Set swModel = swApp.ActiveDoc
boolstatus = swModel.Extension.SelectByID2("Surface-Importée1", "SURFACEBODY", 0, 0, 0, False, 0, Nothing, 0)
Set swFeat = swModel.FeatureManager.InsertScale(swScaleType_e.swScaleAboutCentroid, True, 1.5, 0, 0)
End Sub

Hinweis: Die letzten beiden Terme der Funktion InsertScale werden nicht berücksichtigt, wenn der zweite Term "True" ist (einheitliche Skalierung)

3 „Gefällt mir“

Hallo

Nein, es funktioniert immer noch nicht auf 2020

 

Können Sie die Datei oder eine Testdatei anhängen?

Hallo

Ich bestätige, dass der Code von JeromeP auf SW2019 funktioniert und auch auf SW2020 funktionieren sollte.

1 „Gefällt mir“

Hallo, hier ist mein Code und mein Teil, den ich öffne, ist eine importierte Oberfläche.

XT-Format

 

Sub main()

Legen Sie swApp = Application.SldWorks fest

Festlegen von ModelDoc = swApp.ActiveDoc

Set Part = swApp.ActiveDoc


Zeile100:
'--------------------------------------------------------------------------------------------------------------------
choix_matiere als Zeichenfolge dimmen
Dim coef_echelle Ace Double
choix_matiere = InputBox("Was ist das Material? 1-APET  2-PS  3-PP")
Wenn choix_matiere = "1", dann coef_echelle = 1,004
Wenn choix_matiere = "2", dann coef_echelle = 1,006
Wenn choix_matiere = "3", dann coef_echelle = 1,015
Wenn choix_matiere <> "1" und choix_matiere <> "2" und choix_matiere <> "3" drücken, dann
    MsgBox ("Geben Sie entweder 1, 2 oder 3 ein")
    Gehe zu line100
Ende, wenn

Erstellen der Skala
myModelView als Objekt dimmen

boolstatus = Part.Extension.SelectByID2("Surface-Imported1", "SURFACEBODY", 0, 0, 0, Falsch, 0, Nichts, 0)
Sun fonction_echelle als SldWorks.Feature
Legen Sie fonction_echelle = Part.FeatureManager.InsertScale(swScaleType_e.swScaleAboutCentroid, True, coef_echelle, coef_echelle, coef_echelle) fest

Wenn Sie Ihren Code so verwenden, wie er ist, funktioniert er für mich sehr gut.

Kann überprüft werden, ob die Oberfläche korrekt ausgewählt ist mit:

MsgBox "Sélection: " & boolstatus

 

1 „Gefällt mir“

Guten Abend

Was ich also getestet und festgestellt habe, ist, dass das Makro nicht funktioniert, wenn es sich bei der importierten Oberfläche um eine komplexe Oberfläche handelt (d. h. fonction_echelle fast  geschlossen).

Durch das Aufzeichnen des Makros und das Ausführen der Manipulation wird mir zwar ein gleichwertiger Code gespart, der jedoch nicht mehr funktioniert und auch Nothing zurückgibt.

Bearbeiten: Es funktioniert auf einer versetzten Fläche aus einem Volumenmodell, es funktioniert nicht auf importierten Flächen. Wahrscheinlich eine Regression, wenn es vorher funktioniert hat.