ATTEXT poprzez skrypt nie działa [rozwiązany]


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 comment
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 comment
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 comment
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 comment
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 comment
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 comment
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 comment
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 comment
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 comment
Share on other sites

  • 1 year later...
W dniu 17.03.2021 o 11:12, Marek-M napisał:

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+

ZWCAD 2019

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

Nowy CAD, nowe testy, bo przypomniałem sobie o tym problemie z ATTEXT, gdy chciałem wyeksportować dane z pewnego rysunku. Niestety nie jest dobrze 😞

ZWCAD 2023 (przegrany)
372 records extracted.nil
*** Czas wykonania programu = 1603.588sek. [VERNUM=23.00_2022.05.19(#4672-2a69c627485)_x64]

ZWCAD 2019 (średniak bliski przegranemu)
372 records extracted.nil
*** Czas wykonania programu = 1294.278sek. [VERNUM=2019.03.15(43299)_x64]

ZWCAD 2015+ (zwycięzca!!!)
372 records exist in the extract file.
*** Czas wykonania programu = 0.566sek. [VERNUM=2015.08.15(27483)]

Czy ZWCAD nie może czegoś z tym zrobić?

Dane testowe: Pliki SCR i szablonu do ATTEXT wrzuciłem w plikach na forum a plik DWG z rysunkiem udostępniłem tutaj: https://www.dropbox.com/s/2nshcy6zutevawh/test_attext.dwg?dl=0

extract_CADPROFIBLOCKS_with_TEXT2ATTR.txt test_attext.scr

Link to comment
Share on other sites

Dziękuję bardzo za dokładny opis algorytmu i załączenie plików, dzięki którym można powtórzyć cała procedurę.

Skonsultowaliśmy działanie tych funkcji z ZWSOFT i otrzymaliśmy potwierdzenie.

Nadaliśmy bardzo wysoki priorytet. Zgłoszenia ma oznaczenie SUP-50626.

Link to comment
Share on other sites

  • 5 months later...
W dniu 18.08.2022 o 09:20, Marek-M napisał:

Nowy CAD, nowe testy, bo przypomniałem sobie o tym problemie z ATTEXT, gdy chciałem wyeksportować dane z pewnego rysunku. Niestety nie jest dobrze 😞

ZWCAD 2023 (przegrany)
372 records extracted.nil
*** Czas wykonania programu = 1603.588sek. [VERNUM=23.00_2022.05.19(#4672-2a69c627485)_x64]

ZWCAD 2019 (średniak bliski przegranemu)
372 records extracted.nil
*** Czas wykonania programu = 1294.278sek. [VERNUM=2019.03.15(43299)_x64]

ZWCAD 2015+ (zwycięzca!!!)
372 records exist in the extract file.
*** Czas wykonania programu = 0.566sek. [VERNUM=2015.08.15(27483)]

Czy ZWCAD nie może czegoś z tym zrobić?

Dane testowe: Pliki SCR i szablonu do ATTEXT wrzuciłem w plikach na forum a plik DWG z rysunkiem udostępniłem tutaj: https://www.dropbox.com/s/2nshcy6zutevawh/test_attext.dwg?dl=0

extract_CADPROFIBLOCKS_with_TEXT2ATTR.txt 666 B · 4 pobrania test_attext.scr 344 B · 5 pobrań

Aktualizacja informacji - najnowszy ZWCAD wyraźniej przyśpieszył w teście - nowy wynik testu:

ZWCAD 2023 (nowa wersja - test z 2023-02-01)
372 records extracted.nil
*** Czas wykonania programu = 9.489sek. [VERNUM=23.20_2022.12.03(#4996-a5f007e30b8)_x64]

 

W moim odczuciu jest to wynik bardzo akceptowalny. Testowałem też działanie na 19k bloków z atrybutami i też jest OK aczkolwiek nie mam pojęcia jak było to możliwe, żeby ZWCAD 2015+ był aż taki niedościgniony ?? 😲

Ogólnie wątek można zamknąć, chyba że w kolejnych wersjach ZWCAD jeszcze bardziej przyspieszy, to wtedy można tutaj dorzucać aktualizacje wyników.

Link to comment
Share on other sites

  • dmatusz3 changed the title to ATTEXT poprzez skrypt nie działa [rozwiązany]
  • dmatusz3 locked this topic
Guest
This topic is now closed to further replies.