Rekomendowane odpowiedzi

Opublikowano (edytowane)

Mam problem...

Mam zdefiniowane filtry warstw (LAYER FILTER) i chciałbym je przełączać korzystając z LISPa.

Gdzie jest zapisana informacja o aktualnym filtrze warstw? Jakaś zmienna systemowa? (To byłoby najlogiczniejsze)

A może jakieś Polecenie?

=2P=

PS.

Pytanie dotyczy ZWcad 2012 i ZWcad 2012+

Edytowane przez 2P
Opublikowano

Czy może Pan coś więcej podpowiedzieć w tym temacie?

Wiem jak można odczytać Dictionary, ExtensionDictionary czy XRecord, ale jak pobrać filtry warstw?

Sprawdzałem link, który Pan podał, program wczytuje się w ZWCAD, ale kiedy chcę sprawdzić działanie, wyświetla się okno, ale nie wyświetlają się w nim nazwy filtrów a jedynie <wszystkie warstwy>

Jak można to sprawdzić?

Opublikowano (edytowane)

Rozróżnić należy: Filtry grupy i filtry właściwości. AutoCAD ma oba - nie wiem jak to jest w ZwCAD-zie. Być może jest tu tylko struktura z AutoCAD-a nizszego niż 2005 (tylko filtry właściwości). Są to słowniki o nazwach ACAD_LAYERFILTER i ACLYDICTIONARY. Poniższy malunek ilustruje tenże strukturę - w oknie GF widać tylko część obiektów:

post-451-0-45389200-1352813323_thumb.png

kojacek

Edytowane przez kojacek
Opublikowano
  W dniu 13.11.2012 o 13:59, kruszynski napisał:

Dobrze rozumiem, że te słowniki należy pobrać z samego dokumentu?

Jeśli tak, to tutaj jest to jakoś inaczej rozwiązane, bo wylistowałem zdefiniowane słowniki i takich nie było.

Oczywiście że wszystkie dane są w dokumencie (rysunku). Nie sądzę żeby tu było inaczej - ZwCAD-owy dwg to najogólniej taki sam ja dwg jak autocad-owy.

kojacek

Opublikowano

1. Widzę, że nie do końca jasno zadałem swoje pierwsze pytanie :( Precyzuję więc:

Mam już w rysunku zdefiniowane (metodą tradycyjną) kilka filtrów. Dzięki temu, gdy w oknie LAYER ustawię któryś filtr, wyświetlane poniżej są tylko warstwy odpowiadające temu filtrowi. Teraz jeśli opuszczę okno LAYER to w liście rozwijanej na pasku toolbar również umieszczone są tylko te warstwy które odpowiadają ustawionemu filtrowi. Czyli jest coś takiego jak aktualny filtr wyświetlanych warstw - aż prosi się do tego jakaś zmienna systemowa....

Szukam rozwiązania, aby mój program w LISP "coś" przestawił i "wybrał" istniejący już filtr, dzięki czemu w liście rozwijanej z warstwami, użytkownik będzie widział konkretny zestaw warstw.

Chodzi mi o ZAUTOMATYZOWANE PRZESTAWIANIE FILTRÓW zrealizowane za pomocą LISPa, a nie ich definiowanie za pomocą LISPa, bo do tego już doszedłem, jak to zrobić (poniżej).

Chyba teraz udało mi się zwerbalizować problem jaśniej :)

2. Z moich doświadczalnych badań wiem, że przedstawiony przez Was problem polega na.... innej nazwie słownika w ZWcadzie i AutoCADzie!

Odpowiednikiem ACAD_LAYERFILTER jest ICAD_LAYERFILTER, i takiego właśnie słownika należy poszukiwać. Tam są zdefiniowane filtry!

Ale gdzie jest zapisane, który jest bieżącym - aktualnym????

Poniżej kod wyświetlający:

1. słowniki (widać słownik ICAD_LAYERFILTER, jeśli plik przechodził przez AutoCADa to pewnie będzie równolegle widać słownik ACAD_LAYERFILTER)

2. listę zdefiniowanych filtrów

3. dane konkretnego filtra.

Uruchomienie poniższego kodu należy poprzedzić typowym utworzeniem jakiegoś filtra w oknie LAYER (dopiero wtedy tworzony jest słownik)

