-
Postów
252 -
Dołączył
-
Ostatnia wizyta
-
Wygrane w rankingu
35
Treść opublikowana przez kojacek
-
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.
-
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.
-
Jak rozumiem, brak zainteresowania - nie ma potrzeby rozwijania tematu?
-
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?
-
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ń.
-
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ć.
-
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) )
-
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...
-
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).
-
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.
-
Odczytywanie długości elementów
kojacek odpowiedział(a) na KBR temat w Wsparcie programistyczne LISP i VisualLISP
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 -
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
-
Jak wczytać plik/dane o adresie URL
kojacek odpowiedział(a) na 2P temat w Wsparcie programistyczne LISP i VisualLISP
Zagadnienie nie jest szczególnie skomplikowane, oczywiście mówię o VisualLISP-ie: http://forum.cad.pl/autolisp-czytanie-strony-www-t80597.html kojacek -
Piszemy darmowa nakładka ? Jaka ?
kojacek odpowiedział(a) na Jason temat w Nakładki na ZWCAD i ZWCAD+
wygląda znajomo ;) -
Jak ustawić filtr warstwy w LISPie?
kojacek odpowiedział(a) na 2P temat w Wsparcie programistyczne LISP i VisualLISP
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 -
Jak ustawić filtr warstwy w LISPie?
kojacek odpowiedział(a) na 2P temat w Wsparcie programistyczne LISP i VisualLISP
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 -
Jak ustawić filtr warstwy w LISPie?
kojacek odpowiedział(a) na 2P temat w Wsparcie programistyczne LISP i VisualLISP
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 -
Jak ustawić filtr warstwy w LISPie?
kojacek odpowiedział(a) na 2P temat w Wsparcie programistyczne LISP i VisualLISP
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 -
Jak ustawić filtr warstwy w LISPie?
kojacek odpowiedział(a) na 2P temat w Wsparcie programistyczne LISP i VisualLISP
[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 -
Jak ustawić filtr warstwy w LISPie?
kojacek odpowiedział(a) na 2P temat w Wsparcie programistyczne LISP i VisualLISP
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 -
Jak ustawić filtr warstwy w LISPie?
kojacek odpowiedział(a) na 2P temat w Wsparcie programistyczne LISP i VisualLISP
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 -
Jak ustawić filtr warstwy w LISPie?
kojacek odpowiedział(a) na 2P temat w Wsparcie programistyczne LISP i VisualLISP
Jaka to jest wartość - jeśli mozna spytać? Nazwa filtra? kojacek -
Jak ustawić filtr warstwy w LISPie?
kojacek odpowiedział(a) na 2P temat w Wsparcie programistyczne LISP i VisualLISP
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 -
Jak ustawić filtr warstwy w LISPie?
kojacek odpowiedział(a) na 2P temat w Wsparcie programistyczne LISP i VisualLISP
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 -
Jak ustawić filtr warstwy w LISPie?
kojacek odpowiedział(a) na 2P temat w Wsparcie programistyczne LISP i VisualLISP
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