Hallo
Ik heb een macro die alle componenten van een modelassemblage vervangt door alle assemblages die door de gebruiker zijn geselecteerd via een Excel-bestand, dit stelt ons in staat om zeer snel een machine te bouwen die is samengesteld uit standaardelementen.
Voor een van deze elementen (een onderdeel) verandert slechts één dimensie, afhankelijk van een paar opties die door de gebruiker zijn geselecteerd.
Ik had een solidworks-onderdeel kunnen maken dat specifiek is voor elke mogelijkheid, maar aangezien dit onderdeel specifiek is voor elke machine, heb ik er de voorkeur aan gegeven om een generiek model van dit onderdeel te maken:
- Importeer het in mijn machinemodelassemblage
- Open dit algemene deel
- Bewerk deze beoordeling
- Sla het onderdeel en de tekening op onder een nieuwe naam (generieke tekening is al gedaan)
- en sluit dit onderdeel om terug te keren naar de assemblage in aanbouw.
Van alle hierboven genoemde stappen kan ik alleen mijn generieke onderdeel importeren (naam van het onderdeel TEST. SLDPRT), selecteer het, open het en selecteer vervolgens de betreffende dimensie die de naam "DIAM" draagt, voor de rest van de stappen dacht ik dat ik de macro-opname zou gebruiken om de waarde van de geselecteerde dimensie te wijzigen, het onderdeel onder een nieuwe naam op te slaan (evenals de tekening door het te openen voordat het onderdeelbestand wordt opgeslagen), Helaas registreert de opname niets voor deze acties...
Ik kopieer/plak de code die ik heb om mijn onderdeel te selecteren, open het en selecteer de dimensie waarvan ik de waarde wil wijzigen:
Dim swApp As Object
Dim Part As Object
Dim boolstatus As Boolean
Dim longstatus As Long, longwarnings As Long
Sub main()
Set swApp = Application.SldWorks
Set Part = swApp.ActiveDoc
boolstatus = Part.Extension.SelectByID2("TEST-1@ASSY TEST", "COMPONENT", 0, 0, 0, False, 0, Nothing, 0)
Part.OpenCompFile
' Open the part TEST.SLDPRT
Set Part = swApp.OpenDoc6("PATCH\TEST.SLDPRT", 1, 0, "", longstatus, longwarnings)
Set Part = swApp.ActiveDoc
' Select dimension "DIAM"
boolstatus = Part.Extension.SelectByID2("DIAM@Sketch1@TEST.SLDPRT", "DIMENSION", 0, 0, 0, True, 0, Nothing, 0)
End Sub
Dus mijn vraag is nogal voor de hand liggend, heeft iemand een idee voor:
- De waarde van een geselecteerde dimensie wijzigen
- Open de tekening van een geselecteerd onderdeel
- Sla een onderdeel op onder een nieuwe naam
- Sla de tekening op onder een nieuwe naam
- Sluit alles om terug te gaan naar de montage
Ik heb al geprobeerd te zoeken, de selecties te manipuleren, maar ik moet toegeven dat ik heel gemakkelijk verdwaal in de solidworks VBA in vergelijking met de Excel VBA en ik heb daarom moeite om de selecties te manipuleren enz...
Bij voorbaat dank voor uw hulp
P.S: sorry voor het ontbreken van accenten, ik gebruik een Engels toetsenbord ...
Yves