Ich werde Hilfe brauchen, ich habe eine ganze Weile daran gearbeitet, ohne voranzukommen.
Ich möchte ein Makro erstellen, das die Eigenschaften der geschweißten Teileliste automatisch mit einigen spezifischen Eigenschaften füllt. Hier ist der Algorithmus, den ich mit dem Makro ausführen möchte.
- Erkennen Sie in der Liste der geschweißten Teile, bei denen es sich um Bleche handelt
- Wenn es sich um ein Blech handelt, stellen Sie die Dicke des Blechs und des Materials wieder her.
- Erstellen Sie zwei Eigenschaften "CODE" und "DETAIL", deren Werte je nach Dicke des Blechs und des Materials variieren (z.B. für ein 2mm Blech aus S235 Stahl: CODE = 02156 und DETAIL=Schwarzes Blech 2mm dick - für ein 5mm Blech aus Edelstahl: CODE = 02582 und DETAIL=Edelstahlblech 5mm dick.
Heute kann ich nur ein Makro erstellen, das diese Eigenschaften im ersten Artikel erstellt, aber ohne einen Variablenwert zuzuweisen (zusammenfassend kann ich nicht viel tun).
Ich weiß, ich frage viel, aber es würde mir viel Zeit sparen.
Danke im Voraus,
Moe
Zu Ihrer Information, ich bin immer noch bei SolidWorks 2012
Guten Abend, ohne das Makro wird es schwierig sein, es zu verbessern! Können Sie es bitte in einer Textdatei posten?
Aber ich denke, es wäre klüger, Ihre Probleme aufzuschlüsseln, indem Sie mehrere Fragen stellen: Es wird für alle klarer sein und Sie werden viel mehr Antworten haben, anstatt nach einem kompletten vorgefertigten Makro zu fragen!
Die erste Frage wäre: Wie prüft man mit den SPS, ob es sich bei einem Teil um Blech handelt?
Der Mycad-Support hat mir gerade mitgeteilt, dass es nicht möglich ist, danach zu filtern, ob es sich um ein Blech oder ein mechanisch geschweißtes Element handelt. Aber ich denke, es muss möglich sein, nach einer anderen Eigenschaft zu filtern (Beispiel: Wenn Sie ein Blatt erstellen, erstellt SW eine "Folds"-Eigenschaft, die in anderen Fällen nicht erstellt wird).
In der Tat haben wir Bleche aus Edelstahl 304L, 304L ROHSTAHL, 316L Edelstahl und 316L ROHSTAHL in Stärken von 1, 1,5, 2, 3 und 5 mm mit einem spezifischen CODE für jedes Blech.
Ich möchte in der Lage sein, ein Makro auszuführen, das dem "Blatt"-Körper basierend auf der gewählten Dicke und dem ausgewählten Material automatisch eine "CODE"-Eigenschaft hinzufügt.
Haben Sie es seitdem geschafft, Ihr Makro zum Laufen zu bringen?
Anmerkung: Ich habe SolidWorks auf Englisch konfiguriert, daher müssen Sie "Blechdicke" und "Material" durch die Dicke und die Materialeigenschaften der Teile ersetzen.
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