(setq dict (namedobjdict))
(ZYXAK_PrintEntity (entget dict) )
(ZYXAK_PrintEntity (dictsearch dict "ICAD_LAYERFILTERS"))
(ZYXAK_PrintEntity (entget (cdr (assoc 350 (dictsearch dict "ICAD_LAYERFILTERS")))))

(defun ZYXAK_PrintEntity (E / f)
(setq f 0)
(print "====================")
(repeat (length E)
(print (nth f E))
(setq f (+ f 1))
)
(print "====================")
(princ)
)

Przykładowy wynik działania kodu u mnie:

"===================="

(-1 . <Entity name: c1cc240>)

(0 . "DICTIONARY")

(5 . "C")

(100 . "AcDbEntity")

(102 . "{ACAD_XDICTIONARY")

(360 . <Entity name: 0>)

(102 . "}")

(100 . "AcDbDictionary")

(280 . 0)

(281 . 1)

(3 . "ACAD_COLOR")

(350 . <Entity name: c1cef60>)

(3 . "ACAD_GROUP")

(350 . <Entity name: c1cee20>)

(3 . "ACAD_LAYOUT")

(350 . <Entity name: c1cece0>)

(3 . "ACAD_MATERIAL")

(350 . <Entity name: c1ce100>)

(3 . "ACAD_MLINESTYLE")

(350 . <Entity name: c1c8b10>)

(3 . "ACAD_PLOTSETTINGS")

(350 . <Entity name: c1c8890>)

(3 . "ACAD_PLOTSTYLENAME")

(350 . <Entity name: c1c8750>)

(3 . "ACAD_TABLESTYLE")

(350 . <Entity name: c1cf2a0>)

(3 . "ACAD_WIPEOUT_VARS")

(350 . <Entity name: c1caf60>)

(3 . "ACDBVARIABLEDICTIONARY")

(350 . <Entity name: c1caed0>)

(3 . "ACAD_SCALELIST")

(350 . <Entity name: c1cc920>)

(3 . "ACAD_MLEADERSTYLE")

(350 . <Entity name: c1cd690>)

(3 . "ICAD_LAYERFILTERS")

(350 . <Entity name: bf309f0>)

"===================="

"===================="

(-1 . <Entity name: bf309f0>)

(0 . "DICTIONARY")

(5 . "1D5")

(102 . "{ACAD_REACTORS")

(330 . <Entity name: c1cc240>)

(102 . "}")

(102 . "{ACAD_XDICTIONARY")

(360 . <Entity name: 0>)

(102 . "}")

(100 . "AcDbDictionary")

(280 . 0)

(281 . 1)

(3 . "NAZWA FILTRA")

(350 . <Entity name: c366020>)

"===================="

"===================="

(-1 . <Entity name: c366020>)

(0 . "XRECORD")

(5 . "229")

(102 . "{ACAD_REACTORS")

(330 . <Entity name: bf309f0>)

(102 . "}")

(100 . "AcDbXrecord")

(330 . <Entity name: bf309f0>)

(1 . "Nazwa filtra")

(1 . "*")

(1 . "*")

(1 . "*")

(70 . 0)

(1 . "*")

(1 . "*")

"===================="

A największym zaskoczeniem dla mnie było to, że: słowo: "ICAD_LAYERFILTER" nie występuje w internecie. ZERO wyników w Google! Nikt nigdy nic nie opublikował o tym słowniku InteliCada w Internecie... aż wierzyć się nie chce!

_VERNUM = "2011.10.30(17176)" (read only)

Opublikowano

Zatem jak mniemam schemat filtrów warstw w ZwCAD ma strukturę taką jak miał AutoCAD w wersji sprzed wersji 2005... bowiem od tego czasu (jak wcześniej zaznaczyłem) w AutoCAD są dwa rodzaje filtrów, i zapisywane są nie (jak wcześniej było) w ACAD_LAYERFILTERS w NamedObjectDictionary, tylko w słowniku ACAD_LAYERFILTERS znajdującym się w ExtensionDictionary tablicy LAYER (obiekt "TABLE"). Poniższa rycina ilustruje tę strukturę (w AutoCAD - filtry w oknie menadzera warstw i podgląd obiektów ExtensionDict warstw):

post-451-0-48571500-1352830931_thumb.png

Słownik ICAD_LAYERFILTER (wydaje się) ma lokalne i marginalne znaczenie, i jak sądzę nikt oprócz jego twórców z niego nie korzysta. Opublikuj jakiś mały malunek (dwg) z tymi filtrami - do "badań" - logika nakazuje mniemać, że w AutoCAD filtry utworzone w ZwCAD widoczne nie będą.

