Autor | Wypowiedź |
Konstruktor
2012-12-19, 17:35
Pomógł 0 raz(y).
|
Witam, wiem, że jest obszerna baza makr na różny temat, które sobie można darmowo pobrać jednak nie wiem jak znaleźć o ile istnieje takie makro jak bym potrzebował. A potrzebowałbym makro, które podciąga nazwę pliku do właściwości. Przykład: zapisuję sobie nowo utworzoną część z nazwą 143.12.01.1 Wałek 1 i po uruchomieniu makra liczba w nazie (143.12.01.1) jest wklejana we właściwościach części jako PartNo a 'Wałek 1' jako Description. Mam tak w pracy, na pewno wszyscy też tak mają. Ja chciałbym sobie zrobić taką uproszczoną wersję, któraby mi podciągała te dwa elementy do właściwości. Ewentualnie jak takie coś napisać, ale obawiam się, że do tego już są potrzebne większe umiejętności na polu programowania, których raczej nie posidam. Pozdrawiam! |
|
|
.
2012-12-19, 22:38
Pomógł 52 raz(y).
|
Da się i nawet nie jest to takie skomplikowane. Ważne żeby numer od nazwy był konkretnie odseparowany (ja stosuję spację i oczywiście w numerze nie może być spacji). Oto kod w VBA Sub Main() Dim NazwaPliku As String Dim Spacja As Long Dim Dlugosc As Long Dim Description As String Dim PartNo As String Dim Wpis As Long Dim CusPropMgr As SldWorks.CustomPropertyManager Set swApp = Application.SldWorks Set swModel = swApp.ActiveDoc If swModel Is Nothing Then MsgBox "Brak otwartych dokumentów", swMbInformation End End If Set CusPropMgr = swModel.Extension.CustomPropertyManager("") NazwaPliku = swModel.GetTitle() Dlugosc = Len(NazwaPliku) Spacja = InStr(NazwaPliku, " ") PartNo = "(" + Left(NazwaPliku, Spacja - 1) + ")" Description = Mid(NazwaPliku, Spacja + 1) Wpis = CusPropMgr.Delete("Description") Wpis = CusPropMgr.Delete("PartNo") Wpis = CusPropMgr.Add2("Description", swCustomInfoText, Description) Wpis = CusPropMgr.Add2("PartNo", swCustomInfoText, PartNo) End Sub Pozdrawiam |
Wykonam każde makro w SolidWorks
2012-12-20, 15:51
Pomógł 12 raz(y).
|
http://www.adksolid.com/index.php/pl/properties - akurat makro properties jest płatne. pozdrawiam Michał Karpiuk |
|
|
2013-07-04, 09:34
Pomógł 0 raz(y).
|
Dzięki za pomoc ale jak uruchomić i wstawić to makro? |
|
|
.
2013-07-04, 10:40
Pomógł 52 raz(y).
|
Menu>Makro>Nowe makro Wybrać lokalizację i nazwę oraz typ SWP Wkleić zawartość podaną w poprzednim poście ( bez linii: main () , End Sub ) pod linią Set swApp = Application.SldWorks , zapisać i gotowe. Potem: Menu>Makro>Uruchom i wybrać to makro. Jeśli makro ma być używane często to lepiej jest zrobić sobie przycisk w pasku narzędzi ale o tym to poczytaj w Helpie. Pozdrawiam |
2013-07-04, 11:11
Pomógł 0 raz(y).
|
Już działa super. |
|
|
.
2014-02-24, 23:31
Pomógł 0 raz(y).
|
Witam, mam pytanko, do tej pory używałem makro w ten sposób: Jak już miałem narysowany model to zapisywałem go z nazwą np. RN-123.01 Wał i uruchamiałem makro co uzupełniło właściwości (makro mam przypisane do skrótu klawiszowego więc dużo klikanie to nie zajmuje). Czy jest jakiś sposób aby podczas uruchamiania szablonu części i zapisania go w odpowiedniej nazwie właściwości same się uzupełniały. Chodzi mi o to aby nie musiał bym za każdym razem przy nowej części uruchamiać MAKRO? Z góry dziękuje i pozdrawiam, Robert |
|
|
.
2014-02-25, 11:46
Pomógł 52 raz(y).
|
Jak zapisujesz część to musisz gdzieś podać nazwę pliku. Tu pewnie wpisujesz w 'zapisz' lub 'zapisz jako' . Można więc rozbudować makro tak, żeby wpisywać te dane do makra, które potem zapisze plik z odpowiednią nazwą i wprowadzi dane do dostosowanych właściwości. Wtedy robi się to tylko raz i już jest jakiś zysk. |
.
2014-03-27, 23:28
Pomógł 0 raz(y).
|
Witam, Postanowiłem powoli rozwinąć makro do uzupełniania właściwości. No i zatrzymałem się już na początku. Chciał bym aby automatycznie czytało Materiał i Masę. Dodawanie nazwy właściwości się udało (na zasadzie kopiuj wklej ) ale nie wiem co wpisać w kolumnie " Wartość..." Wpisuje coś takiego Sub main() Set swApp = Application.SldWorks Dim NazwaPliku As String Dim Spacja As Long Dim Dlugosc As Long Dim Description As String Dim PartNo As String Dim NormaKatalog As String Dim Wpis As Long Dim Material As String Dim CusPropMgr As SldWorks.CustomPropertyManager Set swApp = Application.SldWorks Set swModel = swApp.ActiveDoc If swModel Is Nothing Then MsgBox "Brak otwartych dokumentów", swMbInformation End End If Set CusPropMgr = swModel.Extension.CustomPropertyManager("") NazwaPliku = swModel.GetTitle() Dlugosc = Len(NazwaPliku) Spacja = InStr(NazwaPliku, " ") PartNo = "" + Left(NazwaPliku, Spacja - 1) + "" Description = Mid(NazwaPliku, Spacja + 1) Wpis = CusPropMgr.Delete("Description") Wpis = CusPropMgr.Delete("PartNo") Wpis = CusPropMgr.Delete("Material") Wpis = CusPropMgr.Add2("Description", swCustomInfoText, Description) Wpis = CusPropMgr.Add2("PartNo", swCustomInfoText, PartNo) Wpis = CusPropMgr.Add2("NormaKatalog", swCustomInfoText, "www..pl") Wpis = CusPropMgr.Add2("Material", swCustomInfoText, "SW-Material@RN-122.01 Rura fi 40 x 4 - 500.SLDPRT") End Sub Tak wyglądają właściwości: ![]() A tak chciał bym aby wyglądały: ![]() Czy ktoś z kolegów poradził by czymś ? |
|
|
.
2014-03-28, 07:46
Pomógł 52 raz(y).
|
Wartość właściwości materiału musi być w cudzysłowiu. |
.
2014-03-28, 09:51
Pomógł 0 raz(y).
|
Witam 1) Wpisywałem: ""SW-Material@RN-122.01 Rura fi 40 x 4 -500.SLDPRT"") i pokazywał mi błąd, ale nie pamiętam co tam pisało, a teraz tego nie potrafię sprawdzić bo jestem w pracy. 2) Jeszcze jedna sprawa, w ten sposób co mam zdefiniowane właściwości to zawsze będzie mi pobierało gatunek materiału który jest ustawiony dla tej części ( na sztywno). A co wpisać aby pobierał automatycznie z części której dotyczą właściwości. Czy może to być coś takiego, czy inaczej trzeba sformułować ? "SW-Material") |
|
|
.
2014-03-28, 12:00
Pomógł 52 raz(y).
|
Musisz w makro wpisać linie: NazwaPliku = NazwaPliku+".SLDPRT" Wpis = CusPropMgr.Add2("Material", swCustomInfoText , chr(34)+ "SW-Material@"+NazwaPliku+chr(34)) |
.
2014-03-28, 19:47
Pomógł 0 raz(y).
|
Super, działa A do masy zrobiłem analogicznie i również działa. Dziękuje. |
|
|
2022-05-05, 10:21
Pomógł 0 raz(y).
|
Czemu w Description zaczytuje mi nazwę z rozszerzeniem? Jak usunąc .sldprt? |
|
|
.
2022-05-06, 16:06
Pomógł 52 raz(y).
|
Description = Left(Description, Len(Description) - 7) |