Hallo
Ik wil alle componenten van de actieve assemblage in het formulier opsommen
component1-1@assemblageracine
component1-2@assemblageracine
ssassembly1-1@assemblageracine/component2-1@ssassemblage1
enz...
Het doel is om het resultaat vervolgens in de macro hierboven te injecteren volgens andere parameters.
Sub hoofd()
Stel swApp = Toepassing.SldWorks in
Deel instellen = swApp.ActiveDoc
boolstatus = Part.Extension.SelectByID2("1052616-1@1052602/2102935-1@1052616", "COMPONENT", 0, 0, 0, Onwaar, 0, Niets, 0)
Deel.HideComponent2
Deel.ClearSelection2 Waar
Einde Sub
Bedankt
Hallo, dit zou bij je moeten passen, ik heb de helpmacro een beetje opgeruimd, http://help.solidworks.com/2018/english/api/sldworksapi/solidworks.interop.sldworks~solidworks.interop.sldworks.icomponent2~getchildren.html
Optie Expliciete
Sub TraverseComponent(swComp als SldWorks.Component2, nLevel zo lang)
Dim vChildComp als variant
Dim swChildComp als SldWorks.Component2
Dim swCompConfig als SldWorks.Configuration
Dim sPadStr als snaar
Zon i Zo lang
Voor i = 0 Naar nLevel - 1
sPadStr = sPadStr + " "
volgende i
vChildComp = swComp.GetChildren
Voor i = 0 TB UBound(vChildComp)
Stel swChildComp in = vChildComp(i)
Debug.Print sPadStr & "+" & swChildComp.Name2 & " "
TraverseComponent swChildComp, nLevel + 1
volgende i
Einde Sub
Sub hoofd()
Dim swApp als SldWorks.SldWorks
Dim swModel als SldWorks.ModelDoc2
Dim swAssy als SldWorks.AssemblyDoc
Dim swConf als SldWorks.Configuration
Dim swRootComp als SldWorks.Component2
Dim nStart zo lang
Dim bRet als Booleaanse
Dim fileName als tekenreeks
Dim fouten zo lang mogelijk
Dim waarschuwingen zo lang
Stel swApp = CreateObject("SldWorks.Application") in
(') Open vergadering
fileName = "C:\Gebruikers\Openbaar\Documenten\SOLIDWORKS\SOLIDWORKS 2018\samples\tutorial\smartcomponents\stepped_shaft.sldasm"
Stel swModel in = swApp.OpenDoc6(fileName, swDocumentTypes_e.swDocASSEMBLY, swOpenDocOptions_e.swOpenDocOptions_Silent, "", fouten, waarschuwingen)
Stel swConf = swModel.GetActiveConfiguration in
Stel swRootComp in = swConf.GetRootComponent3(True)
nStart = Timer
Debug.Print "Bestand = " & swModel.GetPathName
TraverseComponent swRootComp, 1
Foutopsporing.Print ""
Debug.Print "Tijd = " & Timer - nStart & " seconden"
Einde Sub
2 likes
Het werkt goed bedankt Mandrake