kojacek

Opublikowano

Zamieszczam link do pliku DWG ze zdefiniowanymi dwoma filtrami. W dwóch wersjach dwg'a.

Cudem byłoby gdyby AutoCAD odczytał te filtry ZWcada i odwrotnie.... Ale może gdyby w prost zmienić nazwę ACAD_LAYERFILTERS na ICAD_LAYERFILTER (i odwrotnie) to by się to powiodło.... :)

http://85.89.179.8/dwg.zip (PS. Jak zamieścić plik na tym forum ?)

A jak się w autoCADzie ustawia z poziomu LISPa aktualny filtr??

=2P=

Opublikowano

Rzeczywiście tak jest. AutoCAD "nie widzi" tych filtrów. Zdefiniowane są tak jak się spodziewałem - podobnie jak były definiowane w AutoCAD 8-10 lat temu - w NamedObjectDictionary, a nie ExtensionDictionary obiektu. Z tego co widzę, żaden obiekt rysunku nie ma ExtDict. Ponieważ ten słownik nie może nazywać się ACAD_LAYERFILTERS ze względu na brak zgodności z formatem DWG nazywa się ICAD_LAYERFILTERS. Zdaje się że jest użyteczny tylko w ZwCAD-zie (czyt. jest bezużyteczny wszędzie indziej):

post-451-0-32401100-1352834469.png

kojacek

Opublikowano

Nie dałem za wygraną i udało mi się wymyślić częściowe rozwiązanie mojego problemu. Opiszę poniżej może się komuś przyda, a może ktoś dzięki temu wpadnie jak rozwiązać mój problem w całości.

Dot. ZWcada 2012 bez plusa.

ZWCAD zapisuje nazwę aktualnego filtra w rejestrze:

HKEY_CURRENT_USER\Software\ZWSoft\ZWCAD 2012 Eng\Profiles\LayerDiaFilter

Zmieniając wartość tam zapisaną spowodujemy, że w momencie wyświetlenia okna LAYER ustawiony będzie odpowiedni filtr.

Niestety zmienna ta nie ma bezpośredniego przełożenia na listę rozwijaną Layer w toolbarze. Dopiero po wejściu do okna Layer i kliknięciu OK, zawartość listy dostosowuje się do wybranego filtra wpisanego do rejestru...

=2P=

Opublikowano
  W dniu 15.11.2012 o 13:54, 2P napisał:

Nie dałem za wygraną i udało mi się wymyślić częściowe rozwiązanie mojego problemu. Opiszę poniżej może się komuś przyda, a może ktoś dzięki temu wpadnie jak rozwiązać mój problem w całości.

Dot. ZWcada 2012 bez plusa.

ZWCAD zapisuje nazwę aktualnego filtra w rejestrze:

HKEY_CURRENT_USER\Software\ZWSoft\ZWCAD 2012 Eng\Profiles\LayerDiaFilter

Zmieniając wartość tam zapisaną spowodujemy, że w momencie wyświetlenia okna LAYER ustawiony będzie odpowiedni filtr.

Niestety zmienna ta nie ma bezpośredniego przełożenia na listę rozwijaną Layer w toolbarze. Dopiero po wejściu do okna Layer i kliknięciu OK, zawartość listy dostosowuje się do wybranego filtra wpisanego do rejestru...

=2P=

Jaka to jest wartość - jeśli mozna spytać? Nazwa filtra?

kojacek

Opublikowano
  W dniu 15.11.2012 o 14:17, 2P napisał:

tak, nazwa filtra lub "Show all layers" itp...

Czy dobrze (w takim wypadku) myślę, podpierając się malunkami (które tu uprzednio wstawiłem)... możliwe jest wyświetlenie (lub próba) filtra o nazwie np. 2_TECHNOLOGIA w rysunku w którym są tylko filtry: ARCH_PODST i ARCH_UZUP, lub nie ma żadnych filtrów :?:

kojacek

Opublikowano

Wygląda na to, że zapis w rejestrze dotyczy wszystkich rysunków (otwartych),, a raczej stanu zwcada, czy może dokładniej stanu wybranej opcji w liście rozwijanej w okienku LAYER.

Jeśli w rejestrze dokonamy zmiany wpisując nazwę filtra, którego w danym rysunku nie ma, to ustawiany jest najbliższy filtr.

Przykład:

