FastFiber

alle layouts tonen, met delay of wait ?

Gestart door delangstevandestraat, di 17 02 2015, 07:50:49

Vorige topic - Volgende topic

delangstevandestraat

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 hou van werken,
ik kan er uuuren naar kijken...
daarom zorg ik ook dat er altijd genoeg overblijft voor morgen :-)

julien

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.

Reimer

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

EddyBeerke

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")) 
)
)
Civil3d 2026, Blender 4.x gebruiker
Gebruiker sinds AutoCAD R12

http://eddylucas.c1.biz/
https://www.google.com/maps/contrib/109381066561676463628/photos/

delangstevandestraat

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


Ik hou van werken,
ik kan er uuuren naar kijken...
daarom zorg ik ook dat er altijd genoeg overblijft voor morgen :-)

EddyBeerke

Verander:
(command (delay 1000))

Naar:
(command "delay" 1000)

Werk het dan wel?
Civil3d 2026, Blender 4.x gebruiker
Gebruiker sinds AutoCAD R12

http://eddylucas.c1.biz/
https://www.google.com/maps/contrib/109381066561676463628/photos/

EddyBeerke

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)
)
Civil3d 2026, Blender 4.x gebruiker
Gebruiker sinds AutoCAD R12

http://eddylucas.c1.biz/
https://www.google.com/maps/contrib/109381066561676463628/photos/

HofCAD

Beste Delangstevandestraat,

Twee alternatieven voor
(command "_.DELAY" 1000)
zie je in http://www.theswamp.org/index.php?topic=3793.0

Met vriendelijke groet, HofCAD CSI.
ACADcadabra

yoin