Hey,
Ik zou graag al mijn verschillende dynamic blocks van deuren, via een knopje (lisp?) van visibility state willen veranderen.
ik heb 6 standaard binnendeuren:
dyn_deur_080-073
dyn_deur_085-078
dyn_deur_090-083
dyn_deur_095-088
dyn_deur_100-093
dyn_deur_105-098
deze blocks zijn dynamic, omdat je ze kan flippen (draairichting van de deur) en stretchen in de diepte (breedte van de muurkader)
nu heb ik hier bovenop een visibility state geplaatst, die de deur 90°, 20° of 0° open doet.
Als ik manueel mijn deuren selecteer, kan ik ze dus allemaal tegelijkertijd sluiten, of openen, of op een kier zetten.
handig, maar niet "snel" genoeg.
dus zoek ik een methode (lisp) waarbij alle verschillende deur-blocks automatisch geselecteerd worden, en op een van de 3 visibilitystates gezet worden.
na enig googlen vond ik wel wat info,
(http://forums.augi.com/showthread.php?t=109054#post1017413)
maar niet genoeg om het te laten werken zoals ik wil.... (ik ben een lisp noob)
alvast bedankt om tot hier te lezen :) :vreegoe:
Jo.
Beste Jo-King,
Is deze lisp misschien wat jij zoekt, ik heb het zelf nog niet getest.
Heb deze hier gevonden http://www.cadtutor.net/forum/showthread.php?t=41059&highlight=visibility+STATE
Atwist
Citaat van: Atwist op vr 28 05 2010, 17:28:14
Beste Jo-King,
Is deze lisp misschien wat jij zoekt, ik heb het zelf nog niet getest.
Heb deze hier gevonden http://www.cadtutor.net/forum/showthread.php?t=41059&highlight=visibility+STATE
Atwist
thanks atwist,
maar deze had ik al... ik probeer hem aan te passen, zodat de list automatisch al mijn deur-blocks selecteerd, en ik het niet zelf hoef te doen. maar 'k snap er niets van ;)
Ik krijg deze lisp niet aan de praat, vraagt telkens "selecteer dynamisch block" als ik dat doe dan is het einde oefening.
Atwist
Citaat van: Atwist op ma 31 05 2010, 12:17:28
Ik krijg deze lisp niet aan de praat, vraagt telkens "selecteer dynamisch block" als ik dat doe dan is het einde oefening.
Atwist
hij werkt nochtans wel hoor.
heeft je dynamisch block wel een visibility state met de naam "VISIBILITY1" ? dit is waar de lisp naar zoekt ;)
Beste Jo-King,
Alternatief voor Visiblity Parameter met Visibilty Name "Draairichting"
en resp. Visibility States "Links" en "Rechts":
(defun ssdblk (effname / ssx ssf c en)
(setq ssx (ssget "X" (list (cons 2 (strcat effname ",`*U*")))))
(setq ssf (ssadd)
c 0
)
(if ssx
(repeat (sslength ssx)
(setq en (ssname ssx c)
c (1+ c)
)
(if
(= (print (vla-get-effectivename (vlax-ename->vla-object en)))
effname
)
(ssadd en ssf)
)
)
)
ssf
)
(defun c:DraairichtingLinks ()
(vl-load-com)
(setq BlkSet nil
;BlkSet (ssget)
BlkSet (ssdblk "Raam") ; Block Name
)
(setq i 0)
(setq TotBlkSet (sslength BlkSet))
(while (< i TotBlkSet)
(setq BlkObj (vlax-ename->vla-object (ssname BlkSet i)))
(setq BlkProps (vlax-safearray->list
(vlax-variant-value
(vla-GetDynamicBlockProperties BlkObj)
)
)
)
(foreach BlkProp BlkProps
(cond
((and (= (vla-Get-PropertyName BlkProp) "Draairichting"))
;Visibilty Name
(vla-Put-Value BlkProp "Links") ;Visibility State
)
)
)
(setq i (1+ i))
)
)
(defun c:DraairichtingRechts ()
(vl-load-com)
(setq BlkSet nil
;BlkSet (ssget)
BlkSet (ssdblk "Raam") ; Block Name
)
(setq i 0)
(setq TotBlkSet (sslength BlkSet))
(while (< i TotBlkSet)
(setq BlkObj (vlax-ename->vla-object (ssname BlkSet i)))
(setq BlkProps (vlax-safearray->list
(vlax-variant-value
(vla-GetDynamicBlockProperties BlkObj)
)
)
)
(foreach BlkProp BlkProps
(cond
((and (= (vla-Get-PropertyName BlkProp) "Draairichting"))
;Visibilty Name
(vla-Put-Value BlkProp "Rechts") ;Visibility State
)
)
)
(setq i (1+ i))
)
)
Met vriendelijke groet, HofCAD CSI.
Citaat van: HofCAD op ma 31 05 2010, 16:08:38
Beste Jo-King,
Alternatief voor Visiblity Parameter met Visibilty Name "Draairichting"
en resp. Visibility States "Links" en "Rechts":
Met vriendelijke groet, HofCAD CSI.
Bedankt HofCAD, maar deze lisp werkt niet bij mij?
desontdanks, als ik hem juist lees, lijkt dit niet de functie die ik zoek te zijn. Hierbij bestuur je de draairichting; dewelke ik met een FLIP parameter heb verwezelijkt ;)
toch merciekes
Jo.
Citaat van: jo-king op ma 31 05 2010, 17:06:01
Bedankt HofCAD, maar deze lisp werkt niet bij mij?
desontdanks, als ik hem juist lees, lijkt dit niet de functie die ik zoek te zijn. Hierbij bestuur je de draairichting; dewelke ik met een FLIP parameter heb verwezelijkt ;)
toch merciekes
Jo.
Beste Jo-king,
Dat is raar, want in je eerste bericht schrijf je:
nu heb ik hier bovenop een visibility state geplaatst, die de deur 90°, 20° of 0° open doet.
en het onderwerp heet toch: alle blocks van visibility state veranderen via knopje?
Met vriendelijke groet, HofCAD CSI.
PS Boven heb ik een tekening en een Lisp toegevoegd.
Citaat van: HofCAD op ma 31 05 2010, 18:38:51
Beste Jo-king,
Dat is raar, want in je eerste bericht schrijf je:
nu heb ik hier bovenop een visibility state geplaatst, die de deur 90°, 20° of 0° open doet.
en het onderwerp heet toch: alle blocks van visibility state veranderen via knopje?
Met vriendelijke groet, HofCAD CSI.
PS Boven heb ik een tekening en een Lisp toegevoegd.
de visibility state verandert niet de draaiRICHTING, maar de draaiHOEK van mijn deur (open, kier, gesloten)
ik heb jouw lisp nogmaals geprobeert & het werkt wel, mits enige aanpassing op mijn blocknames e.d.
het moet nog wel wat gefine-tuned worden ;) kan ik bv meerdere blocks tegelijk selecteren?
en misschien ook een optie om "blocks in blocks" mee te nemen in de selectie?
th!
http://www.cadsite.be/smf/index.php?topic=4156.0
eerste versie is klaar, en kan gekeurd/verbeterd worden via bovenstaande link.
nogmaals bedankt aan Atwist & HofCAD
Citaat van: jo-king op wo 02 06 2010, 11:45:38
http://www.cadsite.be/smf/index.php?topic=4156.0
eerste versie is klaar, en kan gekeurd/verbeterd worden via bovenstaande link.
nogmaals bedankt aan Atwist & HofCAD
Beste Jo-king,
Met de sub SSUNION http://www.cadsite.be/smf/index.php?topic=2846.msg14598#msg14598 kun je selectiesets samenvoegen.
(defun ssunion (ss1 ss2 / hilite ss3)
(setq hilite (getvar "HIGHLIGHT")) ;Speeds up selection
(setvar "HIGHLIGHT" 0)
(command "_.SELECT" ss1 ss2 "") ;Combines sets using SELECT
(setq ss3 (ssget "P")) ;Combined set is the previous
(setvar "HIGHLIGHT" hilite)
ss3 ;Returns SS3
);defun
Zodat je Lisp DynDeuren.lsp een stuk korter kan worden.
Zie daarvoor de bijlage.
Met vriendelijke groet, HofCAD CSI.
Citaat van: HofCAD op wo 02 06 2010, 13:59:57
Beste Jo-king,
Met de sub SSUNION http://www.cadsite.be/smf/index.php?topic=2846.msg14598#msg14598 kun je selectiesets samenvoegen.
Zodat je Lisp DynDeuren.lsp een stuk korter kan worden.
Zie daarvoor de bijlage.
Met vriendelijke groet, HofCAD CSI.
HofCAD, je bent mijn HELD! :) :vreegoe:
Citaat van: jo-king op wo 02 06 2010, 14:38:43
HofCAD, je bent mijn HELD! :) :vreegoe:
Beste Jo-king,
Een held is nogal veel. :oops:
Kijk eens naar FlipDraai in de bijlage voor een uitgebreid alternatief met Flip en Visibility.
Het is een bewerking van http://mdouglas.blogs.com/in_the_dynamic_interface/2005/07/dynamic_lisp_co.html
Kijk ook eens naar TogVis in de bijlage voor de toggle van de Visibility state in dynamic blocks.
Het is een bewerking van http://www.cadtutor.net/forum/showthread.php?t=41059&highlight=visibility+STATE
Met vriendelijke groet, HofCAD CSI.
PS1 In de Lisp FlipDraai .lsp staat bovenaan de variabele Info op 0,
als je meer info wil hebben moet je deze op 1 zetten.
PS2 Later heb ik deze Lisp nog eens gewijzigd om hem korter te maken.
HofCAD,
als jij een LISP bestand opent, zie jij dan nog code, of zie jij "The Matrix" ? :shock:
't is duidelijk dat je dit graag doet :)
een optie om alle deuren tegelijk te flippen had ik echter niet nodig; maar het is wel intressant om de code te hebben ;)
merciekes,
als'k je ooit eens op een pintje kan trakteren... ;)