Een eigenschap Plaatdikte maken met BatchProperties

Hallo

Om de eigenschappen van mijn oude onderdelen bij te werken, wil ik BatchProperties gebruiken om een eigenschap " DIKTE " te maken die is ingesteld op de dikte van mijn onderdeel. Ik zou dit nieuwe eigendom massaal op onze stukken willen creëren.

Wanneer ik de eigenschap met batcheigenschappen maak, wordt deze gegenereerd, maar heeft deze geen waarde:

Ik heb op verschillende manieren geprobeerd de dikte van het onderdeel aan mijn eigenschap toe te wijzen: "Waarde van een Solidworks-eigenschap" of "Waarde 1e artikel: lijst van gelaste onderdelen", maar het probleem blijft bestaan.

Heeft iemand de oplossing voor mijn probleem?

Bedankt

Vriendelijke groeten

Hallo;

Als ik momenteel op de schermafbeeldingen vertrouw, vraag je BatchProperties om de waarde van de eigenschap " Dikte " op te halen om de eigenschap " Dikte" te maken, dit kan niet werken...
Als uw oudere onderdelen inderdaad plaatwerkcomponenten zijn, wordt de dikte geschreven in de globale variabelen (vergelijking), of in de eigenschappen van de gelaste onderdelenlijst " Plaatwerkdikte " zoals " SW-tôlerie@@ Dikte@Article-Gelaste-onderdelenlijst1@LeNomdelaPièce.SLDPRT "
(klik met de rechtermuisknop op de lijst met onderdelen die in een van uw plaatwerkonderdelen zijn gelast).
: "Het is dus een of andere waarde waar we voor zullen moeten gaan.

Voorlopig weet ik niet hoe ik het moet doen met de MyCad-tools (waarschijnlijk met een macro zou het meest praktisch zijn)... Ik zal van mijn kant kijken, maar als iemand in de tussentijd een idee heeft...

Een macro-track om hier aan te passen:
https://www.codestack.net/solidworks-api/data-storage/custom-properties/link-sheet-metal/
Of nog eenvoudiger met de macro van onze vrienden @JeromeP :

1 like

Hallo

Bedankt voor deze informatie.

Op de myCAD tools kan ik de dikte vinden via de sw variabelen:

Maar in Batchproperties heb ik geen toegang tot SW-variabelen.

Ik probeer een MACRO te maken en deze vervolgens in bulk toe te passen.

De oplossing die ik gebruik is een beetje wiebelig

Als meerdere plaatwerkcarrosserieën Russische roulette zijn, de beste: 1 enkel stuk plaatwerk

Soms werkt de macro niet
vooral als de naam van het plaatwerkonderdeel: Lijst met gelaste onderdelen wordt hernoemd
over het algemeen test ik de macro rechtstreeks in SW, ik controleer of de eigenschappen zijn gekopieerd, ik herstart indien nodig, meerdere keren en ik tel het aantal keren dat ik de macro moest starten

sinds de integratie voer ik het aantal keren uit dat ik het handmatig heb gedaan (op andere onderdelen)

Het is een beetje wiebelig, maak een stuklijst met de eigenschappen en open en start de macro handmatig op de weinige onderdelen waar een PB staat

deze macro werkt niet voor oudere versies van SW, u kunt eigenaardigheden lezen in de eigenschappen van de gesoldeerde onderdelen, vooral als het onderdeel wordt gekopieerd en hernoemd, de oude onderdeelnaam verschijnt en zelfs als u de nieuwe handmatig plaatst, werkt deze niet

dit is naar mijn mening te wijten aan het feit dat er in SW geen hardgecodeerde naam is (in het Engels) en op deze manier kan worden geïdentificeerd, in tegenstelling tot de naam van functies die, zelfs als ze worden hernoemd, een standaardnaam in het Engels behouden, zoals de beperkingen ... (een macro waar ik aan heb gewerkt om functies te hernoemen die uit andere talen zijn gedownload)

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