Nagrywanie makr w formacie PDF i DXF w folderze zewnętrznym

Witam wszystkich i życzę szczęśliwego Nowego Roku 2014!

 

Szukam makra, które pozwala:

  • Zapisywanie ustawień oprogramowania w formacie DXF i PDF
  • w folderze w sieci innym niż lokalizacja pliku . SLDDRW powiedział:
  • Dodaj niestandardową właściwość "Poprawka" na końcu nazwy pliku
  • Kliknij na ikonę, aby wykonać całą operację

 

Link (http://forum.solidagora.com/macro-api-solidworks-enregistrer-pdf-dxf-x-t101.html), który Gt22 zaproponował w pytaniu (http://www.lynkoa.com/forum/3d/macro-d-enregistrement-en-pdf#) to miła obietnica, ale nie ma makro...

Narzędzie BatchConverter jest dobre, ale nieco cięższe (chcę tylko kliknąć ikonę)

 

Więc, czy ktoś może mi pomóc?

 

Z góry dziękujemy,

Thomas

Witam

W linku solidagora zaznaczone jest, że wystarczy skontaktować się z osobą, która opublikowała wiadomość, aby otrzymać makro. Więc od tego zacznę ;) 

W tym samym duchu co BATCHCONVERTER jest INTEGRACJA (szczególnie jeśli chcesz zmienić nazwę końcowego pliku poprzez dodanie właściwości Revision, ponieważ nie wydaje mi się, aby Batch wiedział, jak to zrobić).

 

Powinieneś zapytać "DEV" w Axemble, czy może stworzyć dla Ciebie "makro" z oprogramowania, które uruchamia INTEGRACJĘ z Twoją konwersją + modyfikację końcowych ustawień pliku.

 

Osobiście, przed przejściem na EPDM, używaliśmy BATCHCONVERTER do automatycznej konwersji MEPów do dxf, pdf i edrw w katalogu innym niż te BEM (aby były dostępne na przykład do produkcji).

Każdego wieczoru uruchamialiśmy narzędzie BATCHCONVERTER, które brało pod uwagę wszystkie rysunki wykonane lub zmodyfikowane w ciągu dnia (zarządzasz tym za pomocą filtrów w datach). Zaletą jest to, że ta metoda nie ma nadzoru, w przeciwieństwie do przycisku makra, który wymaga interwencji człowieka.

2 polubienia

Jeśli się nie mylę, to powinniście zapytać Lucasa Prieura, on wie dużo o makro, ale nie wiem, czy jest dostępny?

1 polubienie

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!

Ale czy jest to jeden folder dla wszystkich plików PDF? A może dla każdego zamówienia/transakcji/maszyny jest to inny folder?

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 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
1 polubienie

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