CADsite forum

AutoCAD => Autolisp => Topic gestart door: delangstevandestraat op di 17 02 2015, 07:50:49

Titel: alle layouts tonen, met delay of wait ?
Bericht door: delangstevandestraat op di 17 02 2015, 07:50:49
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..?
Titel: Re: alle layouts tonen, met delay of wait ?
Bericht door: julien op di 17 02 2015, 10:03:56
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.
Titel: Re: alle layouts tonen, met delay of wait ?
Bericht door: Reimer op di 17 02 2015, 10:10:38
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
Titel: Re: alle layouts tonen, met delay of wait ?
Bericht door: EddyBeerke op di 17 02 2015, 14:58:56
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")) 
)
)
Titel: Re: alle layouts tonen, met delay of wait ?
Bericht door: delangstevandestraat op wo 18 02 2015, 10:09:57
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


Titel: Re: alle layouts tonen, met delay of wait ?
Bericht door: EddyBeerke op wo 18 02 2015, 11:45:52
Verander:
(command (delay 1000))

Naar:
(command "delay" 1000)

Werk het dan wel?
Titel: Re: alle layouts tonen, met delay of wait ?
Bericht door: EddyBeerke op wo 18 02 2015, 12:07:34
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)
)
Titel: Re: alle layouts tonen, met delay of wait ?
Bericht door: HofCAD op do 26 02 2015, 09:57:06
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.