SOLIDWORKS: Een onderdeel in een assemblage invoegen met behulp van VBA

Hallo

Ik ben nieuw bij VBA en ik wil graag een macro maken die een assemblage maakt en eerst een 1e deel invoegt.

Ik heb geprobeerd een macro op te nemen, maar het werkt niet!

Daar is ze dan:

Dim swApp als objectDim deel als object
Dim boolstatus als Booleaanse
Dim longstatus As Long, longwarnings As Long

Sub hoofd()

Stel swApp = Toepassing.SldWorks in

Set Part = swApp.NewDocument("C:\ProgramData\SolidWorks\SOLIDWORKS 2015\templates\Assemblage.asmdot", 0, 0, 0)
swApp.ActivateDoc2 "Assemblage1", False, longstatus
Deel instellen = swApp.ActiveDoc
myModelView dimmen als object
Stel myModelView = Deel.ActiveView in
myModelView.FrameState = swWindowState_e.swWindowMaximized

boolstatus = Part.AddComponent("C:\Users\Me\Desktop\Folder\Part1.SLDPRT", 0, 0, 0)

Einde Sub

Op het eerste gezicht lijkt de fout afkomstig te zijn van de regel:

boolstatus = Part.AddComponent("C:\Users\Me\Desktop\Folder\Part1.SLDPRT", 0, 0, 0)

 

Kan iemand mij vertellen waar het probleem vandaan komt?

Bij voorbaat dank.

Vriendelijke groeten

 

Hallo

Allereerst, pas op voor de macrorecorder, deze gebruikt niet de nieuwste versies van de API-methoden.

Voor de AddComponent, kijk hier, je zult zien dat je met deze functie een component kunt toevoegen die voorgeladen is in Solidworks.

Vriendelijke groeten

1 like

Oh oké, dus de enige oplossing is om eerst het onderdeel te openen, in de assemblage te plaatsen en dan te sluiten? Er is geen andere functie dan AddComponent?

Nog een vraag:

Als ik macro's opneem, kom ik vaak uit op variabelen als boolstatus, longstatus, etc... Kan iemand mij uitleggen waar ze voor zijn? Als ik de code lees, heb ik de indruk dat dit variabelen zijn die niet echt een specifiek doel hebben, maar die voor alles en voor niets worden gebruikt. Klopt dat?

Hallo

De variabelen boolstatus, longstatus, etc... zijn niet geheel nutteloos, bijvoorbeeld voor de functie AddComponent is boolstatus de retourwaarde van de methode:

Function AddComponent(_

ByVal CompName As System.String, _

ByVal X As System.Double, _

ByVal Y As System.Double, _

ByVal Z As System.Double _

) As System.Boolean

 

Kijk naar deze kant voordat je halsoverkop in macro's springt, anders loop je het risico snel te verdwalen, en dan een beetje lezen over de Solidworks API's die hier te vinden zijn.

Vriendelijke groeten

Hallo

Zoals vermeld in het vorige bericht, worden deze variabelen gebruikt om functieretourwaarden op te slaan.

Wanneer de functie meerdere waarden moet retourneren (foutmeldingen, resultaat van de functie zoals bij het openen van aangepaste eigenschappen), moet u eerst de variabelen maken en deze doorgeven aan de functie om de waarden te krijgen.