Mam filtry o nazwach: KKKK i Show all layer (wbudowany)

Jak wpiszę do rejestru nawę "K", ustawi mi się w rysunku filtr KKKK, jeśli np. wpiszę samo "S" ustawi mi się filtr "Show all layer".

Wpis w rejestr oddziaływuje na wszystkie rysunki...

Na 100% ustawiony filtr bieżący nie jest zapisywany w pliku dwg.

Opublikowano (edytowane)
  W dniu 15.11.2012 o 15:13, 2P napisał:

Wygląda na to, że zapis w rejestrze dotyczy wszystkich rysunków (otwartych),, a raczej stanu zwcada, czy może dokładniej stanu wybranej opcji w liście rozwijanej w okienku LAYER.

Jeśli w rejestrze dokonamy zmiany wpisując nazwę filtra, którego w danym rysunku nie ma, to ustawiany jest najbliższy filtr.

Przykład:

Mam filtry o nazwach: KKKK i Show all layer (wbudowany)

Jak wpiszę do rejestru nawę "K", ustawi mi się w rysunku filtr KKKK, jeśli np. wpiszę samo "S" ustawi mi się filtr "Show all layer".

Wpis w rejestr oddziaływuje na wszystkie rysunki...

Na 100% ustawiony filtr bieżący nie jest zapisywany w pliku dwg.

Zważywszy zatem, że warstwy są nierozerwalną częścią każdego dokumentu (rysunku a nie aplikacji ogólnie przecież), wydaje się że ich filtry (czyli pewne ich zbiory logiczne tworzone na podstawie jakiś wspólnych cech) zwane w końcu nawet filtrami warstw, takimiż też powinny być. Model w którym stan ich nie jest zapisywany w rysunku (razem z warstwami których dotyczy), wydaje się być pomysłem absurdalnie bezsensownym. No bo do czego właściwie te "filtry" miały by służyć, w efekcie? Do ręcznego ustawiania za każdym razem?

EDYTA: Opublikuj jakieś 2 rysunki, w których ustalone są identyczne np. 4 filtry warstw, ale w jednym nieżche aktywnym będzie 1, a w drugim 3 filtr, których nazwy podasz. Wprawdzie nie mam ZwCAD-a, ale z ciekawości chcę sprawdzić, czy to gdzieś nie siedzi.

kojacek

Edytowane przez kojacek
Opublikowano (edytowane)

Chyba się nie zrozumieliśmy.

Musimy rozróżnić dwie rzeczy:

1. definicje filtrów w skład których wchodzi: nazwa filtra oraz parametry filtrowania warstw, takie jak szablon nazwy, kolor, grubość itp.

2. zapisaną informację, który w tym momencie filtr jest aktywny (który ze zbioru tych zdefiniowanych jw.).

Moje główne pytanie na początku wątku dotyczyło punktu 2. Jak się okazuje nazwa aktywnego filtra jest zapisana w w rejestrze, jako odnośnik do definicji. Ale całe definicje opisujące filtry już są w rysunku / w pliku.

Przestawienie wybranego filtra w oknie Layer powoduje zapis w rejestrze nazwy filtra. Jeśli dokonamy zmian w rejestrze "tylnymi drzwiami", czy to z poziomu LISPa, czy programu do edycji rejestru, spowodujemy, że przy ponownym otwarciu okna Layer aktywny będzie inny filtr. Jeśli w rejestr wpiszemy jakieś głupoty ZWCAD jako filtr ustawi filtr określony przez zbliżoną nazwę.

Ponieważ ustawienie aktywnego filtra warstw dotyczy GUI programu, a nie bazy danych rysunku, uważam, że takie rozwiązanie nie jest absurdalne, a jedynie nieoptymalne.

Lepiej by było, gdyby każdy wczytany rysunek posiadał niezależny zapis w rejestrze o ustawionym aktualnym filtrze spośród tych zdefiniowanych w rysunku. Jeszcze lepiej gdyby taki odnośnik do aktualnego filtra zawarty był w samej bazie danych / w pliku DWG. Dzięki temu aktywny filtr byłby taki sam po ponownym otwarciu rysunku.

Jeśli chodzi o porównanie dwóch plików z tym samym zestawem filtrów, ale raz z ustawionym jednym filtrem, raz innym, to właśnie taki test przeprowadziłem na początku. Sprawdziłem oba pliki na poziomie binarnym, a nie bazy danych i są identyczne. Dlatego odnośnika do aktywnego filtra poszukiwałem w zmiennych systemowych a następnie w rejestrze.

