Jeśli się nie mylę, to powinniście zapytać Lucasa Prieura, on wie dużo o makro, ale nie wiem, czy jest dostępny?
Witam wszystkich i życzę szczęśliwego Nowego Roku,
Rzeczywiście, zrobiłem podobne makro (PDF i DWG).
Planowałem opublikować to na Lynkoa, ale nie zrobiłem tego z powodu braku czasu. Przed opublikowaniem go chciałem go uprościć i skomentować wszystkie wiersze jeden po drugim, aby uzyskać większą czytelność dla nowicjuszy programowania VBA.
Czy znasz podstawy VBA? Masz już bazę do tego makra czy zaczynasz od zera?
Stworzyłem samouczek "Zapisz jako" dla SolidWorks (który jest prostszy i komentowany dla każdej linii), który można znaleźć tutaj:
http://www.lynkoa.com/tutos/3d/macro-enregistrer-sous-avec-solidworks
Będziesz już miał kilka potencjalnych klientów. Obecnie jestem na urlopie do 6-go, więc w tym czasie przeniosę makro (ale pamiętaj, że to jest specyficzne dla naszej firmy i będzie wymagało dużo pracy adaptacyjnej).
Witam i Szczęśliwego Nowego Roku,
Czy możesz określić, kiedy mówisz:
- w folderze w sieci innym niż lokalizacja pliku . SLDDRW powiedział:
Chcesz mieć go zawsze w jednym miejscu?
Posiadamy nasze pliki solidworks (części, złożenia i rysunki) w folderze "Techniczny".
Mamy "bazę danych" planów w formacie DXF i PDF (do przeszukiwania przez wszystkich) w innym folderze.
Więc NIE, to są 2 różne miejsca!
Cześć @ ThomasM
Myślę, że ta obietnica jest nie tylko piękna
ponieważ jeśli się nie mylę, udało ci się odzyskać to wspomniane makro
Czy próbowałeś tego i czy odpowiada to Twojej rzeczywistej potrzebie
Prawdą jest, że im jaśniejsze pytanie, tym bardziej celowa jest odpowiedź (Lucas) ;-)
@+ ;-)
Jest to rzeczywiście pojedynczy folder dla wszystkich plików PDF. (oraz DXF)
Nie, na razie to nie działa.
Makro dostałem na forum "Solidagora".
Ale daje mi to błąd.
Problem związany z tym, że jestem w 64 bitach. (o ile rozumiem)
Staram się iść do przodu, żeby to zadziałało.
Chciałbym też to uprościć, aby naciskając ikonę makra, robił to, o co go proszę, bez konieczności wpisywania ścieżki do folderu lub sprawdzania rozszerzenia...
W przypadku 64 bitów jedynym znanym mi problemem jest to, że po uruchomieniu makra okno dialogowe się nie pojawia.
Za pomocą "małego" ALT + TAB wywołujesz okno dialogowe (nie ma potrzeby korzystania z tych wszystkich longPtr i PrtSafe ...)
Ta odpowiedź nie odpowiada na Twoje pytanie
Cierpliwy ja, większość ludzi jest na urlopie na koniec roku, to nadejdzie
@+ ;-)
Czy możesz opublikować makro tutaj jako plik tekstowy?
Mogę go zmodyfikować tak, aby zawierał żądaną ścieżkę, jeśli mi ją podasz (w UNC jest lepiej, na przykład: "\\SERVER\Design Office\SolidWorks Plans\PDF Plans\")
Kiedy pojawi się błąd i klikniesz na debuggage, do której linii dojdziesz?
Zobacz ten link
https://forum.solidworks.com/thread/66010
Załącznik
@+ ;-)
file_save_as_pdf__dwg.swp_.zip
Zobacz również ten link
http://forum.solidagora.com/topic1758.html
@+ ;-)
Oto, co udało mi się zrobić, odzyskując zdrowie na prawo i lewo.
Opcja jawna
Wyliczenie publiczne swDocumentTypes_e
swDocNONE = 0 ' Kiedyś był TYPE_NONE
swDocPART = 1 ' Kiedyś był TYPE_PART
swDocASSEMBLY = 2 ' Kiedyś był TYPE_ASSEMBLY
swDocDRAWING = 3 ' Kiedyś był TYPE_DRAWING
Wyliczenie końcowe
Dim swApp As Object
Dim swModel As ModelDoc2
Dim sPathName As Ciąg
Dim sReference As String
Dim sSaveName As Ciąg
Dim longstatus As Long
Przyciemnij mójRev jako ciąg
Sub main()
Ustaw swApp = Application.SldWorks
Ustaw swModel = swApp.ActiveDoc
Jeśli swModel jest niczym, to
MsgBox ("Brak otwartego dokumentu")
ElseIf swModel.GetType <> 3 Then
MsgBox ("To nie jest rysunek")
Inaczej
sPathName = swModel.GetPathName' pobiera nazwę wyświetlaną bieżącego dokumentu
sReference = Mid(sPathName, InStrRev(sPathName, "\") + 1) 'Pobiera wszystko po ostatnim \
sReference = Left(sReference, Len(sReference) - 7) 'Usunięto 6 znaków odpowiadających rozszerzeniu pliku i .
sPathName = Left(sPathName, InStrRev(sPathName, "\")) 'Pobiera ścieżkę bez nazwy pliku
'myRev = swModel.CustomInfo2("", "Hint") 'Pobiera wskazówkę z właściwości dokumentu
myRev = swModel.GetCustomInfoValue("", "Indeks")
longstatus = swModel.SaveAs3("X:\" + sReference + myRev + ".PDF", 0, 0)
longstatus = swModel.SaveAs3("X:\" + sReference + myRev + ". DXF", 0, 0)
Zakończ jeżeli:
Koniec subwoofera
Ostatni mały problem:
Nie mogę uzyskać właściwości "Wskazówka", która jest połączona z częścią.
swModel.CustomInfo2("", "Index") i swModel.GetCustomInfoValue("", "Index") nie zwracają mi niczego.
Co muszę napisać, aby pobrać właściwość "Index"?
I tak, nikt nie jest w stanie mi powiedzieć, jak pobrać niestandardową właściwość "Review", która jest "zakotwiczona" w pokoju?
Byłoby świetnie, ponieważ pozwoliłoby mi to w pełni odpowiedzieć na moje pytanie!
W takim razie z góry dziękuję!
Myślę, że na innym forum masz prośbę o wyjaśnienie, patrz załączony tekst
przez annwn » Wt, 7 Sty 2014, 14:25
Wow... Trzymaj się... Nie wszystko rozumiem!
Jaką modyfikację kodu wprowadziłeś?
Czy możesz zrobić zrzuty ekranu swoich komunikatów o błędach?
@+ ;-)
Witam
Mam podobne makro, które pobiera właściwość niestandardową i dołącza ją do nazwy pliku.
Robi to, co chcesz, zapisuje rysunek w formacie PDF i DXF z dodaniem właściwości "index"
Wszystko, co musisz zrobić, to zmienić ścieżki docelowe.
Jeśli potrzebujesz pomocy, nie wahaj się
dxf__pdf_bon_pour_fab.swp
Aby pobrać właściwość niestandardową, należy użyć następującego polecenia:
Metoda Get4 (ICustomPropertyManager)
Poniżej znajduje się przykład pomocy API:
Dim swApp jako SldWorks.SldWorks
Dim swModel As ModelDoc2
Dim swModelDocExt As ModelDocExtension
Dim swCustProp As CustomPropertyManager
Dim val As String Dim valout As String
Dim bool As wartość logiczna
Sub main()
Ustaw swApp = Application.SldWorks
Ustaw swModel = swApp. Plik ActiveDoc
Ustaw swModelDocExt = swModel. Rozszerzenie
' Pobieranie danych właściwości niestandardowej
Ustaw swCustProp = swModelDocExt. CustomPropertyManager("")
bool = swCustProp. Get4("Property_Name", False, val, valout)
Debug.Print "Wartość: " & val
Debug.Print "Obliczona wartość: " & valout
Debug.Print "Aktualne dane: " & bool
Koniec subwoofera
Dziękuję fgirard,
Dostosowałem Twoje makro do pracy dla nas i robienia tego, co chciałem.
A zatem dziękujemy!
z tym rozwiązaniem powinno się udać
http://forum.solidagora.com/viewtopic.php?f=28&t=101&p=14689&e=14689
@+;-)
Witam
Chciałem użyć makra Fgirard, ale link nie działa.
Fgirard, czy mógłbyś go odłożyć?
Dziękuję