Witam.
Często muszę odzyskać pliki 3D (krok) od dostawcy przemysłowego. W większości przypadków wysyłają mi one pliki kroków, które po otwarciu przez solidworks składają się ze złożeń, składających się z tych samych zespołów i części. Krótki...
Dzisiaj dla każdego z tych plików jestem zmuszony wejść w podzespoły, otworzyć wszystkie części, aby: 1- Usunąć ich wygląd. 2-Przypisz temat 3-Nagraj go. 4- Uczyń to wirtualnym.
Na koniec, gdy zespół głowicy jest otwarty, chcę po prostu kliknąć makro, które przekształca wszystkie pliki części pod katalogiem głównym i wszystkie inne zawarte w podzespołach wszystkich niższych poziomów.
Myślę, że za pomocą makra można wykonać wszystkie te operacje naraz i to bardzo szybko.
Niestety w ogóle nie znam makr Solidworks i nie jestem w stanie stworzyć odpowiedniego kodu.
Czy ktoś kiedykolwiek zrobił coś podobnego i mógłby mi pomóc.
Dziękuję.
Jérémy
Solidworks PDM 2015
Witaj Jérémy,
Aby uczynić pokój wirtualnym, istnieje metoda MakeVirtual2 (link).
Aby zastosować materiał, dostępna jest metoda SetMaterialProperty (link). Ale skąd wiesz, który z nich zastosować?
Chciałem to również zrobić w mojej pracy, ale z następującymi wariantami:
- - Bez gospodarki materiałowej;
- - Z usunięciem podzespołów, które zawierają tylko jeden podzespół lub część.
Nigdy mi się to nie udało, ponieważ pierwszym krokiem dla mnie było zerwanie zależności od oryginalnego pliku STEP. I o ile mi wiadomo, w API nie ma do tego funkcji (ani podczas importu, ani po). Gdy zrobisz to ręcznie podczas nagrywania makra, nie umieści ono niczego w pliku.
M.
Oto szkic, który konwertuje Krok na sldprt, usuwa wygląd, przypisuje materiał "AISI 304" i zapisuje w tym samym katalogu.
Option Explicit
Sub main()
Dim FilePath As String
FilePath = "C:\MyFiles\PartTest.step"
Dim swApp As SldWorks.SldWorks
Dim swModel As SldWorks.ModelDoc2
Set swApp = Application.SldWorks
Set swModel = swApp.LoadFile4(FilePath, Empty, Nothing, Empty)
swModel.SetMaterialPropertyName2 "Default", Empty, "AISI 304"
swModel.Extension.RemoveMaterialProperty swInConfigurationOpts_e.swAllConfiguration, Nothing
FilePath = Replace(FilePath, ".step", ".sldprt")
swModel.Extension.SaveAs FilePath, swSaveAsVersion_e.swSaveAsCurrentVersion, swSaveAsOptions_e.swSaveAsOptions_Silent, Nothing, Empty, Empty
End Sub
2 polubienia
Nie mam nic przeciwko otwarciu kroku w solidworks. I o ile mi wiadomo, plik sldasm nie utrzymuje linku z krokiem.
Problem polega również na tym, że kiedy otwieram krok w solidworks, w pliku sldasm, który otrzymuję, znajdują się albo inne złożenia, albo części. I że jeśli chcę, aby były wirtualne, muszę je wcześniej otworzyć. To strata znacznej ilości czasu.
Jest makrem, które jest w stanie otworzyć plik, zmienić jego wygląd, materiał, a następnie go zamknąć. Następnie otwórz inny plik należący do zespołu głównego, ponownie wykonaj te same operacje i tak dalej, aż do ostatniego pliku. I na koniec, aby usunąć wszystkie pliki tymczasowe należące do oryginalnego pliku kroku wygenerowanego podczas otwierania pliku za pomocą solidworks, a także usunąć krok.
Dziękuję za pomoc.
Jérémy
Tak, można do tego zrobić makro
Witam, mam podstawowe makro do zmiany nazw części i podzbiorów, które są już virtual.in 1 2 3 itd
w SW2018 zestawy ze stepu są już wirtualne, więc nie mam tego kroku jak w SW 2015
renommer_virtuel.swp
2 polubienia
Istnieje połączenie, które jest utrzymywane z oryginalną oczyszczalnią ścieków, dla części lub zespołów. Dotyczy to jednak Solidworks 2017:
http://help.solidworks.com/2019/french/SolidWorks/sldworks/t_break_link_from_original_file.htm
Może to jednak nie stanowić problemu dla Twojej firmy. Jedynym ryzykiem jest to, że oczyszczalnia ścieków połączy dwie odrębne części/zespoły w dwóch projektach i że będą modyfikacje krzyżowe (miałem taki przypadek).

Dziękuję za odpowiedzi.
Na razie nie mogę iść dalej. Za kilka miesięcy mamy przejść na Solidworks 2019 (tak, wiem, że jesteśmy w 2020 roku!!) i tak zgodnie z tym, co mówi G.casters, nie będziemy już mieli problemu z transformacją plików części/tymczasowych złożeń na pliki wirtualne.
Potem wezmę kilka linijek kodu od Jerome.P i mgauroy, aby spróbować pomajstrować przy czymś, co może zadziałać.