wsadowe przekształcanie dwg do pdf


Recommended Posts

Witam!

Jestem tutaj nowym użytkownikiem. Od miesiąca jestem użytkownikiem ZWCAD-a.

B. łatwo udało mi się przejść z ACAD-a do tego programu. Pliki dwg program przekształca do pdf-a b. szybko i bez żadnych problemów. Marzy mi się jeszcze tylko by proces ten, dla większej ilości plików, zautomatyzować.

Czy jest to możliwe?

Pozdrawiam.

H. Rojek

Link to comment
Share on other sites

Przez minioną sobotę walczyłem z tym problemem.

Wydaje mi się, że znalazłem rozwiązanie. Oto lisp:

(defun C:AUTOSCR (/ FULL_NAME LOG_NAME FNAME_DIR FNAME_LIST

SCR_NAME FILE IN)

(setq FULL_NAME (getfiled "Select A Drawing File" "" "dwg" 8));"D:\\Proba\\010_02.DWG"

(if FULL_NAME (progn

(setq LOG_NAME (getvar "loginname"));"Heniek"

(setq FNAME_DIR (vl-filename-directory FULL_NAME));"D:\\Proba"

(setq FNAME_LIST (vl-directory-files FNAME_DIR "*.dwg"));("010_02.DWG" "010_03.DWG" "010_06.DWG")

;;; Write script File

(if FNAME_LIST (progn

(setq SCR_NAME (strcat FNAME_DIR "\\" LOG_NAME ".scr"));"D:\\Proba\\Heniek.scr"

(setq FILE (open SCR_NAME "w"))

(setq IN 0)

(repeat (length FNAME_LIST)

(setq FNAME (nth IN FNAME_LIST));"010_02.DWG"

(setq FNAME (vl-filename-base FNAME));"010_02"

(write-line "open" FILE)

(write-line (strcat FNAME_DIR "\\" FNAME) FILE)

(write-line (strcat "(" "command " "\"" "_export" "\"" " " "\"" FNAME_DIR "\\" FNAME ".pdf" "\"" ")") FILE)

(write-line "close" FILE)

(setq IN (1+ IN))

);;repeat

(close FILE)

))

))

(princ)

)

;1 - uruchom AUTOSCR

;2 - uruchamianie polecenia SCRIPT, po wskazaniu pliku *.scr,

;gdzie *.scr, to LOG_NAME z programu.

Kolejność postępowania:

1. Uruchamiam AUTOSCR,

2. Wybieram katalog, w którym są pliki *. dwg do przekształcenia i wskazuje jeden z nich. Program stworzy plik [nazwa].scr w tym samym katalogu; [nazwa] - nazwa pobrana ze zmiennej LOG_NAME.

3. W linii poleceń wpisuję polecenie SCRIPT i wskazuję plik [nazwa].scr. Program automatycznie pobierze pliki *.dwg z katalogu i przekształci je do *.pdf.

Działa to w ZWCAD11, wersja angielska.

Link to comment
Share on other sites

Próbowałem uruchomić ten skrypt i coś jest chyba nie tak.

1. Tworzy się skrypt zawierający wielokrotnie powtórzoną sekwencję

open
ścieżkapliku
(command "_export" "C:\Katalog\ścieżkapliku.pdf)
close

Ale coś tu nie gra. Kiedy uruchamiam ten skryp. Tworzy się jeden plik pdf - pusty i to wszystko. Z pozostałych plików nie tworzą się pdfy.

2. getfiled prosi o wskazanie pliku. Lepiej byłoby zrobić coś takiego, żeby prosiło o wskazanie katalogu. Może w opcjach getfiled jest coś takiego, musiałbym to sprawdzić. A może lepiej byłoby robić export z wszystkich zaznaczonych plików a nie z całego katalogu w którym jest wskazany plik

3. Po Skopiowaniu z pliku scr linii (command "_export" ......) w pasek poleceń ZWCADa, okazuje się że ścieżki nie są prawidłowo rozpoznawane. ponieważ (command ... ) to już element LISPa więc wychodzi że jest lisp uruchamiający scrypt zawierający LISP. Po co taka konstrukcja. Nie można by w SCR zapisać po prostu export bez (command)?? A jeśli już konieczne jest (command, to w ścieżce znak \ powinien być dwukrotnie powtórzony czyli: (command "_export" "C:\\Sciezka\\Plik.pdf")

4. dlaczego ścieżka w drugiej linii jest bez rozszerzenia pliku? tylko ścieżka\nazwa bez dwg?

Link to comment
Share on other sites

W skrypcie, który Pan zamieścił, w wierszu (command ..... za słowem pdf powinien być cudzysłów. To jest prawdopodobnie przyczyną zatrzymania procedury.

Proszę sprawdzić linię w lispie, która tworzy ten wiersz, czy tam jest wszystko w porządku.

Piszę w pracy, z pamięci, stąd mało precyzyjnie.

Pozdrawiam.

H. Rojek

Link to comment
Share on other sites

Witam!

Wybrałem losowo katalog z plikami dwg (108 plików).

Program bez problemów, w ciągu kilkudziesięciu sekund, przekształcił je do pdf_ów.

Oto początkowe i końcowe wiersze wygenerowanego skryptu:

open

D:\Tacmociag\C45\00

(command "_export" "D:\Tacmociag\C45\00.pdf")

close

.

.

.

open

D:\Tacmociag\C45\080_24

(command "_export" "D:\Tacmociag\C45\080_24.pdf")

close

Dlaczego w skrypcie, w wierszu (command .... i w ścieżce dostępu występuje znak "\", a nie "\\" ? - dla mnie też jest to zagadką.

W lispie wszędzie używany jest znak"\\" - widać to w dołączonych do programu komentarzach i w wierszu, w którym tworzony jest plik: (command "_export" ...).

Zamiana "\\" na "\" następuje dopiero w czasie przekazywania informacji do skryptu poprzez polecenie write-line; wygląda na to,że właściwa informacja jest jednak zapamiętywana, bowiem skrypt działa.

Dodam jeszcze, że system operacyjny komputera to WIN7.

W fazie początkowej, testowej program zachowywał się podobnie jak u Pana. Jeśli tylko któryś z wierszy wykazywał błąd, np. nil, czy coś podobnego, tworzył się jeden niekompletny pli pdf - była przerywana pętla repeat.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
 Share