Makro do zmiany nazwy zespołu i jego komponentów

Witam

 

Chciałbym utworzyć makro w Solidworks, aby zmienić nazwę złożenia i jego komponentów zgodnie z następującą zasadą:

"Numer projektu-ES00" do montażu

"Numer projektu-ES0i" dla i-tego podzespołu (1. poziom)

"Numer projektu-ES0i-C00j" dla j-tej części i-tego podzespołu (2. poziom)

 

Na przykład drzewo tworzenia powinno wyglądać następująco:

INT846-ES00

INT846-ES01

INT846-ES01-C001

INT846-ES01-C002

INT846-ES01-C003

INT846-ES01-C004

INT846-ES02

INT846-ES02-C001

INT846-ES02-C002

INT846-ES03

INT846-ES04

 

Potrafię zakodować zasadę rekurencji w VBA, ale nie wiem, jak ponownie zarejestrować zestaw i jego komponenty, biorąc pod uwagę drzewo jako całość. Wtedy nie wiem, jak przejść przez drzewo tworzenia danego zgromadzenia.

 

Jeśli macie jakieś propozycje, jestem do dyspozycji!

 

Dziękuję tym, którzy odpowiedzą na moje pytanie.

 

PS: Używam Solidworks 2013

 

 

 

 

 

 

 

 

Witam, przypadkiem nie możesz tego użyć?

 

http://www.lynkoa.com/store/fr/tools-et-macros/utilitaires/utilitaire-projectmanager.html

1 polubienie
Kierownik projektu musi wiedzieć, jak to zrobić
2 polubienia

Dziękuję za szybkość odpowiedzi.

Nie znam się na ProjectManagerze. Podążając za linkiem, zobaczyłem, że narzędzie jest płatne.

Czy nie ma darmowego lub tańszego sposobu?

Witam

 

 

Kod powinien wyglądać następująco:

 

Sub Main()

Dim swApp jako SldWorks.SldWorks
Przyciemnij dokument jako SldWorks.ModelDoc2
Dim retval() As String
Przyciemnij tekst jako ciąg
Dim name() jako ciąg

Ustaw swApp = CreateObject("SldWorks.Application")
Ustaw dokument = swApp.ActiveDoc
 

retval = Document.GetDependencies2(Fałsz, Prawda, Fałsz)

'Wiersze mają zawierać tylko nazwy plików
Nazwa ReDim(1 TB ((UBound(retval) - 1) / 2) + 1)
Dla i = 0 TB (UBound(retval) - 1) / 2 
   Tekst = Tekst & retval(2 * i) & vbCr
   Nazwa(i + 1) = retval(2 * i) 
Dalej i
i = 0

 

Tekst w polu MsgBox

Koniec subwoofera

 

 

Źródło: http://www.forum-cao-3d.fr/viewtopic.php?t=5432

 

 

Jeśli masz inne pytania dotyczące makr, możesz zadać kolejne pytanie dotyczące Lynkoa!

Witam

 

W zasadzie najbardziej efektywnym rozwiązaniem byłaby zmiana nazw plików poza oprogramowaniem, a następnie przekierowanie zewnętrznych odniesień do dokumentów...

 

Jest to jednak skomplikowane dla qlq, który nie ma  tak wielu interfejsów API oprogramowania

 

Najprostszą stroną rozwoju jest otwarcie zestawu i przeglądanie komponentów, a następnie zapisanie każdego z dokumentów, ponieważ główny zestaw jest otwarty, oprogramowanie samo przekieruje referencje ...

Po prostu będą stare pliki ze starymi nazwami, które zostaną usunięte ręcznie

 

Aby utworzyć rekurencję na komponentach (przejdź przez całe drzewo złożenia) 

 

pobierz próbkę z pomocy interfejsu API 

"Przykład złożenia ciągu poligonowego na poziomie komponentu (VBA)"

 

Punktem wejścia dla marco jest procedura MAin

 

W tym przykładzie funkcja TraverseComponent zostanie wykonana na każdym komponencie, obiekt swComp zawiera komponent, a zmienna nLevel zawiera poziom komponentu w drzewie (np. 1 dla 1. poziomu, 2 dla komponentu podzespołu, 3 itd. ...)

 

musisz jeszcze dodać kod rejestracyjny dokumentu (dokument jest uzyskiwany z "komponentu" przez API GetmodelDoc)

 

Należy zachować ostrożność, aby zarządzać wystąpieniami komponentów (ten sam składnik może być obecny kilka razy), tylko pierwsze wystąpienie powinno być przetwarzane

 

 

8 polubień

Witam

 

Jfradon, poszedłem za twoją radą. I napisałem makro, które zmierza w kierunku tego, czego chcę.

 

Ale nie mogę zapisać modelu moich komponentów.

Mam błąd w (swCompModel.SaveAs2 NewFilePath, 0, False, False)

 

 


renommer_fichier.txt

...

Nie mogę anulować DSL

Tak, makro wygląda dla mnie dobrze

Po prostu musisz inaczej zarządzać komponentami 1° (komponentami głównymi głównego zespołu) 

W rzeczywistości nie jest to komponent 

więc jeśli po

Ustaw swCompModel = swComp.GetModelDoc

 

swCompModel  to nic takiego, więc nie używaj swCompModel  , ale swModel, który jest dokumentem montażowym

7 polubień

Jeśli wszystko jest w porządku, czy zamykasz pozycję?

4 polubienia