Ik heb een lisp geschreven die werkt op een tekening met verschillende layout -tabs waarin telkens iets wordt uitgevoerd...
Tot daar geen probleem,
Nu had ik graag elk van deze layout-tabs eventjes (1 sec ofzo getoond) om te laten zien dat alles goed is verlopen
maar bestaat er een of ander delay ofzo..?
Ik kan je jammer genoeg niet helpen met een exact antwoord op je vraagn, maar zou het niet handig zijn mocht je een "select" invoegen?
Dan dien je enkel op enter te drukken om verder te gaan, zo kan je zelf de tussentijd bepalen.
Autocad kent het commando Delay (Enter delay time (in milliseconds)). Deze kun je gewoon opgeven in de commandline.
In lisp kun je het volgende gebruiken: (command "delay" 1000).
Hierdoor las je een pauze in van 1000 milliseconden.
Reimer
Hou wel rekening mee dat als je een vaste tijd instelt misschien niet het resultaat krijgt te "zien" wat je wilt.
Denk aan het regenereren van je layout.
Optie om door te gaan na een klik of enter lijkt mij een beter idee.
Misschien is dit iets:
(defun c:test ()
(initget "Next")
(setq kw (getkword "Naar de volgende gaan? [Next] <Next>: "))
(cond
((or (not kw) (= "Next" kw)) (alert "Ja... naar de volgende!"))
;((= "No" kw) (alert "NO"))
)
)
het moet vanzelf lopen,
zoniet kan ik evengoed nadien gewoon de tab's eens aanklikken,
ik had al met diene delay geprobeerd, doch de routine wacht wel maar niet met het juiste beeld, ik krijg nooit mijn andere tabbladen te zien...
(foreach layoutname (layoutlist)
(progn ;2
(command ".layout" "set" layoutname) ;
(setq selset (ssget "x" (list (cons 410 (getvar "ctab")) (cons 2 "bloknaam"))))
(if selset
(progn
(setq ent (ssname selset 0)) ;selectie van ent
(setq pos (cdr(assoc 10(entget ent)))) ;invoegpositie uithalen
(command "zoom" "c" pos 100)
(while (/= "ATtrib" (dxf 2 ent)) ;
(setq ent (entnext ent))
) ;
( DOE VANALLES niet van belang) ;
(command (delay 1000))
) ;progn1
) ;if selset
) ;progn 2
) ;foreach
Verander:
(command (delay 1000))
Naar:
(command "delay" 1000)
Werk het dan wel?
Misschien help dit?
(defun c:AllLayouts ( / lo_len x)
(setq cmdsave (getvar "cmdecho"))
(setvar "cmdecho" 0)
(setq oldLayout (getvar "CTAB"))
(setq lo_len (length (layoutlist)))
(setq x lo_len)
(while (> x 0)
(princ (strcat "\n " (itoa x) ":"))
(setq x (- x 1))
(princ (nth x (layoutlist)))
(command "layout" "set" (nth x (layoutlist)))
(DoIt)
);end while
(command "layout" "set" oldLayout)
(princ "AllLayouts is klaar...")
(setvar "cmdecho" cmdsave)
(princ)
);end defun
(defun DoIt()
(command "ZOOM" "Extents")
;Plaats hier je code die gedaan moet worden op deze layout
(command "delay" 1000);;; hier zit de pauze
(princ)
)
Beste Delangstevandestraat,
Twee alternatieven voor
(command "_.DELAY" 1000)
zie je in http://www.theswamp.org/index.php?topic=3793.0 (http://www.theswamp.org/index.php?topic=3793.0)
Met vriendelijke groet, HofCAD CSI.