| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
| |
| PNY WIRD VON NVIDIA ZUM HÄNDLER DES JAHRES GEWÄHLT, eine Pressemitteilung
|
Autor
|
Thema: Bremse einbauen (1944 mal gelesen)
|
romi1 Mitglied Bautechniker
Beiträge: 647 Registriert: 09.02.2006 Xeon E3-1245V2 16GB RAM Windows 10 Professional 64 bit AutoCAD 2014
|
erstellt am: 09. Jun. 2007 07:25 <-- editieren / zitieren --> Unities abgeben:
Hallo Leute! Habe ein Lisp, bei dem ich zwischen diversen (entmake ...)-Befehlen jeweis eine kurze Pause einbauen möchte, sodaß man am Schirm z. B. die Grafikelemente in einem Abstand von ca. 0.5 Sekunden nacheinander erscheinen sieht. Da ich keinen speziellen Pausen-Befehl kenne, habe ich' es mal auf die plumpe Weise probiert und folgendes zwischen den (entmake ...)'s eingefügt: (repeat 1000000 (setq dummmy 1)) ..... das ganze kommt gemeinsam mit den (entmake ...)'s in einer Schleife vor ... so ca. 20x Das führt aber nicht zum gewünschten Ziel: Es ensteht zwar insgesamt die Zeitverzögerung, aber die Elemente erscheinen nicht in dem gewünschten 0.5-Sekunden-Abstand auf dem Schirm; vielmehr ist es so, daß nach dem gesamten Programmdurchlauf wieder alles auf einmal auf dem Schirm "geklascht" wird. Hat da jemand eine Idee, warum das nicht bzw. wie das funktionieren könnte? Roman Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
joern bosse Ehrenmitglied Dipl.-Ing. Vermessung
Beiträge: 1763 Registriert: 11.10.2004 Window 11 ACAD 2021 CIVIL 2021 BricsCAD ab V14 11th Gen Intel(R) Core(TM) i7-1165G7 @ 2.80GHz 2.80 GHz 32.0GB RAM NVIDIA GeForce MX450<P>
|
erstellt am: 09. Jun. 2007 07:38 <-- editieren / zitieren --> Unities abgeben: Nur für romi1
|
romi1 Mitglied Bautechniker
Beiträge: 647 Registriert: 09.02.2006 Xeon E3-1245V2 16GB RAM Windows 10 Professional 64 bit AutoCAD 2014
|
erstellt am: 09. Jun. 2007 08:00 <-- editieren / zitieren --> Unities abgeben:
Danke Jörn, das ist aber leider auch nicht zielführend. Es wird die Wartezeit scheinbar wieder irgendwie gepuffert. Die Elemente erscheinen nicht eins nach dem anderen - in 500 Millisekunden Abstand - am Schirm, sondern zuerst nichts, und nach den Schleifendurchläufen alle Elemente auf einmal. Außerdem möchte ich wenn möglich keinen (command ...) benutzen ... Ich möchte die Anzeige "Verzögerungszeit (in Millisekunden) eingeben" vermeiden. Roman Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
joern bosse Ehrenmitglied Dipl.-Ing. Vermessung
Beiträge: 1763 Registriert: 11.10.2004 Window 11 ACAD 2021 CIVIL 2021 BricsCAD ab V14 11th Gen Intel(R) Core(TM) i7-1165G7 @ 2.80GHz 2.80 GHz 32.0GB RAM NVIDIA GeForce MX450<P>
|
erstellt am: 09. Jun. 2007 08:11 <-- editieren / zitieren --> Unities abgeben: Nur für romi1
Hallo Roman, das hört sich so an, als wenn die Elemente erzeugt werden, aber nicht sofort am Bildschirm sichtbar sind. Auch da benutze ich oftmals eine Krücke: (command "_.zoom" "_p") (command "_.undo" 1) Durch die Änderung des Zoom's und deren Rückgängigmachung werden die neu erzeugten oder geänderten Elemente dargestellt. Sind zwar wieder Command-Befehle, aber ich weiß nicht, was dagegen sprechen sollte (es sei denn, es läuft noch ein Dialogfenster nebenher) Und dann müßte eine zeitliche Verzögerung über repeat oder _.delay sichtbar werden. Bei der Repeat-Version bin ich aber der Meinung, daß die Zeit Rechnerabhängig ist. So nun ist aber gut, ich muß in den Baumarkt, viel Spaß noch.
------------------ viele Grüße Jörn Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Theodor Schoenwald Ehrenmitglied
Beiträge: 1672 Registriert: 16.04.2002
|
erstellt am: 09. Jun. 2007 22:35 <-- editieren / zitieren --> Unities abgeben: Nur für romi1
Hallo Roman, bringt Dir diese folgende Kontrollanzeige in Deiner Schleife etwas? (cond (ROTOR (setq ROTOR NIL) (princ "\r\\")) (t (setq ROTOR (princ "\r/"))) ) ------------------ Gruß Theodor Schönwald Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13527 Registriert: 30.11.2003 .
|
erstellt am: 11. Jun. 2007 08:44 <-- editieren / zitieren --> Unities abgeben: Nur für romi1
ach ja .. noch andere Möglichkeiteiten für delay-Befehle: (defun DT:WAIT(SEC1000 / WS) (if(and(=(type SEC1000)INT) (> SEC1000 0) (setq WS (vlax-create-object "WScript.Shell")) ) (progn (vlax-invoke-method WS 'sleep SEC1000) (vlax-release-object ws) (princ) ) ) ) oder (defun DT:WAIT2(SEC1000 / DATE ENDDATE) (if (numberp SEC1000) (progn (setq DATE (getvar "DATE")) (setq ENDDATE (+ DATE (/ SEC1000 24.0 60.0 60.0 1000.0))) (while (< DATE ENDDATE)(setq DATE (getvar "DATE"))) ) ) ) ------------------ - Thomas - "Bei 99% aller Probleme ist die umfassende Beschreibung des Problems bereits mehr als die Hälfte der Lösung desselben." Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
romi1 Mitglied Bautechniker
Beiträge: 647 Registriert: 09.02.2006 Xeon E3-1245V2 16GB RAM Windows 10 Professional 64 bit AutoCAD 2014
|
erstellt am: 11. Jun. 2007 10:00 <-- editieren / zitieren --> Unities abgeben:
Danke Jörn, Theodor und CADmium. Leider ist aber das Problem aber noch nicht aus der Welt ... vermutlich bin ich doch zu dumm, das zu kapieren ... zu Jörn's 2. Beitrag: das bringt bei mir nichts ... zu Theodors's Beitrag: es wird zwar in der Befehlszeile schön abwechseld / und \ angezeigt, bei den Grafikelementen erscheint aber während der Schleife nichts, und zum Schluß alles auf einmal. zu CADmium's Beitrag: da bin ich noch zu viel Anfänger, um das zu kapieren ... diese vl ...-Befehle kenne ich überhaupt nicht. Ich denke, das es aber trotzdem eine einfache Lösung geben müsste. Also nochmals: das Problem ist nicht mehr so sehr die Verzögerung, sondern das beim Schleifendurchlauf jeweils die Darstellung akutalisiert wird. Dann müßte ja auch meine plumpe (repeat 1000000)- Schleife zum Ziel führen, wenngleich auch in diesem Fall die Zeit der Verzögerung rechnerabhängig ist. Jedenfalls möchte ich (command ...)-Befehle vermeiden. Ich habe anbei nochmal extra ein kurzes Lisp geschrieben, das einfach 100 Linien versetzt übereinander zeichnet. Meine Frage: Wie geht das, das man nach dem Zeichnen jeder Linie ca. 0.5 Sekunden Zeitabsand hat, und das dann jedesmal die Darstellung aktualisiert wird. Bei meiner (derzeit auskommentierten) Variante gibt es zwar insgesamt die Verzögerung, aber die Linien werden nicht im 0.5 Sekunden-Takt dargestellt, sondern man wartet vorerst recht lange, und dann erscheint alles auf einmal. Gruß Roman Hier das Test-Lisp: (defun c:r1 () (setq i 1.0) (repeat 100 ;(repeat 1000000 (setq dummi 1)) .... an dieser Stelle Zeitverzögerung einbauen (entmake (list '(0 . "LINE") '(8 . "0") (list 10 i i ) (list 11 (+ i 10.0) i ) ) ) (setq i (1+ i)) ) ) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13527 Registriert: 30.11.2003 .
|
erstellt am: 11. Jun. 2007 10:04 <-- editieren / zitieren --> Unities abgeben: Nur für romi1
setz doch nach jeder Erstellung ein _regen ab .. oder noch besser ein (redraw OBJECT) ------------------ - Thomas - "Bei 99% aller Probleme ist die umfassende Beschreibung des Problems bereits mehr als die Hälfte der Lösung desselben."Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
romi1 Mitglied Bautechniker
Beiträge: 647 Registriert: 09.02.2006 Xeon E3-1245V2 16GB RAM Windows 10 Professional 64 bit AutoCAD 2014
|
erstellt am: 11. Jun. 2007 13:46 <-- editieren / zitieren --> Unities abgeben:
|
fred_tomke Mitglied Applikationsingenieur
Beiträge: 156 Registriert: 14.06.2004 Map 2015 x64 Win7 x64 12 GB RAM ADN OpenDCL
|
erstellt am: 12. Jun. 2007 15:21 <-- editieren / zitieren --> Unities abgeben: Nur für romi1
Hallo, ich hätt da noch ein Hinweis: bei sehr großen Schleifen mit komplexen Operationen pro Durchgang habe ich meist ab dem 2000. Durchgang eine erhebliche Verlangsamung feststellen müssen - mitunter war nach dem 2150. Durchgang Sense. Hier hat alle 1000 Durchgänge eine Zeichnungsdatenbankkonsolidierung via (vla-update (vlax-get-acad-object)) Abhilfe geschaffen. Nur so als Hinweis. ------------------ Fred Tomke Dipl.-Ing. (FH) Landespflege Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
fred_tomke Mitglied Applikationsingenieur
Beiträge: 156 Registriert: 14.06.2004 Map 2015 x64 Win7 x64 12 GB RAM ADN OpenDCL
|
erstellt am: 30. Jul. 2007 12:04 <-- editieren / zitieren --> Unities abgeben: Nur für romi1
Hallo CADmium, Ich habe mal (setq WS (vlax-create-object "WScript.Shell")) ausprobiert. Interessanterweise sagt er mir bei Befehl: (vlax-invoke-method ws 'sleep 1000) ; Fehler: ActiveX-Server gab folgenden Fehler zurück: unbekannter Name: SLEEP War es wirklich das WScript.Shell-Objekt? VG, Fred ------------------ Fred Tomke Dipl.-Ing. (FH) Landespflege Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Brischke Moderator CAD on demand GmbH
Beiträge: 4187 Registriert: 17.05.2001 AutoCAD 20XX, defun-tools (d-tools.eu)
|
erstellt am: 30. Jul. 2007 16:49 <-- editieren / zitieren --> Unities abgeben: Nur für romi1
|