Erstellen einer Blechdickeneigenschaft mit BatchProperties

Hallo

Um die Eigenschaften meiner alten Teile zu aktualisieren, möchte ich BatchProperties verwenden, um eine " THICKNESS " -Eigenschaft zu erstellen, die auf die Dicke meines Teils festgelegt ist. Ich möchte diese neue Immobilie en masse auf unseren Stücken schaffen.

Wenn ich die Eigenschaft mit batchproperties erstelle, wird sie generiert, hat aber keinen Wert:

Ich habe versucht, die Dicke des Teils auf verschiedene Weise meiner Eigenschaft zuzuweisen: "Wert einer Solidworks-Eigenschaft" oder "Wert 1. Artikelliste der geschweißten Teile", aber das Problem besteht weiterhin.

Hat jemand die Lösung für mein Problem?

Vielen Dank

Herzliche Grüße

Hallo;

Derzeit, wenn ich mich auf die Screenshots verlasse, bitten Sie BatchProperties, den Wert der Eigenschaft " Thickness " abzurufen, um die Eigenschaft " Thickness" zu erstellen, dies kann nicht funktionieren ...
Wenn es sich bei Ihren älteren Teilen tatsächlich um Blechbauteile handelt, wird die Dicke in die globalen Variablen (Gleichung) oder in die Eigenschaften der Schweißteileliste " Blechdicke " geschrieben, z. B. " SW-tôlerie@@ Dicke@Article-Schweißteileliste1@LeNomdelaPièce.SLDPRT "
(Klicken Sie mit der rechten Maustaste auf die Liste der Teile, die in eines Ihrer Blechteile eingeschweißt sind).
: "Es ist also der eine oder andere Wert, auf den wir setzen müssen.

Im Moment weiß ich nicht, wie ich das mit den MyCad-Tools machen soll (wahrscheinlich wäre ein Makro am praktischsten)... Ich schaue mal auf meine Seite, aber wenn jemand in der Zwischenzeit eine Idee hat...

Hier finden Sie eine Makrospur zum Anpassen:
https://www.codestack.net/solidworks-api/data-storage/custom-properties/link-sheet-metal/
Oder noch einfacher mit dem Makro unserer Freunde @JeromeP :

1 „Gefällt mir“

Hallo

Vielen Dank für diese Information.

In den myCAD-Tools kann ich die Dicke über die sw-Variablen finden:

Aber in Batchproperties habe ich keinen Zugriff auf SW-Variablen.

Ich werde versuchen, ein Makro zu erstellen und es dann in großen Mengen anzuwenden.

Die Lösung, die ich verwende, ist etwas wackelig

Wenn mehrere Blechkörper russisches Roulette sein sollen, das Beste: 1 einzelnes Stück Blech

Manchmal funktioniert das Makro nicht
insbesondere dann, wenn der Name des Blechteils: Liste der geschweißten Teile umbenannt wird
generell teste ich das Makro direkt in SW Ich prüfe, ob die Eigenschaften kopiert werden, ich starte bei Bedarf mehrmals neu und zähle, wie oft ich das Makro starten musste

Seit der Integration führe ich die Anzahl der Male aus, die ich es manuell gemacht habe (an anderen Teilen)

Es ist etwas wackelig, erstellen Sie eine Stückliste mit den Eigenschaften und öffnen und starten Sie das Makro manuell an den wenigen Teilen, an denen es einen PB gibt

Dieses Makro funktioniert nicht für ältere Versionen von SW, Sie können Merkwürdigkeiten in den Eigenschaften der gelöteten Teile lesen, insbesondere wenn das Teil kopiert und umbenannt wird, der alte Teilename erscheint und selbst wenn Sie den neuen manuell eingeben, funktioniert es nicht

Dies liegt meiner Meinung nach an der Tatsache, dass es in SW keinen fest codierten Namen (im Englischen) gibt, der auf diese Weise identifizierbar ist, im Gegensatz zum Namen von Funktionen, die, selbst wenn sie umbenannt werden, einen Standardnamen im Englischen beibehalten, wie die Einschränkungen ... (ein Makro, an dem ich gearbeitet habe, um Funktionen umzubenennen, die aus anderen Sprachen heruntergeladen wurden)

Option Explicit
Dim swApp As SldWorks.SldWorks
Dim swModel As SldWorks.ModelDoc2
Dim swFeat As SldWorks.Feature
Dim swCustPropMgr As SldWorks.CustomPropertyManager
Dim cutListCustPropMgr As SldWorks.CustomPropertyManager
Dim PROP_TOLERIE As Variant
Dim PROP_PERSO As Variant
Dim i As Integer

Sub Copie_01()
'Copie les propriétés de pièces soudées vers propriétés personnalisées

Set swApp = Application.SldWorks
Set swModel = swApp.ActiveDoc

If (swModel.GetType <> 1) Then '1 = pièce, 2 = assemblage, 3 = plan
MsgBox "Pièce uniquement", vbInformation
Exit Sub
End If


PROP_TOLERIE = Array("Longueur du flanc de tôle", "Largeur du flanc de tôle", "Longueur à découper extérieure", _
               "Longueur à découper des boucles intérieures", "Découpes", "Plis")
PROP_PERSO = Array("Long flanc", "Larg flanc", "Long découpe ext.", _
             "Long découpe int.", "Découpes", "Plis")


Set swCustPropMgr = swModel.Extension.CustomPropertyManager("")

For i = 0 To UBound(PROP_PERSO)
swCustPropMgr.Delete PROP_PERSO(i)
Next i

swCustPropMgr.Delete "Epaisseur"
swCustPropMgr.Add2 "Epaisseur", swCustomInfoType_e.swCustomInfoText, """" & "Epaisseur@" & swModel.GetTitle() & ".SLDPRT" & """"

Set swFeat = swModel.FirstFeature
Do While Not swFeat Is Nothing
Debug.Print swFeat.GetTypeName

If swFeat.GetTypeName = "CutListFolder" Then
Dim swBodyFolder As SldWorks.BodyFolder
Set swBodyFolder = swFeat.GetSpecificFeature2
swBodyFolder.SetAutomaticCutList (True)
swBodyFolder.UpdateCutList
Set cutListCustPropMgr = swFeat.CustomPropertyManager
    
    For i = LBound(PROP_TOLERIE) To UBound(PROP_TOLERIE)
    Dim valOut As String
    Dim resolvedValOut As String
    cutListCustPropMgr.Get4 PROP_TOLERIE(i), True, valOut, resolvedValOut
        
        If valOut <> "" Then
        swCustPropMgr.Add2 PROP_PERSO(i), swCustomInfoType_e.swCustomInfoText, valOut
        End If
        
    Next i
End If
Set swFeat = swFeat.GetNextFeature
Loop
End Sub