Hallo, ik heb een macro gemaakt waarmee u mijn onderdeel kunt configureren (afmetingen, machinale bewerking met nokken of materiaalverwijdering, enz.). Zodra het onderdeel is gemaakt, zou ik graag willen dat wanneer ik de macro op dit onderdeel opnieuw start, de waarden die op het gebruikersformulier worden weergegeven, de waarden zijn die ik in de kamer heb geplaatst om snel een voorbeeld van mijn geopende deel te hebben. Anders worden de standaardwaarden weergegeven. Dus je moet de informatie van het onderdeel halen en terugsturen naar de juiste vakken in mijn gebruikersformulier.
Het is me gelukt om de afmetingen van een schets op te halen en ze terug te sturen met behulp van dit: txt_Z.Text = Part.Parameter("D1@F"). SystemValue . maar ik kan de WARE of ONWARE waarde van een functie (mat. verwijdering, bazing, boren) niet krijgen om te bepalen of deze in mijn deel is ingeschakeld of verwijderd.
Als je een oplossing hebt, ben ik geïnteresseerd :)
Option Explicit
Sub main()
Dim swApp As SldWorks.SldWorks
Dim swModel As SldWorks.ModelDoc2
Dim swSelMgr As SldWorks.SelectionMgr
Dim swFeat As SldWorks.Feature
Dim vConfNameArr As Variant
Dim vSuppStateArr As Variant
Dim i As Long
Dim bRet As Boolean
Set swApp = Application.SldWorks
Set swModel = swApp.ActiveDoc
Set swSelMgr = swModel.SelectionManager
Set swFeat = swSelMgr.GetSelectedObject6(1, -1)
vConfNameArr = swModel.GetConfigurationNames
vSuppStateArr = swFeat.IsSuppressed2(swThisConfiguration, vConfNameArr)
Debug.Assert 0 = UBound(vSuppStateArr)
Debug.Print "File = " & swModel.GetPathName
Debug.Print " " & swFeat.Name
Debug.Print " " & vConfNameArr(i) & " ---> " & vSuppStateArr(i)
End Sub
Hallo Cyril, dit is wat ik nodig heb, het is me gelukt om de waarde WAAR of ONWAAR te krijgen met deze code.
Maar het probleem is dat ik de functie moet selecteren voordat ik de macro start. Hoe zorg ik ervoor dat wanneer ik de macro start, deze alle functies neemt die ik hem zou hebben gegeven (in mijn code), zodat hij me vertelt of het waar of onwaar is? zonder dat je de functies hoeft te selecteren?
(Ik geef aan dat ik een beginner in VBA, het is alles wat ik het gevoel heb dat ik net begin met macro's te doen op sw)
Private Sub ActualiserInfosPiece()
actualisationInfoPiece = True
Dim swFeature As SldWorks.Feature
Dim swModelDocExt As SldWorks.ModelDocExtension
Dim featureName As String
Dim status As Boolean
Dim vSuppStateArr As Variant
Dim vConfNameArr As Variant
Set swApp = Application.SldWorks
Set swModel = swApp.ActiveDoc
Set swModelDocExt = swModel.Extension
Set Part = swModel
If swModel Is Nothing Then
Exit Sub
End If
If (swModel.GetType <> swDocPART) Then
Call MsgBox("Macro valable uniquement pour une pièce", vbOKOnly, "AVERTISSEMENT")
Exit Sub
End If
vConfNameArr = swModel.GetConfigurationNames
Set swFeature = Part.FirstFeature
Do While Not swFeature Is Nothing
featureName = swFeature.name
status = swModelDocExt.SelectByID2(featureName, "BODYFEATURE", 0, 0, 0, False, 0, Nothing, 0)
vSuppStateArr = swFeature.IsSuppressed2(swThisConfiguration, vConfNameArr)
Select Case featureName
Case "FONCTION SW 1"
TglB_N1.value = Not vSuppStateArr(0)
Case "FONCTION SW 2"
TglB_N2.value = Not vSuppStateArr(0)
Case "FONCTION SW 3"
TglB_N3.value = Not vSuppStateArr(0)
Case "FONCTION SW 4"
TglB_N4.value = Not vSuppStateArr(0)
Case "FONCTION SW 5"
TglB_N5.value = Not vSuppStateArr(0)
Case FONCTION SW 6"
TglB_N6.value = Not vSuppStateArr(0)
End Select
Set swFeature = swFeature.GetNextFeature()
Loop
ComboBox_HAUT.Text = Part.Parameter("D3@Esquisse FONCTION SW").SystemValue * 1000
ComboBox_BAS.Text = Part.Parameter("D4@Esquisse FONCTION SW").SystemValue * 1000
ComboBox_GAUCHE.Text = Part.Parameter("D2@Esquisse FONCTION SW").SystemValue * 1000
ComboBox_DROIT.Text = Part.Parameter("D1@Esquisse FONCTION SW").SystemValue * 1000
txt_X.Text = Part.Parameter("D3@Esquisse Débit").SystemValue * 1000
txt_Y.Text = Part.Parameter("D4@Esquisse Débit").SystemValue * 1000
txt_Z.Text = Part.Parameter("D1@F").SystemValue * 1000
actualisationInfoPiece = False
End Sub