Verwijzingen naar beperkingen toepassen in VBA

Hoi allemaal

Als onderdeel van een project ben ik verplicht om de assemblage van onze producten zoveel mogelijk te automatiseren in Solidworks.

Het idee is om te beginnen met ons Excel-bestand dat de naam en het pad van de te assembleren componenten bevat.

Ik heb een eerste macro gemaakt die deze 2 kolommen extraheert om ze toe te voegen aan een leeg Excel-bestand (dat ik gebruik als "software" voor gebruikers van het programma)

Zodra deze informatie is toegevoegd, opent een klik Solidworks en voegt elk van de onderdelen in de lijst toe aan een nieuw assemblagebestand.

Tot dusverre goed!

Omdat ik de assemblage wilde optimaliseren, zoals ik heb uitgelegd, heb ik beperkingsverwijzingen aan elk van de componenten toegevoegd, zodat ze elkaar "herkennen" en op de gewenste manier worden gemonteerd. Maar als ik mijn programma draai, liggen de stukken gewoon open op elkaar... Ik heb geprobeerd de manipulatie handmatig uit te voeren door de macro op te nemen, maar in het verkregen bestand heb ik de indruk dat de klik op "smartmates" of de "alt" + slepen, niet worden herkend.

Heb je enig idee welke code ik zou kunnen gebruiken om dit te doen?

Bij voorbaat dank,

Tegen Anthony M. 

Hallo Anthony;

Er is een voorbeeld van een macro (VB) om een onderdeel toe te voegen aan een assemblage is om het te forceren, aan te passen....

->http://help.solidworks.com/2020/English/api/sldworksapi/Add_Component_and_Mate_Example_VB.htm?verRedirect=1

(Waarschuwing, voor deze macro is een klassemodule vereist)

Anders wordt de vb-regel om beperkingen toe te voegen hier becommentarieerd:

http://help.solidworks.com/2016/English/api/sldworksapi/SOLIDWORKS.Interop.sldworks~SOLIDWORKS.Interop.sldworks.IAssemblyDoc~AddMate5.html

Vriendelijke groeten.

1 like

Hallo en bedankt voor dit antwoord.

Met behulp van deze methode wordt het mogelijk om beperkingen tussen onderdelen toe te voegen op basis van referenties zoals assen en vlakken.

Mijn oorspronkelijke idee was om aan elk onderdeel een "spanningsreferentie" toe te kennen en deze automatisch in de assemblage te gebruiken.

Is dit mogelijk?

Hallo

Van mijn kant kon ik niets vinden om dit te doen in de API's.

Vriendelijke groeten

Hallo

Bedankt voor je bericht, dus ik zal op zoek gaan naar andere oplossingen.

Vriendelijke groeten

Ik deed iets soortgelijks

Ik heb coördinatensystemen toegevoegd aan mijn onderdelen

daarna gebruikte ik de addmate API

 

    Deel1 = SelectPcNameIece1 + "@" + PartName1 + "@" + Assemblage
    Deel2 = SelectPcNameIece2 + "@" + PartName2 + "@" + Assemblage
    
    Toegevoegde beperking
    swModel.Extension.SelectByID2 Stuk1, "COORDSYS", 0, 0, 0, Waar, 0, Niets, 0
    swModel.Extension.SelectByID2 Stuk2, "COORDSYS", 0, 0, 0, Waar, 0, Niets, 0
    swModel.AddMate5 20, -1, Onwaar, 0, 0, 0, 0, 0, 0, 0, 0, Onwaar, Onwaar, 0, longstatus
    Deel.ClearSelection2 Waar
    Deel.BewerkenOpnieuw opbouwen3

Hallo gdm,

Dank u voor dit antwoord. 

Als ik het goed begrijp, maakt dit programma geen gebruik van smartmates, maar bestaat het uit het definiëren van verschillende coördinatensystemen op de plaatsen van verbindingen en vervolgens laat het deze systemen met elkaar samenvallen om de assemblage te maken. Klopt dat?

Ik ga ervan uit dat deze functie gebruik maakt van de magnetische beperkingen:

https://www.youtube.com/watch?v=IZCqdfRWyqs

A. Mastromauro

Absoluut, eenvoudiger te beheren, onhandig is het om de coördinatensystemen voor te bereiden

 

 

Oké bedankt, ik ga al mijn stukken aanpassen om ze compatibel te maken met deze methode.

Aan de andere kant, als ik het goed begrijp, blokkeert het maken van een assemblage op deze manier alle relatieve bewegingen van de onderdelen?