Tworzenie właściwości grubości arkusza blachy za pomocą właściwości BatchProperties

Witam

Aby zaktualizować właściwości moich starych części, chciałbym użyć BatchProperties do utworzenia właściwości " THICKNESS ", która jest ustawiona na grubość mojej części. Chciałbym stworzyć tę nową nieruchomość masowo na naszych elementach.

Gdy tworzę właściwość za pomocą batchproperties, jest ona generowana, ale nie ma wartości:

Próbowałem przypisać grubość części do mojej właściwości na kilka sposobów: "Wartość właściwości Solidworks" lub "Wartość 1. artykułu lista spawanych części", ale problem nadal występuje.

Czy ktoś ma rozwiązanie mojego problemu?

Dziękuję

Pozdrowienia

Witam;

Obecnie, jeśli polegam na zrzutach ekranu, prosisz BatchProperties o pobranie wartości właściwości " Thickness " w celu utworzenia właściwości " Thickness", to nie może zadziałać...
Jeśli starsze części są rzeczywiście komponentami arkusza blachy, grubość jest zapisywana w zmiennych globalnych (równaniu) lub we właściwościach listy części spawanych " Grubość blachy ", takich jak " SW-tôlerie@@ Grubość@Article-Lista-części-spawanych1@LeNomdelaPièce.SLDPRT "
(Kliknij prawym przyciskiem myszy listę części przyspawanych do jednej z części arkusza blachy).
: "Więc jest to taka czy inna wartość, do której będziemy musieli się zdecydować.

Na razie nie wiem, jak to zrobić za pomocą narzędzi MyCad (chyba najpraktyczniejsze byłoby makro)... Będę patrzył na swoją stronę, ale jeśli ktoś ma jakiś pomysł w międzyczasie...

Ścieżka makro do dostosowania tutaj:
https://www.codestack.net/solidworks-api/data-storage/custom-properties/link-sheet-metal/
A jeszcze prościej z makro naszych przyjaciół @JeromeP :

1 polubienie

Witam

Dziękuję za tę informację.

W narzędziach myCAD mogę znaleźć grubość za pomocą zmiennych sw:

Ale w Batchproperties nie mam dostępu do zmiennych oprogramowania.

Postaram się stworzyć MAKRO, a następnie zastosować je zbiorczo.

Rozwiązanie, którego używam, jest trochę chwiejne

Jeśli kilka blaszanych ciał będzie rosyjską ruletką, najlepiej: 1 pojedynczy kawałek blachy

Czasami makro nie działa
zwłaszcza, jeśli nazwa części arkusza blachy: Lista części spawanych zostanie zmieniona
generalnie testuję makro bezpośrednio w SW sprawdzam, czy właściwości są skopiowane, w razie potrzeby restartuję kilka razy i liczę, ile razy musiałem uruchomić makro

od czasu integracji uruchamiam tyle razy, ile razy zrobiłem to ręcznie (na innych częściach)

Jest trochę chwiejny, utwórz zestawienie materiałów z właściwościami, a następnie otwórz i ręcznie uruchom makro w kilku częściach, w których znajduje się PB

to makro nie działa dla starszych wersji oprogramowania, można odczytać dziwactwa we właściwościach lutowanych części, zwłaszcza jeśli część zostanie skopiowana i zmieniona nazwa, pojawi się stara nazwa części i nawet jeśli ręcznie wstawisz nową, nie działa

wynika to moim zdaniem z faktu, że w SW nie ma zakodowanej na stałe nazwy (w języku angielskim) i można ją w ten sposób zidentyfikować, w przeciwieństwie do nazw funkcji, które nawet jeśli zostaną przemianowane, zachowują domyślną nazwę w języku angielskim, tak jak ograniczenia ... (makro, nad którym pracowałem, aby zmienić nazwy funkcji pobranych z innych języków)

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