Edytowane przez 2P
Opublikowano (edytowane)
  W dniu 15.11.2012 o 17:32, 2P napisał:

Chyba się nie zrozumieliśmy.

Musimy rozróżnić dwie rzeczy:

1. definicje filtrów w skład których wchodzi: nazwa filtra oraz parametry filtrowania warstw, takie jak szablon nazwy, kolor, grubość itp.

2. zapisaną informację, który w tym momencie filtr jest aktywny (który ze zbioru tych zdefiniowanych jw.).

[A] Ja to rozumiem. Ale już na początku musimy rodzielić dwie rzeczy. Filtry warstw takie jak są zdefiniowane w natywnym pliku dwg i filtry warstw definiowane przez ZwCAD-a. Okazało się że to dwie różne rzeczy. O ile standardem jest tenże filtr z adesk-owego dwg (i dxf), tak ten z ZwCAD-a filtrem w tym znaczeniu nie jest. Jest poprawnym (i dopuszczalnym) wpisem (słownikiem + XRecord-em), niemniej filtrem warstw (powtarzam jeszcze raz) nie jest.

  W dniu 15.11.2012 o 17:32, 2P napisał:

Moje główne pytanie na początku wątku dotyczyło punktu 2. Jak się okazuje nazwa aktywnego filtra jest zapisana w w rejestrze, jako odnośnik do definicji. Ale całe definicje opisujące filtry już są w rysunku / w pliku.

Z uwagi na [A] - mogłem tego nie wiedzieć, bowiem "filtr" ZwCAD-a nie jest filtrem warstw. Rzekoma 100% zgodność dwg jest zatem mitem. ZwCAD nie widzi filtrów warstw AutoCAD-a, i odwrotnie.

  W dniu 15.11.2012 o 17:32, 2P napisał:
Przestawienie wybranego filtra w oknie Layer powoduje zapis w rejestrze nazwy filtra. Jeśli dokonamy zmian w rejestrze "tylnymi drzwiami", czy to z poziomu LISPa, czy programu do edycji rejestru, spowodujemy, że przy ponownym otwarciu okna Layer aktywny będzie inny filtr. Jeśli w rejestr wpiszemy jakieś głupoty ZWCAD jako filtr ustawi filtr określony przez zbliżoną nazwę.

[C] I to nie ma właśnie sensu. Podstawową cechą filtra warstw jest ich grupowanie w celu manipulowania nimi jako grupą (np. wyświetlanie w oknie). Sens tego widać w możliwości zapisywania tych grup i ich stanów w rysunku.

  W dniu 15.11.2012 o 17:32, 2P napisał:
Ponieważ ustawienie aktywnego filtra warstw dotyczy GUI programu, a nie bazy danych rysunku, uważam, że takie rozwiązanie nie jest absurdalne, a jedynie nieoptymalne.

Lepiej by było, gdyby każdy wczytany rysunek posiadał niezależny zapis w rejestrze o ustawionym aktualnym filtrze spośród tych zdefiniowanych w rysunku. Jeszcze lepiej gdyby taki odnośnik do aktualnego filtra zawarty był w samej bazie danych / w pliku DWG. Dzięki temu aktywny filtr byłby taki sam po ponownym otwarciu rysunku.

[D] Jest absurdalne. Wystarczy sobie wyobrazić że plik w "czasie swego życia" może mieć zmieniane nieskończenie wiele razy nazwy warstw, ich cechy, ich filtry. etc. Sam plik może być zapisywany i kopiowany nieskończenie wiele razy. Nie wspomnę o ilości otwieranych plików na jednym komputerze. Zapisywanie i sledzenie tych informacji... nie jest (uważam) ani dobrym ani mądrym pomysłem.

kojacek

Edytowane przez kojacek
Opublikowano
  W dniu 15.11.2012 o 18:26, kojacek napisał:

[D] Jest absurdalne. Wystarczy sobie wyobrazić że plik w "czasie swego życia" może mieć zmieniane nieskończenie wiele razy nazwy warstw, ich cechy, ich filtry. etc. Sam plik może być zapisywany i kopiowany nieskończenie wiele razy. Nie wspomnę o ilości otwieranych plików na jednym komputerze. Zapisywanie i sledzenie tych informacji... nie jest (uważam) ani dobrym ani mądrym pomysłem.

