Ik heb hulp nodig, ik ben er al geruime tijd mee bezig zonder vooruit te komen.
Ik wil graag een macro maken die de eigenschappen van de lijst met gelaste onderdelen automatisch vult met enkele specifieke eigenschappen. Hier is het algoritme dat ik graag zou willen dat de macro doet.
- Detecteer in de lijst met gelaste onderdelen die platen zijn
- Als het een plaatwerk is, herstel dan de dikte van het plaatwerk en het materiaal.
- Maak twee eigenschappen "CODE" en "DETAIL" waarvan de waarden variëren afhankelijk van de dikte van de plaat en het materiaal (bijv. voor een plaat van 2 mm in S235 staal: CODE = 02156 en DETAIL=Zwarte plaat van 2 mm dik - voor een plaat van 5 mm in roestvrij staal: CODE = 02582 en DETAIL=Roestvrijstalen plaat van 5 mm dik.
Vandaag kan ik alleen een macro maken die deze eigenschappen op het eerste artikel maakt, maar zonder een variabele waarde toe te kennen (ik kan niet veel samenvattend doen).
Ik weet dat ik veel vraag, maar het zou me veel tijd besparen.
Bij voorbaat dank,
Moe
Ter informatie, ik ben nog steeds op SolidWorks 2012
Goedenavond, zonder de macro zal het moeilijk zijn om het te verbeteren! Kunt u het in een tekstbestand plaatsen?
Maar ik denk dat het verstandiger zou zijn om je problemen op te splitsen en verschillende vragen te stellen: het zal voor iedereen duidelijker zijn en je zult veel meer antwoorden hebben in plaats van te vragen om een complete kant-en-klare macro!
De eerste vraag zou zijn: hoe controleer je met de PLC's of een onderdeel plaatwerk is?
De Mycad-ondersteuning heeft me zojuist verteld dat het niet mogelijk was om te filteren op basis van of het een plaatwerk of een mechanisch gelast element is. Maar ik denk dat het mogelijk moet zijn om te filteren op een andere eigenschap (bijvoorbeeld: wanneer je een blad maakt, maakt SW een eigenschap "Folds" aan die het in andere gevallen niet maakt).
In feite hebben we platen gemaakt van 304L roestvrij staal, 304L RUW ROESTVRIJ STAAL, 316L roestvrij staal en 316L RUW ROESTVRIJ STAAL en diktes van 1, 1,5, 2, 3 en 5 mm met een specifieke code voor elke plaat.
Ik wil graag een macro kunnen uitvoeren die automatisch een "CODE"-eigenschap toevoegt aan de hoofdtekst "Sheet" op basis van de gekozen dikte en het gekozen materiaal.
Is het je sindsdien gelukt om je macro aan de praat te krijgen?
Opmerking: Ik heb SolidWorks geconfigureerd in het Engels, dus u moet "Plaatwerkdikte" en "Materiaal" vervangen door de dikte en materiaaleigenschappen van de onderdelen.
Option Explicit
Sub main()
Dim swApp As SldWorks.SldWorks
Dim swModel As SldWorks.ModelDoc2
Dim swFeat As SldWorks.Feature
Dim custPrpMgr As SldWorks.CustomPropertyManager
Dim myThickness As String
Dim myMaterial As String
Dim myCode As String
Set swApp = Application.SldWorks
Set swModel = swApp.ActiveDoc
If swModel Is Nothing Then Exit Sub
Set swFeat = swModel.FirstFeature
While Not swFeat Is Nothing
If swFeat.GetTypeName2 = "CutListFolder" Then
Set custPrpMgr = swFeat.CustomPropertyManager
custPrpMgr.Get2 "Sheet Metal Thickness", "", myThickness
Debug.Print "Epaisseur: " & myThickness
custPrpMgr.Get2 "Material", "", myMaterial
Debug.Print "Materiel: " & myMaterial
Select Case myMaterial
Case "INOX 304L"
Select Case myThickness
Case "1"
myCode = "0001"
Case "1.5"
myCode = "0002"
Case "2"
myCode = "0003"
Case "3"
myCode = "0004"
Case "5"
myCode = "0005"
End Select
Case "INOX 304L BRUT"
Select Case myThickness
Case "1"
myCode = "0011"
Case "1.5"
myCode = "0012"
Case "2"
myCode = "0013"
Case "3"
myCode = "0014"
Case "5"
myCode = "0015"
End Select
Case "INOX 316L"
Select Case myThickness
Case "1"
myCode = "0021"
Case "1.5"
myCode = "0022"
Case "2"
myCode = "0023"
Case "3"
myCode = "0024"
Case "5"
myCode = "0025"
End Select
Case "INOX 316L BRUT"
Select Case myThickness
Case "1"
myCode = "0031"
Case "1.5"
myCode = "0032"
Case "2"
myCode = "0033"
Case "3"
myCode = "0034"
Case "5"
myCode = "0035"
End Select
End Select
Debug.Print "Code: " & myCode
Debug.Print
custPrpMgr.Delete "CODE"
custPrpMgr.Add2 "CODE", swCustomInfoType_e.swCustomInfoText, myCode
End If
Set swFeat = swFeat.GetNextFeature
Wend
End Sub