Harry Opublikowano 18 Stycznia 2012 Zgłoś Udostępnij Opublikowano 18 Stycznia 2012 Witam Po 10 latach pracy na autocadach przesiadłem się na ZwCAD'a. Ogólnie programik bardzo fajny, mało zasobożerny a przede wszystkim tani. Jednak w trakcie użytkowania zauważyłem brak 2 dosyć fajnych funkcji: 1) SETBYLAYER (po PL - ustjakwar) - polecenie sprawia, ze wszystkie zaznaczone obiekty zmieniają kolor, rodzaj linii, grubość na parametr jak warstwa. (przydatne, przy tzw. wyszarzeniu rysunków. 2) Ctrl+0 - skrót klawiszowy, który powodował przejście aplikacji w tryb pełnoekranowy z wyłączeniem paska menu (oraz opcjonalnie paska poleceń). Bardzo przydatna funkcja, szczególnie przy mniejszych monitorach (chociaż stosowałem ją często przy 27 calach). Jeśli ktoś ma rozwiązanie zastępcze na ww. funkcje, będę bardzo wdzięczny za pomoc. P.s. wersja 2012 PL - 2011.10.30(17176) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
KBR Opublikowano 18 Stycznia 2012 Zgłoś Udostępnij Opublikowano 18 Stycznia 2012 Można w ikonach zrobić sobie ikonę "ustaw jak warstwa" wpisując w wierszu polecenie ^C^Cchange \P C ByLayer;LT ByLayer;LW ByLayer;; I będzie zmieniało wszystkie Kolor, rodzaj i grubość linii na ByLayer Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Pablo Opublikowano 18 Stycznia 2012 Zgłoś Udostępnij Opublikowano 18 Stycznia 2012 ad 1) Może nie do końca rozumiem o co chodzi, ale czy opisanego zadania nie spełnia polecenie: Narzędzia dodatkowe -> Warstwy -> Uzgodnienie warstw (LAYMCH) ? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
gruzin Opublikowano 18 Stycznia 2012 Zgłoś Udostępnij Opublikowano 18 Stycznia 2012 Żadna z tych metod nie jest tak dobra jak oryginalne SETBYLAYER W oryginale działa to tak że możemy zmienic na "jakwarstwa" w wybranych elementach określone cechy np kolor, grubość itp. Najlepsze jest to że wewnątrz bloków również wszystkie elementy zmieniają się na JAKWARSTWA. Jest to konieczne jeżeli podczytujemy sobie plik dwg jako Xref i chcemy nadać warstwom tego pliku określone cechy np szary kolor podkładu od architekta. Jeżeli architekt nadał ścianom kolor np czerwony (ścianom a nie warstwie) to u nas w pliku nie da się tego zmienić bez poprawy pliku np poleceniem SETBYLAYER. Zwcad 2012 ma kilka pochodnych funkcji SETBYLAYER w narzędziach "Express" -> "Block" Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Harry Opublikowano 19 Stycznia 2012 Autor Zgłoś Udostępnij Opublikowano 19 Stycznia 2012 Żadna z tych metod nie jest tak dobra jak oryginalne SETBYLAYERW oryginale działa to tak że możemy zmienic na "jakwarstwa" w wybranych elementach określone cechy np kolor, grubość itp. Najlepsze jest to że wewnątrz bloków również wszystkie elementy zmieniają się na JAKWARSTWA. Jest to konieczne jeżeli podczytujemy sobie plik dwg jako Xref i chcemy nadać warstwom tego pliku określone cechy np szary kolor podkładu od architekta. Jeżeli architekt nadał ścianom kolor np czerwony (ścianom a nie warstwie) to u nas w pliku nie da się tego zmienić bez poprawy pliku np poleceniem SETBYLAYER. Zwcad 2012 ma kilka pochodnych funkcji SETBYLAYER w narzędziach "Express" -> "Block" Dokładnie. Jest to bardzo pomocne przy podkładach od architektów, gdyż wielu z nich rysując w programach typu archicad eksportuje do dwg i bardzo dużo elementów jest np. na warstwie "0" a kolory są ustalane dla poszczególnych obiektów a nie dla warstw. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Assgarth Opublikowano 19 Stycznia 2012 Zgłoś Udostępnij Opublikowano 19 Stycznia 2012 1) SETBYLAYER (po PL - ustjakwar) - polecenie sprawia, ze wszystkie zaznaczone obiekty zmieniają kolor, rodzaj linii, grubość na parametr jak warstwa. (przydatne, przy tzw. wyszarzeniu rysunków. Możesz skorzystać z LISP'a. Drobna modyfikacja pod kątem ZwCADa (źródło jest na cad.pl): ;;; ======================================================================================= ;;; ;;; CADPL-Pack-v1.lsp ;;; ;;; ;;; ;;; ======================================================================================= ;;; ; =========================================================================================== ; ; Zmienia cechy obiektu VLA / Sets the property of VLA-Object ; ; Obj [VLA-Object] - obiekt / object ; ; Lst [list] - lista cech par kropkowych / list of dotted pairs properties ; ; ------------------------------------------------------------------------------------------- ; ; (cd:ACX_SetProp ; ; (vlax-ename->vla-object (entlast)) ; ; '(("LineType" . "BLA")("Color" . 1)("Layer" . "0")) ; ; ) ; ; =========================================================================================== ; (defun cd:ACX_SetProp (Obj Lst / a) (if (vlax-write-enabled-p Obj) (mapcar (function (lambda (% / %1) (cons (car %) (if (vlax-property-available-p Obj (car %)) ; iCAD ;(if (vlax-property-available-p Obj (car a) (cdr a)) ; AutoCAD (if (setq %1 (vl-catch-all-apply (quote vlax-put-property) (list Obj (car %) (cdr %)) ) ) %1 :vlax-true ) :vlax-null ) ) ) ) Lst ) ) ) ;przykładowe wywołanie (zmiana typu linii, kolor i warstwa) dla jednego wskazanego obiektu: ;(cd:ACX_SetProp (vlax-ename->vla-object (entlast)) '(("LineType" . "Continuous")("Color" . 256)("Layer" . "0"))) ; =========================================================================================== ; (princ "\n------- CADPL-Pack-v1.lsp - http://forum.cad.pl -------") (princ "\n--------------- Open Source 2011 - 2012 ---------------") (princ) Dalej, aby zadziałać na wszystkich wskazanych obiektach: ;;--------------------------------=={ zk:SSZbr->List }==-----------------------------------;; ;; Zamienia ss-grupę na listę z entity name ;; ;;-----------------------------------------------------------------------------------------;; ;; ssZbr [sSGET] - SS-group ;; ;;-----------------------------------------------------------------------------------------;; (defun zk:SSZbr->List (ssZbr / % lista) (repeat (setq % (sslength ssZbr)) (setq % (1- %) lista (cons (ssname ssZbr %) lista)) ) ) (defun c:Test () (foreach % (zk:SSZbr->List (ssget)) (cd:ACX_SetProp (vlax-ename->vla-object %) '(("LineType" . "Continuous")("Color" . 256)("Layer" . "0")("Lineweight" . "50"))) )) W przypadku ZwCAD może być konieczność regeneracji widoku obiektów - funkcja "REGEN". pozdrawiam Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Harry Opublikowano 19 Stycznia 2012 Autor Zgłoś Udostępnij Opublikowano 19 Stycznia 2012 Dziękuje Lisp powinien poradzić sobie z tym "problemem" Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Stefan Opublikowano 20 Stycznia 2012 Zgłoś Udostępnij Opublikowano 20 Stycznia 2012 Nie rozumiem za bardzo autora tematu a nie można po prostu zmienić parametru "Kolor" na ByLayer na pasku "warstwy", jedno klikniecie i wszystkie zaznaczone obiekty zmieniają kolor ??. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Pablo Opublikowano 20 Stycznia 2012 Zgłoś Udostępnij Opublikowano 20 Stycznia 2012 Też nie do końca rozumiem wszyskie wyjaśnienia w tym wątku. Pewne jednak jest, że prosta zmiana koloru nie zmieni nam koloru bloków, które nie zostały stworzone z elementami na warstwie JakBlok. Bloki można rozbić, ale wtedy mamy sieczkę na rysunku. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Assgarth Opublikowano 20 Stycznia 2012 Zgłoś Udostępnij Opublikowano 20 Stycznia 2012 Zmiana samego koloru nie stanowi problemu, lecz gdy chcemy zmienić również inne parametry jak typ linii, szerokość, kolor, materiał, transparentność, styl wydruku (czyli wszystko to co ma w sobie funkcja SETBYLAYER), to już nie jest jedno kliknięcie. A jak chcemy się szybko przełączać między różnymi cechami obiektów, to Lisp umożliwi coś takiego właśnie prostym kliknięciem. Wszystko można oczywiście ręcznie sobie ustawiać itp. lecz po co, skoro można szybciej? :) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
gruzin Opublikowano 20 Stycznia 2012 Zgłoś Udostępnij Opublikowano 20 Stycznia 2012 Assgarth a dużo to roboty żeby hurtowo lispem pozmieniac definicie blokow na jak warstwa? Jak dla mnie to kolor i grubośc linii wystarczy. stylu linii nigdy nie poprawiam bo wole żeby był taki jak u architekta, nawet jak jest narzucony recznie? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Stefan Opublikowano 20 Stycznia 2012 Zgłoś Udostępnij Opublikowano 20 Stycznia 2012 Zmiana samego koloru nie stanowi problemu, lecz gdy chcemy zmienić również inne parametry jak typ linii, szerokość, kolor, materiał, transparentność, styl wydruku (czyli wszystko to co ma w sobie funkcja SETBYLAYER), to już nie jest jedno kliknięcie. A jak chcemy się szybko przełączać między różnymi cechami obiektów, to Lisp umożliwi coś takiego właśnie prostym kliknięciem.Wszystko można oczywiście ręcznie sobie ustawiać itp. lecz po co, skoro można szybciej? :) No to tak jak napisałem wyżej wszystko się wybiera z paska, nie wiem czy się dobrze zrozumieliśmy dlatego wklejam screena: Uploaded with ImageShack.us Też nie do końca rozumiem wszyskie wyjaśnienia w tym wątku. Pewne jednak jest, że prosta zmiana koloru nie zmieni nam koloru bloków, które nie zostały stworzone z elementami na warstwie JakBlok. Bloki można rozbić, ale wtedy mamy sieczkę na rysunku.Jezeli chodzi o bloki to sytuacja wygląda identycznie jak w AC, prawym przyciskiem na blik i "Edytuj blok" Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Assgarth Opublikowano 20 Stycznia 2012 Zgłoś Udostępnij Opublikowano 20 Stycznia 2012 Nie wiem jakie kto ma zapotrzebowania. Osobiście nic nie projektuję, nie rysuję, ani też nie tworzę obiektów na potrzeby ich prezentacji. Działam tylko w zakresie tworzenia kodu według wytycznych, poprawiania istniejącego itp. To czy ktoś potrzebuje wrzucić wszystko na jedną warstwę, kolor itd. to jedno, a do czego tego użyje, to już nie moja sprawa :) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Assgarth Opublikowano 20 Stycznia 2012 Zgłoś Udostępnij Opublikowano 20 Stycznia 2012 No to tak jak napisałem wyżej wszystko się wybiera z paska, nie wiem czy się dobrze zrozumieliśmy dlatego wklejam screena (...) Nie przeczę, że nie da się tego zrobić, co już wcześniej napisałem, ale musisz po pierwsze kliknąć kilka razy, a nie raz, jeśli chcesz zmienić więcej niż jedną cechę (w lisp masz jedno kliknięcie plus ewentualne wskazanie obiektów, choć i to nie jest konieczne). I tak jak napisałem w ostatnim moim poście - nie interesuje mnie do czego ktoś potrzebuje narzędzie, jeśli tylko jest ono do wykonania w miarę prosty sposób. Niemniej jednak, autor postu powinien sam zapoznać się z przedstawionymi propozycjami i wybrać najbardziej mu odpowiadającą ;) pozdrawiam Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Assgarth Opublikowano 20 Stycznia 2012 Zgłoś Udostępnij Opublikowano 20 Stycznia 2012 Assgarth a dużo to roboty żeby hurtowo lispem pozmieniac definicie blokow na jak warstwa? Dla jednego bloku: (cd:ACX_SetProp (vlax-ename->vla-object (car(entsel))) '(("Color" . 256))) Dla wielu wskazanych bloków: (defun zk:SSZbr->List (ssZbr / % lista) (repeat (setq % (sslength ssZbr)) (setq % (1- %) lista (cons (ssname ssZbr %) lista)) ) ) (foreach % (zk:SSZbr->List (ssget)) (cd:ACX_SetProp (vlax-ename->vla-object %) '(("Color" . 256))) ) Dla wszystkich bloków: (foreach % (zk:SSZbr->List (ssget "_x" (list (cons 0 "INSERT")))) (cd:ACX_SetProp (vlax-ename->vla-object %) '(("Color" . 256))) ) pozdrawiam Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
gruzin Opublikowano 20 Stycznia 2012 Zgłoś Udostępnij Opublikowano 20 Stycznia 2012 Dla wielu wskazanych bloków:Kod: (defun zk:SSZbr->List (ssZbr / % lista) (repeat (setq % (sslength ssZbr)) (setq % (1- %) lista (cons (ssname ssZbr %) lista)) ) ) (foreach % (zk:SSZbr->List (ssget)) (cd:ACX_SetProp (vlax-ename->vla-object %) '(("Color" . 256))) ) Niedokładnie się wyraziłem. Chodzi mi o zmianę właściwości obiektów wewnątrz bloków. W SETBY LAYER w AC jest taka opcja. jeżeli w pliku który podczytuje jako odnośnik (Xref) jest kilkaset takich kolorowych bloków to ciężko się odnaleźć bez SETBYLAYER. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Assgarth Opublikowano 20 Stycznia 2012 Zgłoś Udostępnij Opublikowano 20 Stycznia 2012 wrzuć jakiś przykładowy blok - co by nie błądzić ;) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
gruzin Opublikowano 20 Stycznia 2012 Zgłoś Udostępnij Opublikowano 20 Stycznia 2012 wrzuć jakiś przykładowy blok - co by nie błądzić ;) Przykładowo pracuję teraz w pliku do którego podczytuję jako 12 plików (jeden z nich w załączniku) jako odnośniki. Codziennie dostaję nowe wersje tych 12 plików i muszę je codziennie obrobić (wyczyścic, naprawić, usunąć zbędne skale i zrobić wszystko JAK WARSTWA aby po podczytaniu móc zmieniać kolory i grubości warstw odnośników). Zrobiłem sobie oczywiście lispa który to za mnie robi, ale w ZW nie ma funkcji SETBYLAYER i musze to robić na innym kompie na którym jest taka funkcja. OBR_PB_ZAM_+3.dwg Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Assgarth Opublikowano 20 Stycznia 2012 Zgłoś Udostępnij Opublikowano 20 Stycznia 2012 Sprawdziłem na jednym z bloków, które są na tym rysunku i działa, ale kod jest testowy i wymaga dopracowania - niemniej już jest bliżej niż dalej: (defun zk:SetByLayer (/ AtrVar AtrList) (setq AtrVar (vla-getAttributes (vlax-ename->vla-object (car(entsel))))) (setq AtrList (vlax-safearray->list (vlax-variant-value AtrVar))) (foreach Item AtrList (vla-put-color Item 256)) (defun bcls (block_name / block ename ent) (setq block (tblsearch "BLOCK" block_name)) (if block (progn (setq ename (cdr (assoc -2 block))) (while ename (progn (setq ent (entget ename)) (setq ent (subst (cons 62 256) (assoc 62 ent) ent)) (entmod ent) (setq ename (entnext ename)) ) ) (command "_regen") ) ) ) ;np: (bcls "SALON_A.03.07.02_778") ) blok_test.dwg Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Assgarth Opublikowano 20 Stycznia 2012 Zgłoś Udostępnij Opublikowano 20 Stycznia 2012 Swoją drogą te bloki są nieźle pokręcone - nie tylko ATTDEF ale i MTEXT tam mają i inne cuda niewidy :) Teoretycznie jedna z dwóch metod powinna wystarczyć - zwłaszcza funkcja "bcls", ale niestety nie w Twoim przypadku ;) Tutaj gotowy programik: link ale też nie zadziała na całości, tylko tak jak "bcls", stąd dorzuciłem Visual-Lisp'a. pozdrawiam Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Assgarth Opublikowano 20 Stycznia 2012 Zgłoś Udostępnij Opublikowano 20 Stycznia 2012 Jeszcze uwaga, dla ZwCAD ta linijka: (setq AtrList (vlax-safearray->list (vlax-variant-value AtrVar))) ma wyglądać tak: (setq AtrList (vlax-safearray->list AtrVar)) Assgarth Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
gruzin Opublikowano 20 Stycznia 2012 Zgłoś Udostępnij Opublikowano 20 Stycznia 2012 Swoją drogą te bloki są nieźle pokręcone - nie tylko ATTDEF ale i MTEXT tam mają i inne cuda niewidy :)Teoretycznie jedna z dwóch metod powinna wystarczyć - zwłaszcza funkcja "bcls", ale niestety nie w Twoim przypadku ;) Tutaj gotowy programik: link ale też nie zadziała na całości, tylko tak jak "bcls", stąd dorzuciłem Visual-Lisp'a. pozdrawiam Swoją droga nie wiedziałem że można vlx podczytać do AWCADA dopuki nie spróbowałem. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Assgarth Opublikowano 20 Stycznia 2012 Zgłoś Udostępnij Opublikowano 20 Stycznia 2012 Dzięki uprzejmości kojacka, poniżej przedstawiam link do jego funkcji, oraz przykładowe wywołanie (sprawdziłem na Twoim rysunku "OBR_PB_ZAM_+3.dwg" i działa - ale trzeba uzbroić się w cierpliwość, bo obiektów Masz tam od groma i trochę) ;) link (defun c:SetByLayer (/ lista_z_1 lista_z_ss) (foreach blk (jk:BLK_GetBlocks nil) (setq lista_z_1 (jk:BLK_Get-DefEnt blk nil)) (foreach % lista_z_1 (cd:ENT_SetDXF % 62 256)) ) (setq lista_z_ss (zk:SSZbr->List (ssget "_x" (list (cons 0 "INSERT"))))) (foreach % lista_z_ss (foreach %1 (jk:BLK_Get-InsAtts %)(cd:ENT_SetDXF %1 62 256))) (command "_regen") ) Brakujące funkcje: ;;--------------------------------=={ jk:BLK_GetBlocks }==----------------------------------;; ;; Autor: Jacek Kożuszek, www.kojacek.republika.pl ;; ;; Funkcja zwraca liste blokow (bez xref, zaleznych od xref, anonimowych wymiarow i tabel) ;; ;; Argument [mode] jesli T - dodatkowo bloki anonimowe *U... ;; ;;------------------------------------------------------------------------------------------;; ;; (jk:BLK_GetBlocks nil) ;| lub |; (jk:BLK_GetBlocks T) ;; ;;------------------------------------------------------------------------------------------;; (defun jk:BLK_GetBlocks (mode / bl res m %) (setq m "`*D*,`*X*,`*T*,*|*" bl (tblnext "BLOCK" T) ) (while bl (setq % (cdr (assoc 2 bl))) (if (not (wcmatch % (if mode m (strcat "`*U*," m)) ) ) (setq res (append res (list %))) ) (setq bl (tblnext "BLOCK")) ) res ) oraz: (defun zk:SSZbr->List (ssZbr / % lista) (repeat (setq % (sslength ssZbr)) (setq % (1- %) lista (cons (ssname ssZbr %) lista)) ) ) Dodam tylko, że powyższe jest przeznaczone do działań na blokach. Pozostałe obiekty zostały opisane wcześniej. pozdrawiam Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
gruzin Opublikowano 20 Stycznia 2012 Zgłoś Udostępnij Opublikowano 20 Stycznia 2012 Dzięki uprzejmości kojacka, poniżej przedstawiam link do jego funkcji, oraz przykładowe wywołanie (sprawdziłem na Twoim rysunku "OBR_PB_ZAM_+3.dwg" i działa - ale trzeba uzbroić się w cierpliwość, bo obiektów Masz tam od groma i trochę) ;) No własnie. A takich plików do wyczyszczenia jest 12 sztuk. Codziennie. Funkcja SETBYLAYER jest do tego idealna. Wieczorkiem zobacze te funkcje na ZW. Dzięki W AC używam czegoś takiego (trochę prymitywne ale nie ma zbędnego klikania) i plik jest zdatny do użycia: (defun c:ppp () (command "_-SCALELISTEDIT" "_r" "_y" "_e") (command "_setbylayer" "_all" "" "_y" "_y") (command "_audit" "_y") (command "_purge" "_a" "" "_n") (command "_save" "" "_y") (command "_close") ) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
gruzin Opublikowano 20 Stycznia 2012 Zgłoś Udostępnij Opublikowano 20 Stycznia 2012 Pięknie działa (chociaż trochę wolno i inaczej niż w AC). Po moich poprawkach w funkcji SetByLayer kod wygląda tak: (defun c:SetByLayer (/ lista_z_1 lista_z_ss) (foreach blk (jk:BLK_GetBlocks nil) (setq lista_z_1 (jk:BLK_Get-DefEnt blk nil)) (foreach % lista_z_1 (cd:ENT_SetDXF % 62 256)(cd:ENT_SetDXF % 370 -1)) ) (setq lista_z_ss (zk:SSZbr->List (ssget "_x" (list (cons 0 "INSERT"))))) (foreach % lista_z_ss (foreach %1 (jk:BLK_Get-InsAtts %) (progn (cd:ENT_SetDXF %1 62 256)(cd:ENT_SetDXF %1 370 -1))) ) (setq lista_z_ss (zk:SSZbr->List (ssget "_x"))) (foreach % lista_z_ss (cd:ENT_SetDXF % 62 256)(cd:ENT_SetDXF % 370 -1) ) (command "_regen") ) ;;--------------------------------=={ jk:BLK_GetBlocks }==----------------------------------;; ;; Autor: Jacek Kożuszek, www.kojacek.republika.pl ;; ;; Funkcja zwraca liste blokow (bez xref, zaleznych od xref, anonimowych wymiarow i tabel) ;; ;; Argument [mode] jesli T - dodatkowo bloki anonimowe *U... ;; ;;------------------------------------------------------------------------------------------;; ;; (jk:BLK_GetBlocks nil) ;| lub |; (jk:BLK_GetBlocks T) ;; ;;------------------------------------------------------------------------------------------;; (defun jk:BLK_GetBlocks (mode / bl res m %) (setq m "`*D*,`*X*,`*T*,*|*" bl (tblnext "BLOCK" T) ) (while bl (setq % (cdr (assoc 2 bl))) (if (not (wcmatch % (if mode m (strcat "`*U*," m)) ) ) (setq res (append res (list %))) ) (setq bl (tblnext "BLOCK")) ) res ) ; =========================================================================================== ; ; Zwraca liste ename obiektow definicji bloku okreslonego typu lub wszystkich gdy nil ; =========================================================================================== ; (defun jk:BLK_Get-DefEnt (Name EntType / en ed res) (setq en (tblobjname "BLOCK" Name)) (while (and (setq en (entnext en)) (setq ed (entget en)) (/= "ENDBLK" (cdr (assoc 0 ed))) ) (if (if EntType (= (cdr (assoc 0 ed))(strcase EntType)) (cdr (assoc 0 ed)) ) (setq res (cons (cdr (assoc -1 ed)) res ) ) ) ) res ) ; =========================================================================================== ; ; zwraca liste ename atrybutow wstawionego bloku ; ; =========================================================================================== ; (defun jk:BLK_Get-InsAtts (InsEnt / en ed res) (setq en InsEnt) (while (and (setq en (entnext en)) (setq ed (entget en)) (/= "SEQEND" (cdr (assoc 0 ed))) ) (if (= (cdr (assoc 0 ed)) "ATTRIB") (setq res (cons (cdr (assoc -1 ed)) res ) ) ) ) res ) (defun zk:SSZbr->List (ssZbr / % lista) (repeat (setq % (sslength ssZbr)) (setq % (1- %) lista (cons (ssname ssZbr %) lista)) ) ) ; =========================================================================================== ; ; Zmiana danych DXF obiektu / Set the DXF data of object ; ; Ename [ENAME] - nazwa elementu / entity name ; ; Code [iNT] - kod pary DXF / code of dotted pair ; ; Val [list/INT/REAL/STR/ENAME] - wartosc / value ; ; ------------------------------------------------------------------------------------------- ; ; (cd:ENT_SetDXF (entlast) 70 129) ; ; =========================================================================================== ; (defun cd:ENT_SetDXF (Ename Code Val / dt new) (setq new (if (not (assoc Code (setq dt (entget Ename)))) (append dt (list (cons Code Val))) (subst (cons Code Val) (assoc Code dt) dt ) ) ) (entmod new) ) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Rekomendowane odpowiedzi