Vytisknout stránku | Zavřít okno

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.



Vytisknout stránku | Zavřít okno