Tak zapis historii zmian warstw w pliku DWG jest może absurdalny, ale 2P nie chodzi o zapis historii zmian warstw, tylko o zapis nazwy aktywnego (aktualnego) filtra w pliku DWG.

Opublikowano
  W dniu 15.11.2012 o 19:18, dmatusz3 napisał:

Tak zapis historii zmian warstw w pliku DWG jest może absurdalny, ale 2P nie chodzi o zapis historii zmian warstw, tylko o zapis nazwy aktywnego (aktualnego) filtra w pliku DWG.

Jak widzę trudno zauważyć zależność filtra warstw od cech warstw. Umówmy się jednak, że zależność taka istnieje. Teraz odpowiedź krótka zatem: W poprawnym pliku dwg mówi o tym wartość 1 kodu 290 danych DXF obiektu typu XRECORD w słowniku "ACLYDICTIONARIES" znajdującego się w ExtensionDictionary obiektu TABLE o nazwie "LAYER". W pliku dwg tworzonym przez ZwCAD filtry warstw w tym znaczeniu nie istnieją.

kojacek

Opublikowano (edytowane)
  W dniu 15.11.2012 o 18:26, kojacek napisał:

[A] Ja to rozumiem. Ale już na początku musimy rodzielić dwie rzeczy. Filtry warstw takie jak są zdefiniowane w natywnym pliku dwg i filtry warstw definiowane przez ZwCAD-a. Okazało się że to dwie różne rzeczy. O ile standardem jest tenże filtr z adesk-owego dwg (i dxf), tak ten z ZwCAD-a filtrem w tym znaczeniu nie jest. Jest poprawnym (i dopuszczalnym) wpisem (słownikiem + XRecord-em), niemniej filtrem warstw (powtarzam jeszcze raz) nie jest.

Przede wszystkim trzeba sprecyzować, czy sednem sprawy jest sposób wewnętrznego zapisu określonej funkcjonalności (lub zapisu tej funkcjonalności w pliku na dysku), czy też sposób zrealizowania i działania danej funkcjonalności od strony użytkownika (GUI). Ponieważ mnie jest całkowicie obojętne jak dana funkcjonalność zrealizowana jest np. w autoCADzie od strony wewnętrznej budowy bazy danych (nie zamierzam wracać do autoCADa, a programy piszę tylko dla ZWcada) interesuje mnie głównie struktura wewnętrzna ZWcada. Wcale bym nie rozpaczał, gdyby np. ZWcad działał w oparciu o zupełnie inne założenia wewnętrzne niż to kiedyś opracował autodesk... może nawet bym się z tego cieszył gdyby pewne rozwiązania nie ciągnęły się od lat 80/90... Ale to nie ten temat.

Możliwe, że słowo "filtr warstw" w autocadowym świecie znaczy coś zupełnie innego. Ja rozstałem się z autocadem ok 2004/5r i wtedy warstwy były filtrowane tak jak teraz w ZWcadzie. Filtrowane, tzn dla mnie, wyświetlane/odsiewane w okienku Layer wg określonego wzorca. To pozwala po "odsianiu" operować na grupach warstw nadając im zamierzone parametry. Możliwe, że w AutoCADzie jest to realizowane inaczej od strony użytkownika i GUI. Ale dla mnie to są filtry i sposób zapisu w bazie danych jest sprawą naprawdę drugorzędną. ZWcadowy filtr jest "...poprawnym (i dopuszczalnym) wpisem (słownikiem + XRecord-em), niemniej filtrem warstw (powtarzam jeszcze raz) nie jest."... owszem nie jest, ale raczej w autocadowym rozumieniu filtrów.

  W dniu 15.11.2012 o 18:26, kojacek napisał:

Z uwagi na [A] - mogłem tego nie wiedzieć, bowiem "filtr" ZwCAD-a nie jest filtrem warstw. Rzekoma 100% zgodność dwg jest zatem mitem. ZwCAD nie widzi filtrów warstw AutoCAD-a, i odwrotnie.

A czy ktoś w tym wątku wymagał takiej wiedzy? Pomijając ZWcada, nie padła nawet odpowiedź, jak problem zrealizować w autoCADzie. Jak spowodować, żeby w liście warstw na toolbarze wyświetlić tylko określony zestaw warstw? Chyba autoCAD ma jeszcze listę warstw dostępną z okna głównego, jak w starych wersjach? Jak w oknie ustawień warstw wyświetlić tylko określony zestaw warstw? Jak to zrealizować z poziomu LISPa? Z premedytacją w opisie problemu tym razem pominąłem słowo "filtr warstw" skoro oznacza coś innego w autoCAdzie... :)

