ATTEXT poprzez skrypt nie działa


Recommended Posts

Problem dotyczy ZWCAD 2019 - VERNUM = "2019.03.15(43299)_x64"

Mam prosty skrypt, który działa m.in. na ZWCAD 2015+, uruchamiający komendę ATTEXT z parametrami pliku szablonu i wyjściowego. Dla testów działam wewnątrz katalogu C:\test\ (co by ścieżka nie była za długa i nie miała spacji i innych nietypowych znaków). Niestety, ZWCAD 2019 przy takim skrypcie wyrzuca błąd:

Cytat

Command: SCR
SCRIPT
Command: -ATTEXT
Enable entity selection or extract attributes as [Dxf/Cdf/Sdf/Objects] <Cdf>: C
Template file to load: "C:\test\extract_template.txt"
Enter output file: "C:\test\extracted_blocks.txt"
The output file could not be opened.
Enter output file: 

i oczekuje na podanie pliku wyjściowego. Niestety nie wiem, czy to ja coś robię źle, czy to po prostu błąd ZWCAD 2019? A może jest na to jakieś obejście?

Spakowane pliki testowe wrzuciłem jako załącznik test.zip

Plik ze skryptem:

dwg_z_blokami_script.scr

-ATTEXT
C
"C:\test\extract_template.txt"
"C:\test\extracted_blocks.txt"

Plik z szablonem:

extract_template.txt

BL:NAME C250000
BL:LEVEL N030000
BL:X N030004
BL:Y N030004
BL:Z N030004
BL:XSCALE N030004
BL:YSCALE N030004
BL:ZSCALE N030004
BL:ORIENT N012004
BL:NUMBER N030000
BL:HANDLE C100000
BL:LAYER C100000
NAME C250000
ARTICLE C250000

 

Link to post
Share on other sites

Dodam, że właśnie sprawdziłem, że zarówno poprzez okno dialogowe ATTEXT jak i poprzez konsolę -ATTEXT komenda działa prawidłowo, tylko że wymaga interakcji do podania ścieżki do pliku.

Link to post
Share on other sites

No i jeszcze dopowiem, że spróbowałem w ścieżkach do plików w skrypcie zamiast pojedynczych backslashy dać po dwa backslahe:

-ATTEXT
C
"C:\\test\\extract_template.txt"
"C:\\test\\extracted_blocks.txt"

i efekt jest jeszcze gorszy 😞

Cytat

Command: SCR
SCRIPT
Command: -ATTEXT
Enable entity selection or extract attributes as [Dxf/Cdf/Sdf/Objects] <Cdf>: C
Template file to load: "C:\\test\\extract_template.txt"
File not found.
Template file to load: "C:\\test\\extracted_blocks.txt"

Template file to load:

 

Link to post
Share on other sites

Proszę spróbować podać ścieżki w pliku scr bez cudzysłowów,

-ATTEXT
C
C:\test\extract_template.txt
C:\test\extracted_blocks.txt

wtedy

Command: _SCRIPT
Select script file<C:\test\dwg_z_blokami.scr>: "C:\test\dwg_z_blokami_script.scr"
Command: -ATTEXT
Enable entity selection or extract attributes as [Dxf/Cdf/Sdf/Objects] <Cdf>: C
Template file to load: C:\test\extract_template.txt
Enter output file: C:\test\extracted_blocks.txt
2 records extracted.

oraz zawartość extracted_blocks.txt

'CPEL_1968', 1, 0.0000, 1.0000, 0.0000, 1.0000, 1.0000, 1.0000, 0, 1,'391','2DE_OBJ_L1','Zestyk przełączny przerwowy',''
'CPEL_1965', 1, 0.0000, 0.0000, 0.0000, 1.0000, 1.0000, 1.0000, 0, 2,'32F','2DE_OBJ_L1','Zestyk zwierny',''

 

Link to post
Share on other sites

Dziękuję! Szybka i rzeczowa odpowiedź :) Oczywiście usunięcie cudzysłowów pomogło i w ZWCAD 2019 działa, nawet ze spację w ścieżce :)

