Solidworks-vergelijking in VBA

Hoi allemaal

 

Hoe een Solidworks-vergelijking van dit type te transcriberen:

 

"hauteur@Esquisse1"    =     "largeur@Esquisse1"   *  2

 

met een macro's onder VBA? de code die het vormt?

Het doel is om een onderdeel op te zetten met alleen VBA.

 

Bij voorbaat dank.

 

 

Hallo

SW Online Help is een schat aan informatie. Voor API's is hier de link: http://help.solidworks.com/2015/english/api/sldworksapiprogguide/Welcome.htm

U vindt een voorbeeld van het optellen van vergelijkingen in een ruimte met verschillende configuraties : http://help.solidworks.com/2015/english/api/sldworksapi/Add_Equations_Example_VB.htm

Tot ziens.

3 likes

In het slechtste geval, als u niet vindt wat u zoekt, kunt u misschien proberen een macro op te nemen door uw vergelijking uit te voeren, in de code te komen en te zien wat de software doet?

1 like

Hallo

Allereerst dank u voor uw antwoorden.

Ik heb al gekeken naar de SW-hulp, maar de aangeboden voorbeelden zijn met voorwaarden, in mijn geval heb ik ze niet nodig.

Omdat ik niet veel kennis in ontwikkeling had, probeerde ik aan de code te sleutelen, maar tevergeefs werkte niets:(

Met de macrorecorder werkt het niet, het houdt geen rekening met de vergelijking die in solidworks is geschreven.

 

Bij voorbaat dank.

 

1 like

Dus in dit geval moest het meteen gezegd worden.

Want om een functionele macro voor je te ontwikkelen, hebben we veel meer informatie nodig over het doel en het gebruik dat je ervan wilt maken.

En het kost veel tijd.

1 like

Wat ik nodig heb is een macro die in staat is om dit soort vergelijkingen uit te voeren:

 

 "hauteur@Esquisse1"    =     "largeur@Esquisse1"   *  2

Als dat alleen maar de reden is, waarom doe je dan niet elke keer vergelijkingen?

 

Want dan moet je de juiste naam aan de juiste beoordeling geven, zodat hij weet hoe hij ervoor moet gaan. Ik ben niet erg overtuigd van de bespaarde tijd :s

1 like

Ik heb met VBA een formulier gemaakt om een 3D-model op te zetten.

Met dit formulier kan ik de lengte, breedte en hoogte van het sjabloon wijzigen.

Er zijn ook gevallen die moeten worden gecontroleerd om het verwijderen van een onderdeel te verwijderen of ongedaan te maken (afhankelijk van de gekozen opties).

Als ik vergelijkingen maak op mijn componenten binnen mijn assembly, wanneer ik ze verwijder (met de checkcases)  vertelt solidworks me fouten op mijn vergelijkingen. Daarom wil ik SW-vergelijkingen in mijn model verbieden

 

1 like

Oh ja, natuurlijk.

 

Nou, anders om je te antwoorden op een vergelijking in VBA, doe ik het zo

 

Cellen (i, "I"). Waarde = Blad3.Cellen(a, "E"). Waarde * Cellen (i, "C"). Waarde

 

Dus voor jou zou het zijn

largeur@esquisse1" =  Cellen(i, "C"). Waarde* 2

 

waarbij Cellen (i, "C") zou overeenkomen met het Excel-vak voor het instellen van de waarde "hauteur@esquisse1"

 

 

Aan de andere kant weet ik helemaal niet hoe ik de link moet leggen tussen excel en de waarde van een dimensie (maar ik neem aan dat jij weet hoe je dat moet doen?). Dus ik laat je het integreren zoals je wilt.

 

Dat gezegd hebbende, kan het leuk zijn om je codefragment als reactie te plaatsen voor de volgende lezers die op zoek zijn naar hetzelfde type antwoord;)

1 like

Ik werk niet met Excel maar met de VBA module van Solidworks.

Hieronder staat een code die ik heb om mijn waarden aan te passen, of het nu lengte, breedte of een aantal herhalingen is.

Ik ben op zoek naar hetzelfde type code, maar om relaties tussen bepaalde onderdelen te creëren

 

Set SwApp = CreateObject("SldWorks.Application")  ' @Corps CamVane 100.sldasm
Deel instellen = SwApp.ActiveDoc

Part.Parameter("D1@Lg traverse@Traverse onderste CamVane.part"). SystemValue = (dimensie.breedte.waarde - 3) / 1000
Deel.ClearSelection
Deel.ForceHerbouwen

Part.Parameter("D1@Distance2@Corps CamVane 100.sldasm"). SystemValue = dimensie. Hoogte.waarde / 1000
Deel.ClearSelection
Deel.ForceHerbouwen


Part.Parameter("D5@Lg traverse@Traverse onderste CamVane.part"). SystemValue = dimensie.dikte.waarde / 1000
Deel.ClearSelection
Deel.ForceHerbouwen

Part.Parameter("lineair D1@Répétition locale1@Corps CamVane 100.sldasm"). SystemValue = UserForm1.TextBox1.value
Deel.ClearSelection
Deel.ForceHerbouwen

 

Deel.WeergaveZoomtofit2

Deel.ForceHerbouwen

 

boolstatus = Deel.EditRebuild3()

 

Ik kan mijn probleem nog steeds niet oplossen:(

Hallo

 

Ik heb het antwoord op mijn vraag gevonden.

Voor waar ik in geïnteresseerd ben, heb ik de onderstaande code geplaatst.

 

Sub hoofd()

Stel swApp = CreateObject("SldWorks.Application") in
Deel instellen = swApp.ActiveDoc


Deel.Parameter("hauteur@Esquisse1"). SystemValue =  Deel.Parameter("largeur@Esquisse1"). Systeemwaarde *2


Deel.ClearSelection
Deel.ForceHerbouwen

 


Deel.WeergaveZoomtofit2

Deel.ForceHerbouwen

 

boolstatus = Deel.EditRebuild3()

Einde Sub

Hallo

 

Ik heb het antwoord op mijn vraag gevonden.

Voor waar ik in geïnteresseerd ben, heb ik de onderstaande code geplaatst.

 

Sub hoofd()

Stel swApp = CreateObject("SldWorks.Application") in
Deel instellen = swApp.ActiveDoc


Deel.Parameter("hauteur@Esquisse1"). SystemValue =  Deel.Parameter("largeur@Esquisse1"). Systeemwaarde *2


Deel.ClearSelection
Deel.ForceHerbouwen

 


Deel.WeergaveZoomtofit2

Deel.ForceHerbouwen

 

boolstatus = Deel.EditRebuild3()

Einde Sub