kojacek

Użytkownik forum
  • Postów

    252
  • Dołączył

  • Ostatnia wizyta

  • Wygrane w rankingu

    35

Treść opublikowana przez kojacek

  1. 1) W poprzedniej wersji (zapomnijmy o niej na marginesie) rzeczywiście zamiast współczynnika można było podać ENTER (domyślnie 1). W tej usunąłem ten mechanizm i wymagane jest podanie zawsze wartości. Pozostał jedynie poprzedni monit, które trzeba będzie poprawić - to moje niedopatrzenie. Chyba że chcecie w tej wersji mieć poprezdnie rozwiązanie. Decydujcie. 2) Należy odróżnić dwie opcje AKTUALIZUJ i UZGODNIJ. Pierwsza ma zastosowanie do wymiaru (zawsze skażonego) ale takiego, który w wyniku jakiejś edycji został zmieniony (np. rozciągnięty uchwytami). Program pobiera jego dane (współczynnik i stałą), ponownie odczytuje jego rzeczywistą długość, uwzględnia te dane i zmienia tekst wymiaru (aktualizuje) na oczekiwany. Druga zaś opcja ma zastosowanie w przypadku gdy w rysunku mamy wymiary o różnych współczynnikach (albo stałych). Pozwala ona przenościć te cechy (uzgadniać) z jednego wymiaru na drugi.
  2. Zatem jest już coś, co działa chyba dobrze. Brakuje jeszcze obsługi błędów, ale to zawsze na koniec po testach, najlepiej dodać. Przede wszystkim na początek: 1) Potrzebna jest bliblioteka CADPL-Pack, którą można pobrać stąd: http://forum.cad.pl/cadpl-pack-v1-lsp-t78161.html 2) Powinna ona znajdować się w ścieżce poszukiwań 3) Kod należy skopiować do pliku (XDim.lsp) i załadować 4) Dostępne jest główne polecenie -XDIM (oraz dla wygody polecenia: XDIM, XDIMRES, XDIMREG, XDIMMAT 5) Program testowany przezemnie na AutoCAD-zie, zatem nie ma pewności, czy w całości tak będzie pod ZwCAD. Mam nadzieję że tak. Testujcie. Wywołując polecenie -XDIM, macie do wyboru wiele opcji. Działanie ich wszystkich jest (mam nadzieję) intuicyjne. Poniżej kod: ; =========================================================================================== ; ; XDim.lsp by kojacek ; 11-06-2014 ; Wymaga biblioteki: CADPL-Pack-v1.lsp <http://forum.cad.pl/cadpl-pack-v1-lsp-t78161.html> ; =========================================================================================== ; (if (not cd:ACX_ADoc)(load (findfile "CADPL-Pack-v1.lsp"))) ; ------------------------------------------------------------------------------------------- ; (defun C:-XDIM (/ k) (setq m (_MsgData t)) (setq k (cd:USR_GetKeyWord (strcat "\nWymiar skażony " m) '("Rysuj" "Uzgodnij" "Aktualizuj" "Przywróć" "uStawienia" "Wyjdź") (if (not *XDIMDATA*) "Rysuj" (caddr *XDIMDATA*)) ) ) (cond ( (= k "Wyjdź")(princ "\nAnulowano. ")) ( (= k "Rysuj")(C:XDIM)) ( (= k "Uzgodnij")(C:XDIMMAT)) ( (= k "Aktualizuj")(C:XDIMREG)) ( (= k "uStawienia") (_SetupDim)) ( (= k "Przywróć")(C:XDIMRES)) (t (princ "\nAnulowano. ")) ) (if (/= k "Wyjdź") (setq *XDIMDATA* (if *XDIMDATA* (list (car *XDIMDATA*)(cadr *XDIMDATA*) k) ) ) ) (princ) ) ; ------------------------------------------------------------------------------------------- ; (defun C:XDIMRES ()(_RestoreTextDim 0)(princ)) (defun C:XDIMREG ()(_RestoreTextDim 1)(princ)) (defun C:XDIMMAT ()(_MatchDim)(princ)) (defun C:XDIM ()(_DrawDynDim)(princ)) ; ------------------------------------------------------------------------------------------- ; (defun _MsgData (Val) (if (listp Val) (strcat "(Stała = " (cd:CON_Real2Str (cdr (assoc 1040 Val)) 2 2) " / Współczynnik = " (cd:CON_Real2Str (cdr (assoc 1041 Val)) 2 2) ")" ) (if *XDIMDATA* (strcat "(Stała = " (cd:CON_Real2Str (car *XDIMDATA*) 2 2) " / Współczynnik = " (cd:CON_Real2Str (cadr *XDIMDATA*) 2 2) ")" ) "(Brak ustawień)" ) ) ) ; ------------------------------------------------------------------------------------------- ; (defun _SetupDim (/ l m k s) (setq s (null (ssget "_x" '((0 . "DIM*") (-3 ("xDimTextReplacment"))))) m (_MsgData T) l (if (= m "(Brak ustawień)")'("Zmień") '("Zmień" "Resetuj")) k (cd:USR_GetKeyWord (strcat "\nUstawienia wymiaru skażonego " m ": ") (if s (append l '("Wyjdź"))(append l '("Pobierz z wymiaru" "Wyjdź"))) "Wyjdź" ) ) (cond ( (= k "Wyjdź")(princ "\nAnulowano. ")) ( (= k "Zmień")(setq *XDIMDATA* nil)(_SetGlobalData "uStawienia")) ( (= k "Resetuj")(setq *XDIMDATA* nil)) ( (= k "Pobierz")(_FromDimData)) (t (princ "Anulowano. ")) ) ) ; ------------------------------------------------------------------------------------------- ; (defun _FromDimData (/ i) (if (null (setq i (_GetSourceDim))) nil (progn (setq i (car i)) (setq *XDIMDATA* (list (cdr (assoc 1040 i))(cdr (assoc 1041 i))(caddr *XDIMDATA*) ) ) (princ (strcat "\nUstawienia: " (_MsgData t))) ) ) ) ; ------------------------------------------------------------------------------------------- ; (defun _MatchDim (/ i e d m sel en x) (if (null (setq i (_GetSourceDim))) nil (progn (setq e (last i) d (car i) m (_MsgData d) ) (redraw e 3) (while (and (setq sel (entsel (strcat "\n" m " Wybierz wymiar docelowy: "))) (not (null (setq en (car sel)))) (= (cdr (assoc 0 (entget en))) "DIMENSION") ) (_PutXDimData en (cdr (assoc 1040 d))(cdr (assoc 1041 d))) (setq x (cdr (cd:XDT_GetXData en "xDimTextReplacment"))) (_UpdateDimText nil en (cdr (assoc 1040 x))(cdr (assoc 1041 x))) (princ "Uzgodniono wymiar. ") ) (redraw e 4) ) ) ) ; ------------------------------------------------------------------------------------------- ; (defun _GetSourceDim (/ sel e d) (while (and (setq sel (entsel "\nWybierz wymiar źródłowy: ")) (not (null (setq e (car sel)))) (not (setq d (cdr (cd:XDT_GetXData e "xDimTextReplacment")))) ) ) (cond ( (not e) (princ "Nic nie wskazano. ") nil) ( (not d) (princ "Niewłaściwy obiekt. ") nil) (t (list d e)) ) ) ; ------------------------------------------------------------------------------------------- ; (defun _RestoreTextDim (Mode / sel e) (while (and (setq sel (entsel "\nWybierz wymiar: ")) (not (null (setq e (car sel)))) ) (if (setq d (cdr (cd:XDT_GetXData e "xDimTextReplacment"))) (progn (cond ( (= Mode 0)(_UpdateDimText t e nil nil)) ( (= Mode 1)(_UpdateDimText nil e (cdr (assoc 1040 d))(cdr (assoc 1041 d)))) (t nil) ) (princ (cond ( (= Mode 0) "Przywrócono pierwotny wymiar. ") ( (= Mode 1) "Zaktualizowano wymiar. ") (t nil) ) ) ) (if (= (cdr (assoc 0 (entget e))) "DIMENSION") (princ "Wymiar nie jest skażony. ") (princ "To nie jest wymiar. ") ) ) ) ) ; ------------------------------------------------------------------------------------------- ; (defun _UpdateDimText (Mode Ent Con Fac / d n nd) (setq d (entget Ent)) (if Mode (progn (cd:XDT_RemoveXData Ent "xDimTextReplacment") (setq nd (subst (cons 1 "")(assoc 1 d) d)) ) (setq n (+ Con (* Fac (cdr (assoc 42 d)))) nd (subst (cons 1 (cd:CON_Real2Str n 2 2))(assoc 1 d) d) ) ) (entmod nd) ) ; ------------------------------------------------------------------------------------------- ; (defun _PutXDimData (Ent VCon VFac) (cd:XDT_PutXData Ent "xDimTextReplacment" (list (cons 1040 VCon) (cons 1041 VFac) ) ) ) ; ------------------------------------------------------------------------------------------- ; (defun _SetGlobalData (Key / v1 v2) (if (not *XDIMDATA*) (progn (initget (+ 1 2 4)) (if (setq v1 (getreal "\nPodaj stałą wymiaru: ")) (progn (initget (+ 1 2 4)) (setq v2 (getreal "\nPodaj współczynnik (lub ENTER): ")) (setq *XDIMDATA* (list v1 (if (not v2) 1.0 v2)(if Key Key "Rysuj")) ) ) ) ) ) ) ; ------------------------------------------------------------------------------------------- ; (defun _DrawDynDim (/ pt Cmd e el d n nd) (_SetGlobalData nil) (if (setq pt (getpoint "\nOkreśl początek pierwszej pomocniczej linii wymiarowej: ") ) (progn (setq Cmd (getvar "CmdEcho") e (entlast) ) (setvar "CmdEcho" 0) (command "_.DimLinear" pt) (setvar "CmdEcho" Cmd) (while (= 1 (logand (getvar "CmdActive") 1)) (command "\\") ) (if (eq (setq el (entlast)) e) (princ "Anulowano. ") (progn (_PutXDimData el (car *XDIMDATA*)(if (not (cadr *XDIMDATA*)) 1.0 (cadr *XDIMDATA*))) (setq d (cdr (cd:XDT_GetXData el "xDimTextReplacment"))) (_UpdateDimText nil el (cdr (assoc 1040 d))(cdr (assoc 1041 d))) ) ) ) (princ "Anulowano. ") ) ) ; ------------------------------------------------------------------------------------------- ; (princ "\nPolecenie -XDIM") (princ) Mówcie jak działa.
  3. Jak rozumiem, brak zainteresowania - nie ma potrzeby rozwijania tematu?
  4. A co powiecie na coś takiego? Rysując wymiar skażony dane (stała i współczynnik) przypisane są do wymiaru. Pozwala to mieć w rysunku różne wymiary z różnymi danymi. I teraz, takie polecenie -XDIM, ma następujące opcje: Rysuj - rysuje wymiar zmieniając tekst (tak jak wcześniejsze XDIM) Uzgodnij - przypisuje dowolnie wskazanym wymiarom ustawienia (stała i współczynnik) z wymiaru źródłowego. Aktualizuj - po rozciągnięciu wymiaru skażonego, pozwala go zaktualizować. Przywróć - usuwa "skażenie" - przywraca wymiar o długości normalnej Ustawienia - ustawienia współczynnika i skali Idziemy w tym kierunku?
  5. Nie ma potrzeby tworzenia wariantu polegającego na usuwaniu czekokolwiek. Wystarczy zdefiniować nowe polecenie np. XDIM2, w taki sposób: (defun C:XDIM2 ()(setq *XDIMDATA* nil)(C:XDIM)(princ)) Zaletą takiego rozwiązania jest wykorzystywanie wcześniej zdefiniowanej funkcji (polecenia) C:XDIM, bez niepotrzebnego kopiowania (w efekcie dublowania) kodu. Wbrew pozorom (rzekomej nieszkodliwości) ma to głęboki sens, w utrzymaniu spójności i "czystości" rozwiązań.
  6. Tak. Wystarczy w linii poleceń wpisać: (setq *XDIMDATA* nil) Ponowne wywołanie polecenia XDIM, odpyta o nowe dane. Oczywiście nowe ustawienia zadziałają tylko dla nowych wymiarów, Można pomysleć o jakimś reaktorze, dla takich wymiarów (aby nadać im dynamiki), ale chyba narzędzie jest zbyt niszowe, by się w to bawić (?) Edyta: Inna opcja to "przywiązanie" danych (współczynnika i stałej) do wymiaru. Taki zabieg pozwoliłby sprawdzić wartości i nawet je modyfikować.
  7. Zmień kod na poniższy i sprawdź teraz: ; ------------------------------------------------------------------------------------------- ; ; by kojacek 2014 ; ------------------------------------------------------------------------------------------- ; (defun C:XDIM (/ pt Cmd v1 v2 e el d n nd) (if (not *XDIMDATA*) (progn (initget (+ 1 2 4)) (setq v1 (getreal "\nPodaj stałą wymiaru: ") v2 (getreal "\nPodaj współczynnik (lub ENTER): ") ) (setq *XDIMDATA* (list v1 v2)) ) ) (if (setq pt (getpoint "\nOkreśl początek pierwszej pomocniczej linii wymiarowej: ") ) (progn (setq Cmd (getvar "CmdEcho") e (entlast) ) (setvar "CmdEcho" 0) (command "_.DimLinear" pt) (setvar "CmdEcho" Cmd) ; (command "'_.SetVar" "CmdEcho" Cmd) (while (= 1 (logand (getvar "CmdActive") 1)) (command "\\") ) (if (eq (setq el (entlast)) e) (princ "\nAnulowano. ") (progn (setq d (entget el) n (cdr (assoc 42 d)) n (* (if (not (cadr *XDIMDATA*)) 1 (cadr *XDIMDATA*)) n) n (+ (car *XDIMDATA*) n) nd (subst (cons 1 (rtos n 2 2))(assoc 1 d) d) ) (entmod nd) ) ) ) (princ "\nAnulowano. ") ) (princ) )
  8. Pobadajcie takiego lispa. Działa w ten sposób: Jeśli nie ma zdefiniowanej zmiennej globalnej *XDIMDATA*, prosi o podanie stałej (dodawanej do wymiaru) oraz współczynnika skalowania długości (tutaj można dać ENTER (wtedy bez współczynnika). Potem należy wskazać pierwszy punkt wymiaru, potem drugi. W konsekwencji malowany jest wymiar z nadpisanym tekstem wymiarowym o wartości WYMIAR x WSPÓŁCZYNNIK + STAŁA. Po załadowaniu lisp-a, polecenie XDIM ; ------------------------------------------------------------------------------------------- ; ; by kojacek 2014 ; ------------------------------------------------------------------------------------------- ; (defun C:XDIM (/ pt Cmd v1 v2 e el d n nd) (if (not *XDIMDATA*) (progn (initget (+ 1 2 4)) (setq v1 (getreal "\nPodaj stałą wymiaru: ") v2 (getreal "\nPodaj współczynnik (lub ENTER): ") ) (setq *XDIMDATA* (list v1 v2)) ) ) (if (setq pt (getpoint "\nOkreśl początek pierwszej pomocniczej linii wymiarowej: ") ) (progn (setq Cmd (getvar "CmdEcho") e (entlast) ) (setvar "CmdEcho" 0) (command "_.DimLinear" pt) (command "'_.SetVar" "CmdEcho" Cmd) (while (= 1 (logand (getvar "CmdActive") 1)) (command "\\") ) (if (eq (setq el (entlast)) e) (princ "\nAnulowano. ") (progn (setq d (entget el) n (cdr (assoc 42 d)) n (* (if (not (cadr *XDIMDATA*)) 1 (cadr *XDIMDATA*)) n) n (+ (car *XDIMDATA*) n) nd (subst (cons 1 (rtos n))(assoc 1 d) d) ) (entmod nd) ) ) ) (princ "\nAnulowano. ") ) (princ) ) Sprawdźcie czy działa...
  9. Jeśli dobrze zrozumiałem ZwCAD obsługuje FIELD-y ale (jednocześnie) nie obsługuje formuł? Jeśli zaś obsługuje, to proste narzędzie można przecież wykrzesać lisp-em, nieszczególnie skomplikowanym. Rozwiązanie które proponuję, właśnie dodaje dowolną wartość do (rzeczywistego) tekstu wymiarowego, w sposób dynamiczny (rozciągnięcie wymiaru nadąża za zmianami).
  10. Jeśli ZwCAD obsługuje obiekty typu FIELD, jest to jak najbardziej możliwe. W AutoCAD zrobiłem to tak: Utworzyłem obiekt tekstowy typu field, z przypisaną formułą typu 100 + <wartość wskazanego wymiaru>. Następnie, edytując ten wymiar, zamiast <> wprowadzam field z wartością tego tekstu. W efekcie wartość pokazywana przez wymiar pokazuje owe 100 + jego długość. Oczywiście edycja wymiaru uchwytami (rozciągnięcie) i regeneracja, nadążają za zmianami.
  11. Zależy w jakim banku masz (to konto)... ;) Jeżeli zaś chodzi o polilinie, jej długości etc. Tutaj jest parę różności: http://forum.cad.pl/wiczenie-lisp-lwpolyline-t74939.html O kątach segmentów nie ma chyba nic, niemniej uważny czytelnik na podstawie tej lektury powinien sobie z tym dać spokojnie radę. Przy sprawdzaniu kątów swgmentów, dodatkowo (dla tekstów) należy zwrócić uwagę, na ich prwidłową orientację. Przykładowo pionowy odcinek może mieć kąt 90 stopni, jak i 180, zatem powinno się je trakować tożsamo - tekst zaś powinien mieć w obu przypadkach jedną orientację. Zabawy (z obrotem) dowolnego wymiaru liniowego dobrze to ilustrują. kojacek
  12. Prawda i nie(cała)prawda. Rzeczywiście (i tu prawda) textbox ma zastosowanie tylko dla obiektów typu TEXT. Dla tekstów wielowieszowych zaś (obiekty MTEXT), vla-getboundingbox, zwraca ramkę określającą obszar samego obiektu (nie zaś obszar dla rzeczywistej treści). Przypadki gdy szerokość tekstu wielowierszowego jest wielokrotnie większa niźli szerokość jego treści, są dość powszechne. kojacek
  13. Zagadnienie nie jest szczególnie skomplikowane, oczywiście mówię o VisualLISP-ie: http://forum.cad.pl/autolisp-czytanie-strony-www-t80597.html kojacek
  14. wygląda znajomo ;)
  15. Ja odniosłem takie wrażenie parę postów wcześniej, ale w odwrotną stronę... ;) Umówmy się jednak że rozróżnimy funkcjonalność programu od formatu pliku. W pełnym i LT tenże ostatni niczym się nie różni. Zatem nie ma o czym gadać. Na marginesie zaś - argument typu: "Wprawdzie u nas nie wszystko jest ok, aly wy Murzynów bijecie..." jest taki sobie... ;) Hmmm... a co co ja mam z tym wspólnego? Każdy może mieć zdanie na każdy temat. Ja uważam że zgodność powinna być jak najdalej idąca. Cały czas mówię o zgodności pliku, nie programów. To drugie to rzecz raczej wtórna według mnie. Jak wyżej, nie zgadzam się z taką opinią - jednak zbyt wiele trzeba by o tym mówić, a to nie jest ten temat. No i dotarlismy wreszcie do sedna. Opublikuj jakiś plik z tymi nowymi filtrami, z ciekawości pobadam jak to wygląda.kojacek
  16. 1) Moim zdaniem powinno wam zależeć na 100% zgodności zawsze, bowiem nie żyjecie tylko w swoim światku - prawdopodobnie pracujecie (czy spotkacie się) na plikach które mogą "przechodzić" przez różne aplikacje, poczawszy od AutoCAD-a, ZwCAD-y wszelkiej maści po wszystkie inne, zapisujące ogólnie dwg. Jak najszersza zgodność jest jak najbardziej pożądana. 2) Wobec powyzszej mojej opinii, wydaje mi się że brnięcie przez producenta ZwCAD-a, w filtry własnego pomysłu (ICAD_LAYERFILTERS) jest pomysłem złym. Zwłaszcza że funkcjonalnie, rozwiązaniem nie lepszym a jak widać raczej gorszym. Prędzej czy później (obawiam się że później jednak) przyjąć będzie musiał (powinien) jednak standard filtrów adesk-owy. 3) Póki co, (myslę że małym kosztem) możecie sobie wyLISPować coś na kształt nieudokumentowanego polecenia jakie jest w AutoCAD-zie, mianowicie +LAYER. Wygląda ono tak: czyli z listy dostępnych filtrów w aktualnym rysunku, tworzy listę słów kluczowych, a po wybraniu dowolnego z nich uruchamia menadzera warstw z włączonym określonym filtrem. LISP-owo wyglądać to może tak że wystarczy zrobić funkcję z argumentem w postaci nazwy filtra (jeden z istniejących w rysunku), która dokonywałaby zapisu w rejestrze i uruchamiała menadzera warstw. Sprawny LISP-acz mógły zrobić to pewnie w 10-15 minut. kojacek
  17. 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
  18. 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
  19. [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. 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. [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. [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
  20. 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
  21. 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
  22. Jaka to jest wartość - jeśli mozna spytać? Nazwa filtra? kojacek
  23. 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): kojacek
  24. 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): 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
  25. 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