Bestandsnaam ophalen uit aangepaste eigenschap

Hallo 

Om mijn bestanden een naam te geven gebruik ik een vrij eenvoudige regel: "plannummer- beschrijving"


Is het mogelijk met solidworks om deze twee stukjes informatie op te halen in 2 verschillende aangepaste eigenschappen met een macro of iets dergelijks? 

Vroeger gebruikte ik Creo en het was vrij eenvoudig om deze manipulatie uit te voeren, maar ik heb de indruk dat het met Solidworks veel ingewikkelder is...

Bij voorbaat dank voor uw hulp.

 

Hallo

 

Ja, het is mogelijk, u kunt de aangepaste eigenschappen geven en zelfs degene die specifiek is voor de configuratie.

Wilt u tekeninginformatie ophalen? Wilt u aangepaste eigenschappen invullen op basis van de bestandsnaam? Of maak een 'save' knop die het bestand opslaat volgens de eigenschap 'plannummer' en 'description'?

1 like

Hallo

Om de bestandsnaam op te halen en in een aangepaste eigenschap te plaatsen, kunt u in principe iets als dit doen:

Dim swApp As Object
Dim swModel As ModelDoc2
Dim config As SldWorks.Configuration
Dim swCustProp As CustomPropertyManager
Dim lRetVal As Long

Sub main()
    Set swApp = Application.SldWorks
    Set swModel = swApp.ActiveDoc
    Set config = swModel.GetActiveConfiguration
    Set cusPropMgr = config.CustomPropertyManager
    lRetVal = cusPropMgr.Add3("FileName", swCustomInfoType_e.swCustomInfoText, swModel.GetTitle, swCustomPropertyAddOption_e.swCustomPropertyDeleteAndAdd)
End Sub

Het enige dat overblijft is om de tekst die u ophaalt uit het swModel.GetTitle te herwerken om de 2 waarden te krijgen waarin u geïnteresseerd bent en deze 2 waarden op te slaan in 2 afzonderlijke eigenschappen.

Vriendelijke groeten

3 likes

Hallo
Een macro zoals voorgesteld door @d.roger kan de truc doen.
U kunt ook een kijkje nemen in de presentatie van alle tools in de myCADtools-suite. Dit zijn ongeveer vijftig hulpprogramma's die repetitieve taken automatiseren.
Het hulpprogramma SmartProperties is de tool voor jou!
Ik nodig u uit om dit document te bekijken.
https://www.lynkoa.com/contenu/pr%C3%A9sentation-des-utilitaires-mycadtools-2018
Alle tools zijn SW2016-2017 en 2018 compatibel.
Vriendelijke groeten

1 like

Hoi allemaal 

 

@mandragore, ik probeer alleen de informatie in de bestandsnaam op te halen.

@d.Roger, het lijkt er inderdaad op (zo min als ik VB begrijp) dat dit mijn probleem gedeeltelijk beantwoordt. Omdat ik nog nooit macro's op SW heb gebruikt, zal ik proberen hiermee om te gaan, ik zal je op de hoogte houden als ik een oplossing kan vinden.

 

Bedankt

Hallo.

Ik zit in precies hetzelfde geval als Gérome.

@d. Het voorstel van Roger voor een oplossing lijkt me interessant. Maar ik heb nog nooit macro's gebruikt en ik weet niet waar ik moet beginnen. En natuurlijk heb ik niet de basis om hun programmering te begrijpen. Als je het niet zo erg vindt, kun je me dan in detail uitleggen hoe ik deze macro moet gebruiken.

Vriendelijke groeten.

Een eenvoudige Google-zoekopdracht en magie:

http://help.solidworks.com/2018/french/SolidWorks/sldworks/c_recording_playing_macros.htm?verRedirect=1

Bedankt @sbadenis voor deze reactie, hoewel het sarcastisch is.

Ik had deze pagina al gelezen en de onbewerkte code van @d.roger in VBA geïntegreerd.

Ik heb duidelijk geprobeerd de macro uit te voeren zoals deze van solidworks is, wat niet werkte, zoals je je kunt voorstellen.

Omdat ik de ins en outs van dit script niet begrijp, weet ik niet wat ik moet aanpassen om het in mijn geval te laten werken.

Ik heb echter een tweede poging gedaan door de naam van mijn stuk te integreren in plaats van de "FileName" die in de originele tekst in het rood staat. Wat niet beter lijkt te hebben gewerkt.

Ik wil twee aangepaste eigenschappen ophalen uit de naam van mijn onderdeel. De eerste heeft de eerste 14 tekens van de naam van mijn stuk en de tweede de volgende tekens die de naam van mijn deel vormen.

Als iemand hier ermee instemt om mij uit te leggen hoe ik dit kan bereiken, bedank ik hem bij voorbaat.

 


st.png

Hallo

