yoin

jo-king

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.
CAD/BIM consultant
Autodesk Reseller
Revit Certified professional

Atwist

#1
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
Atwist

AutoCad 2008.

jo-king

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 ;)
CAD/BIM consultant
Autodesk Reseller
Revit Certified professional

Atwist

Ik krijg deze lisp niet aan de praat, vraagt telkens "selecteer dynamisch block" als ik dat doe dan is het einde oefening.

Atwist
Atwist

AutoCad 2008.

jo-king

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 ;)
CAD/BIM consultant
Autodesk Reseller
Revit Certified professional

HofCAD

#5
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.
ACADcadabra

jo-king

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.
CAD/BIM consultant
Autodesk Reseller
Revit Certified professional

HofCAD

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.
ACADcadabra

jo-king

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!
CAD/BIM consultant
Autodesk Reseller
Revit Certified professional

jo-king

#9
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
CAD/BIM consultant
Autodesk Reseller
Revit Certified professional

HofCAD

#10
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.
ACADcadabra

jo-king

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:
CAD/BIM consultant
Autodesk Reseller
Revit Certified professional

HofCAD

#12
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.
ACADcadabra

jo-king

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... ;)
CAD/BIM consultant
Autodesk Reseller
Revit Certified professional