Přepínání stavů viditelnosti dynamického bloku
Vytištěno z: CAD Fórum
Kategorie: Autodesk - stavebnictví, strojírenství, CAD/GIS
Název fóra: CAD programování
Popis fóra: Otázky programování - nadstavby a utility pro CAD a GIS aplikace Autodesk (VBA, AutoLISP, ARX/C++, .Net, JavaScript, Python, MEL...)
URL: https://www.cadforum.cz/forum/forum_posts.asp?TID=17331
Datum vytištění: 12.kvě.2026 v 23:51
Téma: Přepínání stavů viditelnosti dynamického bloku
Odeslal: radimf
Předmět: Přepínání stavů viditelnosti dynamického bloku
Datum odeslání: 06.čer.2013 v 11:48
Dobrý den. Nevíte, prosím, zda je naprogramovat skritp v lispu, který
při vyvolání a vybrání dynamického bloku přepne jeho stav viditelnosti?
Používám triviální dynamické bloky o max. 3 stavech viditelnosti. Klikat přes myš je velice zdlouhavé. Každý stav jakéhokoliv dynamického bloku by byl označen: 1 xxx 2 xxx 3 xxx Tj. skript by vůbec nezajímal přesný název stavu, ale řídil by se podle filtru výběru ČÍSLO* Stavy by se přepínaly cyklicky furt dokola 1-2-3-1-2..., při každém vyvolání fukce.
Děkuji za případné reakce.
|
Odpovědi:
Odeslal: alfred
Datum odeslání: 06.čer.2013 v 12:48
Odpověď na Vaši otázku zní asi "Ano, je to možné."
Práci s dynamickým blokem můžete vyřešit pomocí ukázkové funkce od Allena Johnsona (viz níže, nebo zde: http://www.cadforum.cz/forum/forum_posts.asp?TID=5120 - http://www.cadforum.cz/forum/forum_posts.asp?TID=5120 )
Funkci použijete takhle:
(chgdynprop nazev_vybrane_entity Měněná_vlastnost Nová_hodnota) (entupd nazev_vybrane_entity)
Funkce se tedy zjednodušší na výběr a práci s názvem viditelnosti
;;----------------------------------------------- ----------------------- ;; changes a given variable in your block
(defun chgdynprop (e propname newval / obj v vval sal tot i)
(setq obj (if (= (type e) 'vla-object) e (vlax-ename->vla-object e))) (if (= (vlax-get-property obj 'isdynamicblock) :vlax-true) (progn (setq v (vla-getdynamicblockproperties obj) vval (vlax-variant-value v) sal (vlax-safearray->list vval) tot (length sal) i 0 ) (while (< i tot) (if (= (vlax-get-property (nth i sal) "PropertyName") propname) (progn (vlax-put-property (nth i sal) "Value" newval) (setq i tot) ) (setq i (1+ i)) ) ) ) ) )
|
Odeslal: radimf
Datum odeslání: 10.čer.2013 v 22:37
Dobrý den. Děkuji za bleskovou reakci a velmi užitečný odkaz. Snad si s tím už poradíme.
|
Odeslal: PetrKonecny
Datum odeslání: 21.čer.2013 v 22:12
Dobrý den.
Měl bych související dotaz: Přepnout na dopředu zvolený název viditelnosti není problém - viz program "chgdynprop". Aktuální stav viditelnosti také přečtu programem "getdynprop". Ale netusím, jak přečíst název následujícího stavu viditelnosti ze seznamu možností nebo alespoň seznam možností viditelnosti. Z programu "tdb" lze vyčíst jaké možnosti viditelnosti jsou, ale neumím z tabulky vyfiltrovat pouze viditelnosti a ty pak následně zpracovat a použít jako vstup do "chgdynprop" pro "newval". Poradíte mi jak zjistit následující stav viditelnosti/nebo seznam možností viditelnosti?
Děkuji.
|
|