Op de opmerking "Ik heb natuurlijk geprobeerd de macro uit te voeren zoals die is van solidworks, wat niet werkte, zoals je je kunt voorstellen.", weet je zeker dat het niet werkte? Met dit stukje macro kunt u gewoon een aangepaste eigenschap maken (in de actieve configuratie) met de naam "FileName" waarvan de waarde de naam van het onderdeel is, dus ben je naar de aangepaste eigenschappen gegaan om te zien of deze nieuwe eigenschap is gemaakt?

Dus om 2 aangepaste eigenschappen van de bestandsnaam te maken, moet u de bestandsnaam ophalen met de functie "swModel.GetTitle", vervolgens deze waarde herwerken om deze in 2 te knippen volgens de gewenste divisie en ten slotte elk uiteinde van deze waarde opslaan in 2 verschillende eigenschappen:

Dim swApp As Object
Dim swModel As ModelDoc2
Dim config As SldWorks.Configuration
Dim swCustProp As CustomPropertyManager
Dim lRetVal As Long
Dim maValeur0 As String
Dim maValeur1 As String
Dim maValeur2 As String

Sub main()
    Set swApp = Application.SldWorks
    Set swModel = swApp.ActiveDoc
    maValeur0 = swModel.GetTitle 'On récupère le nom du fichier
    maValeur1 = Left(maValeur0, 8) 'On récupère les 8 premiers caractères du nom du fichier
    maValeur2 = Right(maValeur0, 12) 'On récupère les 12 derniers caractères du nom du fichier
    Set config = swModel.GetActiveConfiguration
    Set cusPropMgr = config.CustomPropertyManager
    lRetVal = cusPropMgr.Add3("MaPropriete-1", swCustomInfoType_e.swCustomInfoText, maValeur1, swCustomPropertyAddOption_e.swCustomPropertyDeleteAndAdd)
    lRetVal = cusPropMgr.Add3("MaPropriete-2", swCustomInfoType_e.swCustomInfoText, maValeur2, swCustomPropertyAddOption_e.swCustomPropertyDeleteAndAdd)
End Sub

Vriendelijke groeten

3 likes

Heel erg bedankt @d.roger voor je kostbare hulp.

Na het plaatsen van mijn tweede bericht, merkte ik dat deze waarden waren aangemaakt in de configuratie-specifieke eigenschappen.

 

Dankzij je uitleg begrijp ik je scripts beter.

En de tweede versie heeft me enorm vooruit gebracht, ik krijg bijna het gewenste resultaat.

Het enige wat ik nu nog moet doen is een manier vinden om alle personages na de 14e te herstellen. Aangezien het aantal tekens dat overeenkomt met het onderdeelnummer constant is, in tegenstelling tot het aantal tekens in de onderdeelnaam.

Vriendelijke groeten.

Hallo

maValeur0 = swModel.GetTitle
maValeur1 = Left(maValeur0, 14)
maValeur2 = Right(maValeur0, Len(maValeur0) - Len(maValeur1))

Vriendelijke groeten

2 likes

Dank u voor deze verduidelijking. Ik heb bedacht hoe ik de bestandsextensie kan filteren, vermijd de eerste paar tekens zodat ik slechts een deel van de referentie in het plannummer heb. Perfect. Hartelijk dank.

Dus ik deel ^^

Dim swApp As Object
Dim swModel As ModelDoc2
Dim config As SldWorks.Configuration
Dim swCustProp As CustomPropertyManager
Dim lRetVal As Long
Dim maValeur0 As String
Dim maValeur1 As String
Dim maValeur2 As String
Dim maValeur3 As String
Dim maValeur4 As String
Dim maValeur5 As String
Dim maValeur6 As String
Dim maValeur7 As String



Sub main()
    Set swApp = Application.SldWorks
    Set swModel = swApp.ActiveDoc
    maValeur0 = swModel.GetTitle 'On récupère le nom du fichier
    maValeur1 = Left(maValeur0, 6) 'On récupère les 6 premiers caractères du nom du fichier'
    maValeur2 = Left(maValeur0, 12) 'On récupère les 12 premiers caractères du nom du fichier'
    maValeur3 = Right(maValeur2, Len(maValeur2) - Len(maValeur1)) '2 moins 1 pour avoir le n° du plan'
    maValeur4 = Right(maValeur0, 7) 'On récupère l'extension'
    maValeur5 = Left(maValeur0, 13) 'On récupère les 13 premiers caractères du nom du fichier'
    maValeur6 = Right(maValeur0, Len(maValeur0) - Len(maValeur5)) 'On récupére tout au delà du 13éme caractére'
    maValeur7 = Left(maValeur6, Len(maValeur6) - Len(maValeur4)) 'on enlève l'extention du fichier à 5'
    Set config = swModel.GetActiveConfiguration
    Set cusPropMgr = config.CustomPropertyManager
    lRetVal = cusPropMgr.Add3("N° plan", swCustomInfoType_e.swCustomInfoText, maValeur3, swCustomPropertyAddOption_e.swCustomPropertyDeleteAndAdd)
    lRetVal = cusPropMgr.Add3("Nom de la pièce", swCustomInfoType_e.swCustomInfoText, maValeur7, swCustomPropertyAddOption_e.swCustomPropertyDeleteAndAdd)
End Sub