Macro om eigenschappen toe te voegen op basis van plaatdikte

Hoi allemaal

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

2 likes

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?

1 like

Hallo

Ja, stuur ons de reeds gemaakte macro zodat we gemakkelijker kunnen begeleiden.

En het doel van het forum is ook om veel te vragen en vervolgens veel te geven :)

Bedankt voor je feedback.

Hier is de macro op dit punt bijgevoegd.

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).


20160125_-_copie.swp

Hallo

Ik probeer precies hetzelfde te doen.

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?

Bij voorbaat dank,

Lionel

Hallo. Probeer de onderstaande code.

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

 

 

 

Bedankt, ik heb het geprobeerd... Hij heeft mijn "CODE" -eigenschap gemaakt, maar niets in waarde.

Mijn eigenschappen zijn:

Naam van de eigenschap: "Dikte van het plaatwerk" voor dikte

Naam van de eigenschap: "Materiaal" voor materiaal

En ik zou graag willen dat het een eigenschap maakt waarvan de naam "GPAO_BRUT" zou zijn met mijn verschillende codes als waarde.

Bij voorbaat dank,

Lionel

Het is oké, het werkt... Ik nam een verkeerde variabele voor mijn onderwerp.

Hartelijk dank.