Niestety w ścieżce posiadam spację i przez nią ZWCAD 2015+ sobie nie radzi - czy jest jakieś obejście problemu spacji w ścieżce ale takie uniwersalne, żeby ZWCAD 2015+ i 2019 potrafiły sobie z tym poradzić?

Jeśli nie jest to takie proste, to też nie jest problem - wystarczy, że zrobię sobie oddzielne pliki skryptów dla ZWCAD 2015 i dla ZWCAD 2019

Link to post
Share on other sites

Właśnie zauważyłem też taką ciekawostkę, że ZWCAD 2019 dużo dłużej niż ZWCAD 2015+ generuje pliki z listą bloków przy komendzie ATTEXT. Zmodernizowałem sobie skrypty do ATTEXT o komendy:

(setq s (getvar "DATE"))
[...] instrukcje skryptu ATTEXT [...]
(strcat "* Czas ekstrakcji atrybutow w programie " (getvar "VERNUM") " =  " (rtos (setq seconds (* 86400.0 (- (getvar "DATE") s))) 2 3) "s.")

I w efekcie otrzymałem taki rezultat:

ZWCAD 2015+

Cytat

12218 records exist in the extract file.
"* Czas ekstrakcji atrybutow w programie 2015.08.15(27483) =  0.706s."

ZWCAD 2019

Cytat

12218 records extracted.
"* Czas ekstrakcji atrybutow w programie 2019.03.15(43299)_x64 =  77.587s."

Trochę duża ta różnica, prawda.

Link to post
Share on other sites

Tak różnica jest spora.

Zapewne nie ma możliwości aby podesłał Pan rysunek do testów?

korzystając z Pana pliku zwielokrotniłem ilość bloków do prawie 25 tysięcy. Ten sam skrypt na 2021 SP2 wykonywał się około 2-3 sekund.

attext_test.gif

 

 

Nie mam pomysłu jak ujednolicić skrypt na obie wersje. Wyślemy zgłoszenie do ZWSOFT aby w plikach scr były teraz obsługiwane również cytaty.

Jedyny pomysł jaki mi się nasunął to ustawienie ścieżki dostępu do katalogu ze skryptami w opcjach 

image.png

 

Wtedy nie trzeba używać całej ścieżki a tylko nazwę pliku.

 

-ATTEXT
C
extract_template.txt
extracted_blocks.txt

 

attext.gif

 

 

Link to post
Share on other sites

No to może plik .scr generować w locie z pliku lsp po sprawdzeniu na której wersji jest odpalony. Z vernuma wyciągnąć nr wersji potem wygenerować scr (albo z cudzyslowani albo nie) albo wyeliminować scr całkowiecie zastępując go lispem 

Link to post
Share on other sites

Z SCR korzystam sobie w taki sposób, że w okienku wyboru pliku SCR mam odpalony katalog, w którym trzymam wszystkie pliki SCR jakich używam na komputerze. Domyślnie podpowiadana jest nazwa pliku SCR zgodna z nazwą pliku DWG i wtedy tylko zatwierdzam enterem wybór. W tej chwili tylko muszę pamiętać, żeby przy ZWCAD 2015+ wybrać plik z dopiskiem 2015. Na razie jest to czynność sporadyczna i chyba na razie powstrzymam się nad rozbudową skryptu, chociaż pomysł z LSP i vernum wydaje się być prostym i skutecznym patentem. Dzięki za pomysł!

Link to post
Share on other sites

@dmatusz3, super rozwiązanie (pół skrypt pół LISP) ale działa rewelacyjnie. Nawet foldery ze spacjami nie powodują konfliktów. Tylko trzeba pamiętać o podwójnym backslashu w ścieżce. Dzięki.

Trochę jeszcze stuningowałem kod w pliku SCR, żeby w łatwiejszy sposób dostosowywać go do innych plików DWG i ścieżki do plików podałem w oddzielnych zmiennych:

(setq
	template_file 	"C:\\test\\duzy_plik_testowy_template.txt"
	output_file 	"C:\\test\\duzy_plik_testowy_extracted_blocks.txt"
	)
(command "_-ATTEXT" "_C" template_file output_file)

 

Link to post
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...