Pobierz nazwę pliku z właściwości niestandardowej

Witam 

Do nazywania moich plików używam dość podstawowej zasady: "numer planu- opis"


Czy jest możliwe, aby solidworks pobrać te dwie informacje w 2 różnych niestandardowych właściwościach za pomocą makra lub czegoś w tym rodzaju? 

Kiedyś używałem Creo i wykonanie tej manipulacji było dość proste, ale mam wrażenie, że z Solidworks jest to o wiele bardziej skomplikowane...

Z góry dziękuję za pomoc.

 

Witam

 

Tak, jest to możliwe, możesz uzyskać właściwości niestandardowe nadania, a nawet tę specyficzną dla konfiguracji.

Chcesz pobrać informacje o rysunku? Chcesz wypełnić właściwości niestandardowe na podstawie nazwy pliku? A może zrobić przycisk "zapisz", który zapisze plik zgodnie z właściwością "numer planu" i "opis"?

1 polubienie

Witam

Zasadniczo, aby pobrać nazwę pliku i umieścić ją we właściwości niestandardowej, możesz zrobić coś takiego:

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

Wszystko, co pozostaje, to przerobić tekst, który pobierasz z swModel.GetTitle, aby uzyskać 2 wartości, które Cię interesują i przechowywać te 2 wartości w 2 oddzielnych właściwościach.

Pozdrowienia

3 polubienia

Witam
Makro, takie jak to zaproponowane przez @d.roger, może załatwić sprawę.
Możesz również zapoznać się z prezentacją wszystkich narzędzi w pakiecie myCADtools. To około pięćdziesięciu narzędzi, które automatyzują powtarzalne zadania.
Narzędzie SmartProperties to narzędzie dla Ciebie!
Zapraszam do zapoznania się z tym dokumentem.
https://www.lynkoa.com/contenu/pr%C3%A9sentation-des-utilitaires-mycadtools-2018
Wszystkie narzędzia są kompatybilne z SW2016-2017 i 2018.
Pozdrowienia

1 polubienie

Cze wszystkim 

 

@mandragore, po prostu próbuję odzyskać informacje zawarte w nazwie pliku.

@d.Roger, rzeczywiście wydaje się (o ile słabo rozumiem VB), że to częściowo odpowiada na mój problem. Ponieważ nigdy nie korzystałem z makr w oprogramowaniu, postaram się sobie z tym wszystkim poradzić, będę Cię informował, jeśli uda mi się znaleźć rozwiązanie.

 

Dziękuję

Witam.

Jestem dokładnie w tym samym przypadku co Gérome.

@d. Propozycja rozwiązania Rogera wydaje mi się interesująca . Ale nigdy nie używałem makr i nie wiem od czego zacząć . I oczywiście nie mam podstaw, aby zrozumieć ich programowanie. Jeśli nie masz nic przeciwko temu, czy mógłbyś mi szczegółowo wyjaśnić, jak korzystać z tego makra.

Pozdrowienia.

Proste wyszukiwanie w Google i magia:

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

Dziękuję @sbadenis za tę odpowiedź, chociaż jest ona sarkastyczna.

Przeczytałem już tę stronę i zintegrowałem surowy kod dostarczony przez @d.roger z VBA.

Oczywiście próbowałem uruchomić makro tak, jak jest z solidworks, co nie zadziałało, jak możesz sobie wyobrazić.

Nie rozumiejąc tajników tego skryptu, nie wiem, co zmodyfikować, aby zadziałał w moim przypadku.

Podjąłem jednak drugą próbę, integrując nazwę mojego utworu zamiast "FileName" , która jest napisana na czerwono w oryginalnym tekście. Co nie wydaje się działać lepiej.

Chcę pobrać dwie właściwości niestandardowe z nazwy mojej części. Pierwsza z nich składa się z pierwszych 14 znaków tytułu mojego utworu, a druga z następujących po sobie znaków, które składają się na nazwę mojej części.

Jeśli ktokolwiek z obecnych zgodzi się wyjaśnić mi, jak to osiągnąć, z góry mu dziękuję.

 


st.png

Witam

Do uwagi "Oczywiście próbowałem uruchomić makro tak, jak jest z solidworks, co nie zadziałało, jak możesz sobie wyobrazić.", jesteś pewien, że to nie zadziałało? Ten fragment makra pozwala po prostu utworzyć właściwość niestandardową (w aktywnej konfiguracji) o nazwie "NazwaPliku", której wartością jest nazwa części, więc czy przeszedłeś do właściwości niestandardowych, aby sprawdzić, czy ta nowa właściwość została utworzona?

Tak więc, aby utworzyć 2 niestandardowe właściwości z nazwy pliku, musisz pobrać nazwę pliku za pomocą funkcji "swModel.GetTitle", a następnie przerobić tę wartość, aby przyciąć ją na 2 zgodnie z żądanym podziałem i na koniec zapisać każdy koniec tej wartości w 2 różnych właściwościach:

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

Pozdrowienia

3 polubienia

Bardzo dziękuję @d.roger za cenną pomoc.

Po opublikowaniu mojej drugiej wiadomości zauważyłem, że te wartości zostały utworzone we właściwościach specyficznych dla konfiguracji.

 

Dzięki Twoim wyjaśnieniom lepiej rozumiem Twoje skrypty.

A druga wersja sprawiła, że zrobiłem ogromne postępy, prawie uzyskuję pożądany rezultat.

Wszystko, co muszę teraz zrobić, to znaleźć sposób na odzyskanie wszystkich postaci po 14. Ponieważ liczba znaków odpowiadających numerowi części jest stała, w przeciwieństwie do liczby znaków w nazwie części.

Pozdrowienia.

Witam

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

Pozdrowienia

2 polubienia

Dziękuję za to wyjaśnienie. Wymyśliłem, jak przefiltrować rozszerzenie pliku, uniknąć kilku pierwszych znaków, tak aby w numerze planu pozostała mi tylko część odniesienia. Doskonały. Dziękuję bardzo.

Dzielę się więc ^^

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