Probleme macro sw 2018 et 2020

Hallo

 

Ik heb in 2018 een eenvoudige macro gemaakt die heel goed werkt en met de nieuwe 2020-versie werkt het niet meer.

De functie retourneert niets  en rine gebeurt niet

 

Bedankt voor je hulp

 

Het maken van de schaal
myModelView dimmen als object
Stel myModelView = Deel.ActiveView in
myModelView.FrameState = swWindowState_e.swWindowMaximized
boolstatus = Part.Extension.SelectByID2("Geïmporteerd-Surface1", "REFSURFACE", 0, 0, 0, True, 0, Nothing, 0)
Dim fonction_echelle als object
Set fonction_echelle = Part.FeatureManager.InsertScale(0, True, 1.5, 1.5, 1.5)
 

Hallo

Door variabelen te declareren in plaats van ze in objecttype te laten staan (fonction_echelle als SldWorks.Feature bijvoorbeeld) denk ik dat het beter zal gaan.

Ik denk dat we daarna een deel van de code missen, dus we zouden het stap voor stap moeten doorlopen om te zien waar het vastloopt (het kan bijvoorbeeld afkomstig zijn van de entiteitsselectie die leeg is).

Daarna moeten we de macroreferenties controleren als SW2020 wordt vermeld.

3 likes

Zelfde mening en

Dim myModelView As SldWorks.View
1 like

Hallo

Na je antwoorden werkt het nog steeds niet.

Heb je nog andere leads?

Bedankt

 

 

 

Hallo

Volgens de documentatie werkt de InsertScale-functie alleen op vaste of oppervlaktelichamen. Maar "REFSURFACE" verwijst naar de functie die het lichaam heeft geschapen, niet naar het lichaam zelf. Het feit dat het oppervlaktelichaam dezelfde naam heeft als de functie, zou kunnen verklaren waarom het in 2016 nog steeds werkte.

Dit werkt voor mij in 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

Opmerking: de laatste twee termen van de functie InsertScale worden niet in aanmerking genomen wanneer de tweede term "True" is (uniforme schaal)

3 likes

Hallo

Nee, het werkt nog steeds niet in 2020

 

Kunt u het bestand of een testbestand bijvoegen?

Hallo

Ik bevestig dat de code van JeromeP werkt op SW2019 en dus zou moeten werken op SW2020.

1 like

Hallo, hier is mijn code en mijn onderdeel dat ik open is een geïmporteerd oppervlak.

XT-formaat

 

Sub hoofd()

Stel swApp = Toepassing.SldWorks in

Stel ModelDoc in = swApp.ActiveDoc

Deel instellen = swApp.ActiveDoc


Lijn 100:
'--------------------------------------------------------------------------------------------------------------------
Dim choix_matiere als snaar
Dim coef_echelle Ace Dubbel
choix_matiere = InputBox("Wat is het materiaal? 1-APET  2-PS  3-PP")
Als choix_matiere = "1" dan coef_echelle = 1.004
Als choix_matiere = "2" Dan coef_echelle = 1.006
Als choix_matiere = "3" dan coef_echelle = 1.015
Als choix_matiere <> "1" en choix_matiere <> "2" en choix_matiere <> "3" dan
    MsgBox ("Voer alleen 1, 2 of 3 in")
    Ga naar line100
Einde als

Het maken van de schaal
myModelView dimmen als object

boolstatus = Part.Extension.SelectByID2("Surface-Imported1", "SURFACEBODY", 0, 0, 0, False, 0, Nothing, 0)
Zon fonction_echelle als SldWorks.Feature
Set fonction_echelle = Part.FeatureManager.InsertScale(swScaleType_e.swScaleAboutCentroid, True, coef_echelle, coef_echelle, coef_echelle)

Met behulp van uw code zoals het is, werkt het heel goed voor mij.

Kan worden geverifieerd dat het oppervlak correct is geselecteerd met:

MsgBox "Sélection: " & boolstatus

 

1 like

Goedenavond

Dus wat ik heb getest en gevonden, als het geïmporteerde oppervlak een complex oppervlak is (d.w.z.: bijna gesloten), werkt de macro niet (Set fonction_echelle  retourneert niets).

Door de macro op te nemen en de manipulatie uit te voeren, bespaart het me wel een equivalente code, maar het werkt niet meer en geeft ook niets terug.

Edit: het werkt op een offset oppervlak van een volume model, het werkt niet op geïmporteerde oppervlakken. Waarschijnlijk een regressie als het eerder werkte.