Odpowiedź jak to zrealizować w autoCADzie, mogłaby dać trop jak to zrobić w ZW.

A 100% zgodność dwg, oczywiście, że jest mitem. Jak może być w pełni zachowana zgodność skoro w acadzie występują funkcjonalności niezrealizowane w ZW i odwrotnie....

Już sama nazwa: ICAD_LAYERFILTER - świadczy o niezgodności.

  W dniu 15.11.2012 o 18:26, kojacek napisał:

[C] I to nie ma właśnie sensu. Podstawową cechą filtra warstw jest ich grupowanie w celu manipulowania nimi jako grupą (np. wyświetlanie w oknie). Sens tego widać w możliwości zapisywania tych grup i ich stanów w rysunku.

Cóż... dla mnie to to coś, co jest w ZWcadzie nazywane "przekornie" filtrami warstw właśnie to umożliwia. Szczególnie jeśli dodamy do tego możliwość zapisywania stanów warstw w "Layer States Manager"

  W dniu 15.11.2012 o 18:26, kojacek napisał:

[D] Jest absurdalne. Wystarczy sobie wyobrazić że plik w "czasie swego życia" może mieć zmieniane nieskończenie wiele razy nazwy warstw, ich cechy, ich filtry. etc. Sam plik może być zapisywany i kopiowany nieskończenie wiele razy. Nie wspomnę o ilości otwieranych plików na jednym komputerze. Zapisywanie i sledzenie tych informacji... nie jest (uważam) ani dobrym ani mądrym pomysłem.

Prawdę powiedziawszy nie widzę związku co do sprawy ma kopiowanie i zapisywanie plików... przecież filtry nie giną, nie mieszają się i są zapisywane....

Może jednak uruchomię AutoCADa po tylu latach i sprawdzę O CO CHODZI???

Pozdrawiam

Edytowane przez 2P
Opublikowano
  W dniu 15.11.2012 o 19:57, kojacek napisał:

Jak widzę trudno zauważyć zależność filtra warstw od cech warstw. Umówmy się jednak, że zależność taka istnieje. Teraz odpowiedź krótka zatem: W poprawnym pliku dwg mówi o tym wartość 1 kodu 290 danych DXF obiektu typu XRECORD w słowniku "ACLYDICTIONARIES" znajdującego się w ExtensionDictionary obiektu TABLE o nazwie "LAYER". W pliku dwg tworzonym przez ZwCAD filtry warstw w tym znaczeniu nie istnieją.

O! Jest trop :) Jeśli to są filtry w autoCADzie, to co to jest w autocadzie coś co jest w słowniku ma w swoje strukturze nazwę: ACAD_LAYERFILTER i ludzie na różnych forach chcą to kasować?

Opublikowano (edytowane)

Dyskusja zaczyna być jałowa. Dyskusja o ideologii używania czy nieużywania tego czy innego programu mnie nie pociąga. Jakieś tam przekonanie na temat swojej wiedzy o (A/V)LISP-ie, budowy struktury rysunkowej bazy danych DXF dokumentu AutoCAD-a, mam, być może przesadzone. Słysząc o 100% zgodności dwg ZwCAD-a z AutoCAD-em, także głębokiej zgodności implementacji LISP-a w tych dwóch programach, spodziewałem się że te rzeczy są zgodne, jak ma to miejsce w przypadku np. warstw, rodzajów linii czy stylów tekstu. Stąd też zabrałem głos na ten temat, widać niepotrzebnie. Choć nauka jakaś z tego płynie: choćby to że kruszy tem mit 100% zgodności.

kojacek

Edytowane przez kojacek

Dołącz do dyskusji

Możesz dodać zawartość już teraz a zarejestrować się później. Jeśli posiadasz już konto, zaloguj się aby dodać zawartość za jego pomocą.

Gość
Dodaj odpowiedź do tematu...

×   Wklejono zawartość z formatowaniem.   Usuń formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Odnośnik został automatycznie osadzony.   Przywróć wyświetlanie jako odnośnik

×   Przywrócono poprzednią zawartość.   Wyczyść edytor

×   Nie możesz bezpośrednio wkleić grafiki. Dodaj lub załącz grafiki z adresu URL.