Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Lisp
  Lisp warten lassen

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
  
Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte
Autor Thema:  Lisp warten lassen (4003 mal gelesen)
CADchup
Ehrenmitglied V.I.P. h.c.




Sehen Sie sich das Profil von CADchup an!   Senden Sie eine Private Message an CADchup  Schreiben Sie einen Gästebucheintrag für CADchup

Beiträge: 3329
Registriert: 14.03.2001

Sicher ist, dass nichts sicher ist. Selbst das nicht.
Joachim Ringelnatz

erstellt am: 10. Apr. 2003 13:05    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hi,

vielleicht hat einer von Euch eine Idee:
Ich lasse von einem Lisp eine Datei im TEMP-Ordner erstellen und starte anschließend mit (startapp) ein externes Programm, das die eben erstellte Datei weiterverwurstet.
Nun möchte ich, nachdem das externe Programm fertig ist, die erstellte Datei wieder löschen. Wie kann ich diesem ungeduldigen Lisp beibringen, gefälligst solange zu warten, bis das externe Programm mit seiner Arbeit fertig ist?

------------------
www.cadditions.de

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Brischke
Moderator
CAD on demand GmbH




Sehen Sie sich das Profil von Brischke an!   Senden Sie eine Private Message an Brischke  Schreiben Sie einen Gästebucheintrag für Brischke

Beiträge: 4171
Registriert: 17.05.2001

AutoCAD 20XX, defun-tools (d-tools.eu)

erstellt am: 10. Apr. 2003 13:16    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für CADchup 10 Unities + Antwort hilfreich

ist das externe Programm dann auch wieder beendet? Das kannst du abfragen. Habe ich mal mit Winzip gemacht, das lief auch, muß nur mal suchen wie.

Grüße Holger

------------------
Holger Brischke
CADlon - Lisp over night!
Neue Tool's im Free-&Download
Zugang zum Download schon gesichert?

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

CADchup
Ehrenmitglied V.I.P. h.c.




Sehen Sie sich das Profil von CADchup an!   Senden Sie eine Private Message an CADchup  Schreiben Sie einen Gästebucheintrag für CADchup

Beiträge: 3329
Registriert: 14.03.2001

Sicher ist, dass nichts sicher ist. Selbst das nicht.
Joachim Ringelnatz

erstellt am: 10. Apr. 2003 14:53    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Wäre nicht schlecht, wenn Du das finden würdest!

Danke schonmal!

------------------
www.cadditions.de

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

marc.scherer
Ehrenmitglied V.I.P. h.c.
CAD-Administrator



Sehen Sie sich das Profil von marc.scherer an!   Senden Sie eine Private Message an marc.scherer  Schreiben Sie einen Gästebucheintrag für marc.scherer

Beiträge: 2490
Registriert: 02.11.2001

Windows 10 64bit
AutoCAD Architecture 2018/2019 (deu/eng)
AEC-Collection 2019 (Revit und Zeugs)
Wenn sich's nicht vermeiden läßt:
D-A-CH Erweiterung (mies implementierter Schrott)

erstellt am: 10. Apr. 2003 17:18    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für CADchup 10 Unities + Antwort hilfreich

Hi,
ich hab' für sowas mal "dos_exewait" aus dem DosLib. genommen:

dos_exewait

Executes an external program, then waits for termination before returning control to the calling application.

Syntax
(dos_exewait command [show])
Parameters
command
The command to run, including arguments.

show
How the newly opened window is to be shown. The default value is Normal (0).

0
Normal. Activates and displays a window. If the window is minimized or maximized, the system restores it to its original size and position. An application should specify this flag when displaying the window for the first time.

1
No Active. Displays a window in its most recent size and position. This value is similar option 0, except the window is not actived.

2
Minimized. Activates the window and displays it as a minimized window.

3
Minimized Not Active. Displays the window as a minimized window. This value is similar to option 2, except the window is not activated.

4
Maximized. Activates the window and displays it as a maximized window.

Returns
Returns command if successful.

nil on error.

Example
Command: (dos_execute "Notepad.exe")

"Notepad.exe"

------------------
Ciao,
Marc

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Werner
Mitglied
Konstrukteur


Sehen Sie sich das Profil von Werner an!   Senden Sie eine Private Message an Werner  Schreiben Sie einen Gästebucheintrag für Werner

Beiträge: 72
Registriert: 19.11.2000

erstellt am: 10. Apr. 2003 17:43    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für CADchup 10 Unities + Antwort hilfreich

Schon mal mit pause oder _delay innerhalb von Lisp versucht.
Habe kürzlich mal innerhalb eines Scripts wegen ähnlicher Probleme
diesen Befehl verwendet. Hat tatsächlich geholfen.
ACAD überholt sich nun nicht mehr während ich
Dateien kopiere und lösche.

Befehl in Lisp:

(command "pause" 500)            ;Wartezeit


Werner

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

wklemens
Mitglied
Systemingenieur


Sehen Sie sich das Profil von wklemens an!   Senden Sie eine Private Message an wklemens  Schreiben Sie einen Gästebucheintrag für wklemens

Beiträge: 383
Registriert: 02.09.2002

erstellt am: 10. Apr. 2003 18:45    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für CADchup 10 Unities + Antwort hilfreich

über (command "shell" "DOS-Befehlsname") kann man externe Programme aufrufen. in der Datei ACAD.PGP kann man über die Bit-Schalter dem SHELL-Befehl oder einem Eigenen SH-Befehl das Warten beibringen!

------------------
Grüße aus Linz

Willi Klemens
MCDS Datensystem GmbH

www.mcds.net

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

CADchup
Ehrenmitglied V.I.P. h.c.




Sehen Sie sich das Profil von CADchup an!   Senden Sie eine Private Message an CADchup  Schreiben Sie einen Gästebucheintrag für CADchup

Beiträge: 3329
Registriert: 14.03.2001

Sicher ist, dass nichts sicher ist. Selbst das nicht.
Joachim Ringelnatz

erstellt am: 11. Apr. 2003 09:28    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Danke für Eure Antworten!
Leider kann ich solche Sachen wie DosLib oder ein Eintrag in der PGP nicht machen, weil das Proggie, wenn es denn in einem der nächsten Jahrhunderte fertig wird, nicht für mich alleine ist. Außerdem wollte ich es auch als Download anbieten.
Die Sache mit "Pause" oder "Delay" ist mir zu unsicher, denn es kann große und kleine Dateien geben, die natürlich unterschiedlich lange Wartezeiten benötigen.

Hach, gibt's denn keine Lisp-Funktion oder ein vla-Konstrukt, mit dem man sowas machen kann?

Gruß
CADchup

P.S. Ihr bekommt natürlich trotzdem unities. Als Dank für Eure Anteilnahme!

------------------
www.cadditions.de

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

andi2050
Mitglied



Sehen Sie sich das Profil von andi2050 an!   Senden Sie eine Private Message an andi2050  Schreiben Sie einen Gästebucheintrag für andi2050

Beiträge: 107
Registriert: 11.03.2003

erstellt am: 11. Apr. 2003 14:38    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für CADchup 10 Unities + Antwort hilfreich

Hi CADchup

Wenn die Externe Anwendung die Datei während der Bearbeitung auf 'Schreibgeschützt' setzt, dann könntest Du ja in einer Schleife die  Datei immer wieder versuchen zu löschen und mir 'FINDFILE' abfragen ob sie wirklich weg ist.

Ist nur so eine Idee, ob's praktikabel ist weiß ich nicht.

Ich hab sowas bisher so gelöst:
Mit Shell die Anwendug aufgerufen und in der nächsten Code-Zeile eine  Getstring-abfrage  mit "Bitte ENTER drücken..." gesetzt.
Ist aber nicht die elegante Lösung.

Vielleicht hilfts...

Grüße
Andi

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

autocart
Mitglied
Technischer Redakteur


Sehen Sie sich das Profil von autocart an!   Senden Sie eine Private Message an autocart  Schreiben Sie einen Gästebucheintrag für autocart

Beiträge: 695
Registriert: 08.09.2003

erstellt am: 15. Dez. 2008 02:26    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für CADchup 10 Unities + Antwort hilfreich


acetFind.zip

 
Hallo!
Ist zwar schon ein paar Jährchen her und für dich, CADchup, nicht mehr nützlich, aber für alle, die bei der Suche nochmal über diesen Artikel stolpern (da ja damals keine zufriedenstellende Lösung gefunden wurde):

Die ACET-SYS-Funktionen dürften für dieses Thema durchaus interessant sein. Vor allem die "ACET-SYS-SPAWN" und die "ACET-SYS-WAIT" Funktionen. ACET steht dabei für AutoCad-ExpressTools. Bei mir auf AutoCAD 2008 hat es funktioniert (ExpressTools müssen natürlich installiert sein).

Dokumentation fand ich nur in Englisch und muss seperat downgeloaded werden: Hier eine HTML-Seite (http://www.afralisp.net/lisp/acet-utils.htm) und Hier ein CHM-File (http://www.jtbworld.com/download/acetutil.zip).

EDIT: Die einzigen Dokus, die ich fand, sind leider von der Vorgänger-Version und (dadurch) nicht mehr ganz vollständig. Die Lispdatei, die ich jetzt hier angehängt habe, listet zumindest alle verfügbaren "ACET-Funktionen" auf (inkl. globale ACET-Variblen und einige vla-Funktionen, die zufällig den String "acet" beinhalten), wenn auch ohne Erklärung.
Start mit: (acetfind pattern) -> pattern steht für einen String, der im Funktionsnamen vorkommen soll. Bei "" werden wirklich alle aufgelistet (bei mir z.Z. 365 + 38 globale Variablen).

EDIT2: Falls "ACET-SYS-SPAWN" nicht funktioniert, käme noch "ACET-SYS-COMMAND" in Frage. Ich hatte den Fall, dass ich mehrere dwg-Dateien erstellte und zum Nachbearbeiten dieser dwg-Dateien AutoCAD ein 2. mal aufmachte um dort mit SDI 1 die Dateien durchzugehen (bearbeitet durch ein Lisp, das mit acaddoc aufgerufen wurde). Die ursprüngliche Zeichnung mit dem aktiven Prog sollte aber warten. Nun wollte mir "ACET-SYS-SPAWN" die "acad.exe" partout nicht ein 2. mal aufmachen (was weiß der Geier, wieso). Mit "ACET-SYS-COMMAND" ist es dann aber doch gegangen und der Befehl wartet auch.

------------------
Gruß, Stephan
www.stbartl.at

[Diese Nachricht wurde von autocart am 15. Dez. 2008 editiert.]

[Diese Nachricht wurde von autocart am 20. Dez. 2008 editiert.]

[Diese Nachricht wurde von autocart am 26. Dez. 2008 editiert.]

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

joern bosse
Ehrenmitglied
Dipl.-Ing. Vermessung


Sehen Sie sich das Profil von joern bosse an!   Senden Sie eine Private Message an joern bosse  Schreiben Sie einen Gästebucheintrag für joern bosse

Beiträge: 1734
Registriert: 11.10.2004

Window 10
ACAD 2021
CIVIL 2021
BricsCAD V14-V22
Intel(R) Core(TM)i5-8250U CPU @ 1.60GHz 1.80 GHz
16.0GB RAM
NVIDIA GeForce GTX 1050<P>

erstellt am: 15. Dez. 2008 07:36    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für CADchup 10 Unities + Antwort hilfreich

Hallo CADchup,
ich habe das mal so ähnlich wie Andy vorgeschlagen gelöst, solange, wie vl-file-rename nil zurück gibt ist die Datei am "Arbeiten" (in diesem Fall ein RAR-Archiv).

Code:

(if
  (and (vl-file-rename
(strcat pfad A)
(strcat (substr (strcat pfad A) 1 (vl-string-search "." (strcat pfad A))) ".exe")
)
      (findfile (strcat (substr (strcat pfad A) 1 (vl-string-search "." (strcat pfad A))) ".exe"))
      )
  (progn
    (startapp (strcat (substr (strcat pfad A) 1 (vl-string-search "." (strcat pfad A))) ".exe"))
    (princ (strcat "\nUpgradinstallation: " A " (" (itoa n) ")"))
    (while (and (< (setq n (+ n 1)) 400000)
(not (vl-directory-files "C:\\temp\\Bosse_tools_temp" "Bosse_tools" -1))
)
      (princ (strcat "\rUpgradinstallation: " A " (" (itoa n) ")"))
      )
    (while
      (and (not (vl-file-rename
  (strcat (substr (strcat pfad A) 1 (vl-string-search "." (strcat pfad A))) ".exe")
  (strcat pfad A)
  )
)
    (< (setq n (+ n 1)) 400000)
    )
(princ (strcat "\rUpgradinstallation: " A " (" (itoa n) ")"))
)
    (if (>= n 400000)
      (alert
(strcat "Fehler bei der Upgradeinstallation:"
"\nBitte benennen Sie die Datei"
"\n\n"
(strcat (substr (strcat pfad A) 1 (vl-string-search "." (strcat pfad A))) ".exe")
"\n\nin"
"\n\n"
(strcat pfad A)
"\n\num."
)
)
      )
    )
  (progn
    (alert (strcat "\nDas Upgrade-Verzeichnis " "\n" pfad "\ndarf nicht schreibgeschützt sein."))
    (exit)
    )
  )



------------------
viele Grüße

Jörn
http://www.bosse-engineering.com

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

CADchup
Ehrenmitglied V.I.P. h.c.




Sehen Sie sich das Profil von CADchup an!   Senden Sie eine Private Message an CADchup  Schreiben Sie einen Gästebucheintrag für CADchup

Beiträge: 3329
Registriert: 14.03.2001

Sicher ist, dass nichts sicher ist. Selbst das nicht.
Joachim Ringelnatz

erstellt am: 15. Dez. 2008 10:16    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hi,

jungejunge, was ihr hier alles ausgrabt... 

@Stephan
Wie du schon schriebst, bedingt deine Lösung eine Express-Tools-Installation. In diesem Fall wären die Funktionen brauchbare Alternativen.

@Jörn + all
Ich habe es damals anders lösen können, indem ich das Tool so umgestellt habe, dass ich die temporäre Datei erst am Ende gelöscht habe. 
Aus Performancegründen (und weil es einfach besser aussieht  ) ist das IMHO der zu bevorzugende Weg, weil die möglicherweise entstehenden Wartezeiten erst ganz am Ende anfallen.


Gruß
CADchup

------------------
CADmaro.de

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Theodor Schoenwald
Ehrenmitglied



Sehen Sie sich das Profil von Theodor Schoenwald an!   Senden Sie eine Private Message an Theodor Schoenwald  Schreiben Sie einen Gästebucheintrag für Theodor Schoenwald

Beiträge: 1672
Registriert: 16.04.2002

erstellt am: 15. Dez. 2008 18:55    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für CADchup 10 Unities + Antwort hilfreich

Hallo,

ich habe bis jetzt, noch keine gute Lösung gefunden.

- Pause und Wartezeit hat keinen Erfolg gebracht.
- (Getstring "Weiter eine Taste") auch nicht.
- Mit Hilfe von DCL einen Fortschrittsbalken durchlaufen
  lassen auch nicht.

Alles was ich probiert habe, funktioniert je nach PC-Geschwindigkeit anders. Wenn es dann bei ACAD in den meisten Fällen geht, funktioniert es bei BricsCad oder sonst einem ICAD-Abkömmling nicht.

Ich warte immer noch auf eine einfache und sichere Lösung.

Gruß
Theodor Schönwald

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Ex-Mitglied
danielboukreev
Mitglied



Sehen Sie sich das Profil von danielboukreev an!   Senden Sie eine Private Message an danielboukreev  Schreiben Sie einen Gästebucheintrag für danielboukreev

Beiträge: 27
Registriert: 10.03.2005

erstellt am: 16. Dez. 2008 00:39    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für CADchup 10 Unities + Antwort hilfreich

Ändert sich die Dateigröße der neu zu erstellenden Datei während der Bearbeitung? Ich hab das bei nem Pdf-Druck-Skript so gelöst, daß ich jede Sekunde prüfe, ob sich die Dateigröße zum vorherigen Zeitpunkt verändert hat. Wenn die Dateigröße innerhalb 1 Sek. gleich geblieben ist, dann isses (zumindest beim Pdf-Drucker) wahrscheinlich, daß die Bearbeitung fertig ist. Weiß nur gerade nicht, ob sich die Dateigröße mittels Lisp so einfach ermitteln lässt

daniel

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

CADchup
Ehrenmitglied V.I.P. h.c.




Sehen Sie sich das Profil von CADchup an!   Senden Sie eine Private Message an CADchup  Schreiben Sie einen Gästebucheintrag für CADchup

Beiträge: 3329
Registriert: 14.03.2001

Sicher ist, dass nichts sicher ist. Selbst das nicht.
Joachim Ringelnatz

erstellt am: 16. Dez. 2008 09:13    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

@Daniel
Ziemlich einfach sogar. Ungetestet könnte das etwa so aussehen:
Code:
(defun mx:Wait4FinishedFile (filename / fsize)
  (setq fsize (vl-file-size filename))
  (command "_.DELAY" "1000")
  (while (/= fsize (setq fsize (vl-file-size filename)))
    (command "_.DELAY" "1000")
  )
)


Gruß
CADchup

------------------
CADmaro.de

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

fuchsi
Mitglied
Programmierer c#.net Datawarehouse


Sehen Sie sich das Profil von fuchsi an!   Senden Sie eine Private Message an fuchsi  Schreiben Sie einen Gästebucheintrag für fuchsi

Beiträge: 1201
Registriert: 14.10.2003

AutoCad Version 2012 deu/enu
<P>Windows 7 64bit

erstellt am: 16. Dez. 2008 15:54    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für CADchup 10 Unities + Antwort hilfreich

sowas geht in Verbindung VBA und Lisp relativ einfach

als erstes legts Du ein VBAModul an names mdShell mit fogendem Code

Code:
Private Declare Function WaitForSingleObject Lib "kernel32" (ByVal hHandle As Long, ByVal dwMilliseconds As Long) As Long
Private Declare Function CreateProcessA Lib "kernel32" (ByVal lpApplicationName As Long, ByVal lpCommandLine As String, ByVal lpProcessAttributes As Long, ByVal lpThreadAttributes As Long, ByVal bInheritHandles As Long, ByVal dwCreationFlags As Long, ByVal lpEnvironment As Long, ByVal lpCurrentDirectory As Long, lpStartupInfo As STARTUPINFO, lpProcessInformation As PROCESS_INFORMATION) As Long
Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long

Private Type STARTUPINFO
  cb As Long
  lpReserved As String
  lpDesktop As String
  lpTitle As String
  dwX As Long
  dwY As Long
  dwXSize As Long
  dwYSize As Long
  dwXCountChars As Long
  dwYCountChars As Long
  dwFillAttribute As Long
  dwFlags As Long
  wShowWindow As Integer
  cbReserved2 As Integer
  lpReserved2 As Long
  hStdInput As Long
  hStdOutput As Long
  hStdError As Long
End Type
Private Type PROCESS_INFORMATION
  hProcess As Long
  hThread As Long
  dwProcessID As Long
  dwThreadID As Long
End Type
Private Const NORMAL_PRIORITY_CLASS = &H20&
Private Const INFINITE = -1&

Public Sub StartApplication()

    Dim cmdLine As String
    cmdLine = ThisDrawing.GetVariable("USERS1")


    Dim proc As PROCESS_INFORMATION
    Dim start As STARTUPINFO
    Dim ret As Long
   
    'Initialisieren der Startup-Struktur
    start.cb = Len(start)
   
    'Starten der Applikation
    ret = CreateProcessA(0&, cmdLine$, 0&, 0&, 1&, _
            NORMAL_PRIORITY_CLASS, 0&, 0&, start, proc)
    'Warten bis die gestartete Applikation beendet ist
    ret = WaitForSingleObject(proc.hProcess, INFINITE)
    ret = CloseHandle(proc.hProcess)
End Sub



als nächstes eine Lisproutine, die dieses VBA Modul startet

Code:
(defun WaitForShell ( cmdLine / )

  (setvar "USERS1" cmdLine)
  (vl-vbarun "mdShell.StartApplication")
)


wenn Du nun mit z.B.:

Code:
(WaitForShell "notepad")

notepad startest, wartet die Funktion auf die Beendigung der externen Appilkation (in diesem Fall Notepad)

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Theodor Schoenwald
Ehrenmitglied



Sehen Sie sich das Profil von Theodor Schoenwald an!   Senden Sie eine Private Message an Theodor Schoenwald  Schreiben Sie einen Gästebucheintrag für Theodor Schoenwald

Beiträge: 1672
Registriert: 16.04.2002

erstellt am: 16. Dez. 2008 20:15    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für CADchup 10 Unities + Antwort hilfreich

Hallo,

die letzten beiden Vorschläge sind für ACAD, das VL-Anweisungen verarbeiten kann.
Viele ICAD-Abkömmlinge können nur teilweise VL-Anweisungen verarbeiten oder überhaupt nicht.

Ich benötige einen Vorschlag der auch für das Vor-VL-Lisp benutzt werden kann.

Das Beispiel:
;; ---------------------------------------
(startapp "PGCPock.EXE") ; erstellt die Datei PocketOUT.ARF
;; An dieser Stelle hatte ich schon:
;; (command "Pause" mit Zeitangabe, die nie gestimmt hat.
;; while Schleife ...
;; und Einiges mehr.
;; Auch die nächste Abfrage wird  manchmal "überlaufen"
(if (not (findfile DAT_OUT))
  (getstring "Weiter mit einer Taste")
)
;; ----------------------------------------------- 
Anmerkung: die Datei "PocketOUT.ARF" ist eine Textdatei aber nie gleich groß.
Deshalb geht es einmal und bei großen Datenmengen wieder nicht.

Gruß
Theodor

[Diese Nachricht wurde von Theodor Schoenwald am 16. Dez. 2008 editiert.]

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Ex-Mitglied
Theodor Schoenwald
Ehrenmitglied



Sehen Sie sich das Profil von Theodor Schoenwald an!   Senden Sie eine Private Message an Theodor Schoenwald  Schreiben Sie einen Gästebucheintrag für Theodor Schoenwald

Beiträge: 1672
Registriert: 16.04.2002

erstellt am: 06. Jan. 2009 18:14    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für CADchup 10 Unities + Antwort hilfreich

Hallo,

Bei ACAD konnte ich nicht feststellen, ob Dein Tipp gut ist oder nicht,
Da das Überlaufen (warum auch immer) nicht immer auftritt.
Bei BricsCad konnte ich mehr sehen, da kam es zu einer Fehlermeldung, weil die Datei nicht vorhanden war.

Deine Tipps helfen auch nicht weiter.

Gruß
Theodor

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

bu
Mitglied
die Frage habe ich mir auch schon gestellt


Sehen Sie sich das Profil von bu an!   Senden Sie eine Private Message an bu  Schreiben Sie einen Gästebucheintrag für bu

Beiträge: 265
Registriert: 29.06.2004

AutoCAD 2010 Mechanical

erstellt am: 07. Jan. 2009 08:18    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für CADchup 10 Unities + Antwort hilfreich

Ein gutes neues Jahr wünsch ich allen ....

Ich hab so einen Fall schon mal gelöst. Indem ich die .exe welche ja "extern" läuft, am Ende eine Datei rausschreiben lass. Diese Datei dient nur als Kenner ob die .exe fertig ist oder nicht. Dadurch dass diese Kenner-Datei eindeutig definiert und natürlich sehr klein ist, sind Performance Probleme minimal. Das Programm läuft auch nach einigen Jahren sicher. Fürs Erstellen der Kenner-Datei gibt es noch einen Time-out. Falls die .exe stehen bleibt. Wie ihr seht alles ziemlich handgestrickt. Und die Einflussmöglichkeit auf die .exe muss vorhanden sein. Grösstes Problem denke ich.

------------------
Gruss bu

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

autocart
Mitglied
Technischer Redakteur


Sehen Sie sich das Profil von autocart an!   Senden Sie eine Private Message an autocart  Schreiben Sie einen Gästebucheintrag für autocart

Beiträge: 695
Registriert: 08.09.2003

erstellt am: 07. Jan. 2009 10:52    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für CADchup 10 Unities + Antwort hilfreich

Hallo bu!

So groß ist das Problem der Einflussmöglichkeit auf die exe auch wieder nicht.

Wenn man die exe selbst nicht manipulieren kann, dann läßt sich zumindest mit z.B. AutoIt3 (oder vielleicht auch mit einer anderen Windows-Programmierung/Automatisierung) relativ leicht eine zweite (eigene) exe basteln, die zuerst die gewünschte fremde exe aufruft, auf dessen Ende wartet und dann die "Kenner-Datei" erzeugt. Und jeder, der AutoLISP versteht, kann mit AutoIt3 auch umgehen.

------------------
Gruß, Stephan
www.stbartl.at

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

autocart
Mitglied
Technischer Redakteur


Sehen Sie sich das Profil von autocart an!   Senden Sie eine Private Message an autocart  Schreiben Sie einen Gästebucheintrag für autocart

Beiträge: 695
Registriert: 08.09.2003

erstellt am: 08. Jan. 2009 01:53    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für CADchup 10 Unities + Antwort hilfreich


runWaitMakeFile_timeout.zip

 
Um mich heute mal von meiner spendierfreudigen Seite zu zeigen        , hab ich mal so eine exe gebastelt, die eine andere ausführbare Datei (EXE, BAT, COM oder PIF) ausführt, auf deren Ende wartet und danach eine "Kenner-Text-Datei" erzeugt. Die selbst gebastelte exe zusammen mit dem Source-Code (AutoIt3) ist im zip-file zum Download zur Verfügung.

Die exe erwartet 2 Befehlszeilenparameter:
1) den Pfad+Namen(+Erweiterung) der auszuführenden Datei (der Pfad kann weggelassen werden, wenn sich die auszuführende Datei im selben Ordner wie die selbst gebastelte exe befindet)
2) den Namen(+Erweiterung) der zu erstellenden Text-Datei (bei Wunsch mit Pfad, welcher existieren muss; wird nur der Name ohne Pfad angegeben, so wird die Datei im Ordner der selbst gebastelten exe erstellt)

Parameter mit Leerzeichen müssen in doppelten Anführungszeichen stehen.

Bsp.: runWaitMakeFile_timeout.exe C:\Programme\TestProgramm\Test.exe "Name der Textdatei.txt"

Hoffe es funkt bei allen, die es brauchen können. Bei Fehlern bitte melden.

Ach ja: Ich habe es unter Vista Business getestet. Hat bei mir fürs erste gefunkt.
Und die AutoIt3-Version des Source-Codes ist v3.3.0.0 (vom 24.Dez.2008), sollte aber IMHO keinen Unterschied zu anderen Versionen machen. Hab's nur zur Sicherheit dazugeschrieben.

EDIT: Ich hab jetzt einen 3. OPTIONALEN Parameter hinzugefügt: Timeout in ganzen Sekunden. Es werden nur ganze Zahlen gewertet. Alles andere Text, Kommazahlen oder Mischungen werden ignoriert -> das heißt normale Ausführung ohne Timeout.

Bsp.: runWaitMakeFile_timeout.exe C:\Programme\TestProgramm\Test.exe "Name der Textdatei.txt" 10
-> Wenn die fremde, auszuführende EXE nach 10 Sekunden noch nicht fertig ist, kommt eine MsgBox mit der Meldung, dass aufgrund von Timeout keine Textdatei erstellt wird.

------------------
Gruß, Stephan
www.stbartl.at

[Diese Nachricht wurde von autocart am 09. Jan. 2009 editiert.]

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Theodor Schoenwald
Ehrenmitglied



Sehen Sie sich das Profil von Theodor Schoenwald an!   Senden Sie eine Private Message an Theodor Schoenwald  Schreiben Sie einen Gästebucheintrag für Theodor Schoenwald

Beiträge: 1672
Registriert: 16.04.2002

erstellt am: 08. Jan. 2009 12:53    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für CADchup 10 Unities + Antwort hilfreich

Danke Stephan,

ich werde es am Wochenende ausprobieren.
Morgen bin ich auf der Echtdampfmesse in Sinsheim.

Gruß
Theodor

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Theodor Schoenwald
Ehrenmitglied



Sehen Sie sich das Profil von Theodor Schoenwald an!   Senden Sie eine Private Message an Theodor Schoenwald  Schreiben Sie einen Gästebucheintrag für Theodor Schoenwald

Beiträge: 1672
Registriert: 16.04.2002

erstellt am: 08. Jan. 2009 18:39    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für CADchup 10 Unities + Antwort hilfreich

Hallo Stefan,

ich habe es Heute Abend noch getestet.

Ob so:
(startapp "C:\\Programme\\_PGC\\runWaitMakeFile.exe C:\\Programme\\_PGC\\PGCPock.EXE C:\\Temp\\PocketOUT.ARF")

in AutoLisp

oder so:

runWaitMakeFile.exe PGCPock.exe PocketOUT.ARF

im DOS-Fenster und gleichem Ordner, die Datei "PocketOUT.ARF" hat 0 Byte.

Normalerweise hat sie viel mehr.

Scheinbar wartet das Programm "runWaitMakeFile.exe" nicht bis das Programm "PGCPock.exe" alles fertig hat.

Die "PGCPock.exe" hat je nach Kontur viel zu rechnen, die Ergebnisse werden danach in die Datei "PocketOUT.ARF" geschrieben.
Die Rechenzeiten sind bei jeder Kontur anders, sonst könnte man eine bestimmte Zeit vorgeben.

Schade, dass es mit Deinem Vorschlag auch nicht geht.

Gruß

Theodor


Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP


Ex-Mitglied

erstellt am: 08. Jan. 2009 19:33    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

Hi,

könnte das nicht mit einem ganz normalen BAT-File erledigt werden (wenn schon Lisp in einer Schleife auf Dateiexistenz wartet), könnte so aussehen:

Code:
@echo off
C:\Programme\_PGC\PGCPock.EXE C:\Temp\PocketOUT.ARF
echo ExeEnded >> C:\Temp\CheckLoop.txt
, die Datei 'C:\Temp\CheckLoop.txt' müsste dann halt schon vom Lisp aus vor Aufruf der BAT-Datei gelöscht sein.

- alfred -

Theodor Schoenwald
Ehrenmitglied



Sehen Sie sich das Profil von Theodor Schoenwald an!   Senden Sie eine Private Message an Theodor Schoenwald  Schreiben Sie einen Gästebucheintrag für Theodor Schoenwald

Beiträge: 1672
Registriert: 16.04.2002

erstellt am: 08. Jan. 2009 22:17    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für CADchup 10 Unities + Antwort hilfreich

Hallo Alfred,

das ist ein wenig anders, die Datei: "PocketOUT.ARF" wird automatisch von der
PGCPock.EXE erstellt, die wird normalerweise nicht angegeben. Da war nur weil die Ablaufdatei von Stephan die Angabe benötigt hat.

Ich vermute es müsste dann so aussehen Code:
-------------------------------------------------
@echo off
C:\Programme\_PGC\PGCPock.EXE
echo ExeEnded > C:\Temp\CheckLoop.txt
-------------------------------------------------

Dass ich dann danach die Existenz der "CheckLoop.txt" abfrage.

Da bei dem Lisp-Programm am Anfang 3 andere Dateien gelöscht werden, kann die
"CheckLoop.txt" auch mit gelöscht werden.

Das werde ich auch auf jeden Fall testen.

Gruß
Theodor

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Theodor Schoenwald
Ehrenmitglied



Sehen Sie sich das Profil von Theodor Schoenwald an!   Senden Sie eine Private Message an Theodor Schoenwald  Schreiben Sie einen Gästebucheintrag für Theodor Schoenwald

Beiträge: 1672
Registriert: 16.04.2002

erstellt am: 09. Jan. 2009 14:11    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für CADchup 10 Unities + Antwort hilfreich

Hallo Alfred, hallo Stephan,

so geht es:

---------------Stapeldatei------------
@echo off
PGCPock.EXE
echo ExeEnded > CheckLoop.txt

-----------Lispabfrage----------------

setq Z3 0
    Z4 0
)
(while (not (findfile "CheckLoop.txt"))
(setq Z3 (1+ Z3)
      Z4 (1+ Z4)
)
(if (= Z3 100)
  (progn
  (princ " .")  ;Kontrollanzeige               
  (setq Z3 0)
  )
)
(if (= Z4 2000)
  (progn
  (princ "\nBitte noch warten")
  (setq Z4 0)
  )
)
)
--------------------------------------------------
Von allen Vorschlägen die ich bis jetzt probiert habe, ist diese Kombination, die einzige Lösung die bei ACAD, BricsCAd und anderen ICAD-Abkömmlingen funktioniert hat.

Die Zeile:
echo ExeEnded > CheckLoop.txt
benötigt nur ein ">" Umleitungszeichen, zwei >> bedeutet anhängen,
ein > ist überschreiben.
An Stelle von "ExeEnded" kann jedes beliebige Zeichen stehen, ich frage ja nur ab, ob die Datei "CheckLoop.txt" existiert.

@Stephan Deine Lösung wartet nicht bis die "PocketOUT.ARF" fertig geschrieben ist. Da müsste vielleicht auch so eine Dummy-Datei, wie die "CheckLoop.txt", erstellt werden.

Vielen Dank für die Lösungsvorschläge.

Gruß
Theodor Schönwald


Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP


Ex-Mitglied

erstellt am: 09. Jan. 2009 15:22    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

Hi Theodor, 
Zitat:
(while (not (findfile "CheckLoop.txt"))
wird nur dann funktionieren (im Zusammenhang mit obiger BAT-Datei), wenn Deine Zeichnung in C:\Temp gespeichert ist oder C:\Temp in den Supportpfaden von AutoCAD mit enthalten ist.


Zitat:
benötigt nur ein ">" Umleitungszeichen, zwei >> bedeutet anhängen
mein Empfinden dazu ist, dass beides funktioniert, denn wenn die Datei nicht existiert, dann wird diese auch bei '>>' erstellt.


Allgemein zu Schleifen während andere Programme arbeiten (sollen): man sollte dem Betriebssystem eine Chance geben, dem aufgerufenen Programm auch Prozessorleistung überzulassen. In obiger Schleife läuft AutoCAD mit voller Prozessorauslastung sein Hochzählen (von Z3 und Z4), das geht bei einem DualCore/QuadCore noch halbwegs OK, bei 'echtem' Singleprozessor wird die Leistung (der aufgerufenen App) auf 30%-25% runterfallen und der Prozessor ist nur mehr mit Taskswitching beschäftigt.

Da kann ich aber auch schlau reden , denn ich habe keine Ahnung, ob es in Lisp sowas wie WAIT (lässt eigene Applikation für eine angegebene Zeit 'stehen', damit muss der Prozessor nicht mehr hin-und-herschalten) oder eventuell ein TIMER-Objekt, das nach angegebener Zeit einen Event auslöst, .... LISP-Wissende kommen da sicher auf intelligente Lösungen.


- alfred -

Theodor Schoenwald
Ehrenmitglied



Sehen Sie sich das Profil von Theodor Schoenwald an!   Senden Sie eine Private Message an Theodor Schoenwald  Schreiben Sie einen Gästebucheintrag für Theodor Schoenwald

Beiträge: 1672
Registriert: 16.04.2002

erstellt am: 09. Jan. 2009 17:47    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für CADchup 10 Unities + Antwort hilfreich

Hallo Alfred,

dass > und >> funktioniert ist mir bekannt, ich habe die Bemerkung zu >> auch nur gemacht, wenn jemand die Bat-Datei als Strickmuster verwenden möchte und die Dummy-Datei danach nicht gelöscht wird, sie - mit den Jahren - immer größer wird.
Wenn die Dummy-Datei danach gelöscht wird (wie in meinem Fall) ist es egal.

Das mit C:\Temp und Support-Ordner habe ich so gelöst:

Da ich nicht vorher wissen kann, ob ein Pfad C:\Temp überhaupt vorhanden ist habe ich folgendes gemacht:
;; -----------------------------------------
(setq TEMP_VERZ (getvar "SAVEFILEPATH"))
(setq DAT_CMD (strcat TEMP_VERZ "\DUMMY.CMD")
      DAT_TMP (strcat TEMP_VERZ "\CheckLoop.txt")
)

;; Hilfs-Stapeldatei erstellen
(setq F_D (open DAT_CMD "w"))
(write-line "@echo off" F_D)
(write-line "PGCPock.EXE" F_D)
(write-line (strcat "echo ExeEnded > " DAT_TMP) F_D)
(close F_D)

(startapp DAT_CMD ) ; Programmaufruf mit Hilfs-Stapeldatei
(setq Z3 0
      Z4 0
  )
(while (not (findfile DAT_TMP))
...
...
...
;; --------------------------------------------------------

Noch einige Bemerkungen dazu,
Warum Dateikennung ".CMD" und nicht ".BAT"?
".CMD" kann ich mit (startapp ... starten.
Für ".BAT" müsste ich (Command "SH" "...) verwenden.

Warum die Stapeldatei in Lisp erstellen?
Damit lese ich "SAVEFILEPATH" aus,
schreibe dort hin meine Stapeldatei und rufe sie von dort wieder auf.

Das Gleiche mache ich mit der "CheckLoop.txt".

Somit spare ich mir jegliche Support-Pfad-Angabe.

Warum "SAVEFILEPATH" und nicht "TEMPPREFIX"?
Es gibt ICAD-Versionen da funktioniert es mit "TEMPPREFIX" nicht.


Durch Deine Antwort habe ich jetzt Alles ausführlich dargestellt.

Der letzte Punkt noch:
Schleife und Rechenleistung?
Das ist wirklich eine ABM-Maßnahme für den PC.
Es gibt in ACAD (Lisp) den Befehl "Pause" Wert.
Die Wertangaben stimmen jedoch nie, so dass z.B. die
Angabe: "Pause" 500, bei jedem PC und CAD-Programm (ACAD oder BricsCad) anders ausfällt.

Trotzdem werde ich auch diese Variante durchspielen und die Zeiten vergleichen. Danach melde ich mich.

Gruß
Theodor


Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Theodor Schoenwald
Ehrenmitglied



Sehen Sie sich das Profil von Theodor Schoenwald an!   Senden Sie eine Private Message an Theodor Schoenwald  Schreiben Sie einen Gästebucheintrag für Theodor Schoenwald

Beiträge: 1672
Registriert: 16.04.2002

erstellt am: 09. Jan. 2009 18:16    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für CADchup 10 Unities + Antwort hilfreich

Hallo Alfred,

auch das habe ich gerade getestet.
Hochzählen (von Z3 und Z4) oder (Command "PAUSE" Wert).

Als Wert habe ich von "PAUSE" 1000 bis 30000, verschiedene Stufen getestet.
Es gab keine Unterschiede bei verschiedenen Pause-Werten und auch nicht zwischen Hochzählen und Pause.

Ich habe mit einer aufwendigen Kontur getestet, es waren immer zwischen 23 und 24 Sekunden.
Der Zeitverbrauch kommt vom rechnen der "PGCPock.EXE".

Auf jeden Fall bin ich froh, dass ich - dank Deinem ersten Vorschlag - nun überhaupt eine Lösung habe die funktioniert.

Gruß
Theodor

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP


Ex-Mitglied

erstellt am: 09. Jan. 2009 18:19    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

Hi Theodor,

hast Du DualCore/xxCore, dann wundert mich das Ergebnis nicht, Du kannst aber auch hier sehen, dass (mit durchgehendem Zählen) die Prozessorauslastung im TaskManager einen (Teil-)Prozessor voll auslastet.

Wie auch immer, wenn die Laufzeiten sowieso nicht im Stundenbereich liegen, wird auch die Testzeit für diese Workarounds nichts (wirtschaftliches) bringen.

- alfred -

Theodor Schoenwald
Ehrenmitglied



Sehen Sie sich das Profil von Theodor Schoenwald an!   Senden Sie eine Private Message an Theodor Schoenwald  Schreiben Sie einen Gästebucheintrag für Theodor Schoenwald

Beiträge: 1672
Registriert: 16.04.2002

erstellt am: 09. Jan. 2009 21:30    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für CADchup 10 Unities + Antwort hilfreich

Hallo Alfred,

ja das stimmt ich habe eine Intel Core 2 Duo CPU.

Ich habe zum testen die While Schleife herausgenommen und gemessen wie lange es dauert bis die Datendatei erstellt ist. Es ist eine Sekunde Unterschied zwischen
While Schleife und keine Aktion.

Dann habe ich meinen 5 Jahre alten PC hochgefahren und mit dem getestet.
Er hat die doppelte Zeit gebraucht.

Aber auch beim alten PC hat der Rechenvorgang der "PGCPock.EXE" die Zeit verbraucht.

Gruß
Theodor

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

autocart
Mitglied
Technischer Redakteur


Sehen Sie sich das Profil von autocart an!   Senden Sie eine Private Message an autocart  Schreiben Sie einen Gästebucheintrag für autocart

Beiträge: 695
Registriert: 08.09.2003

erstellt am: 09. Jan. 2009 23:06    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für CADchup 10 Unities + Antwort hilfreich

@Theodor:

1) Freut mich, dass es mit der Batch-Datei funkt. Ist wahrscheinlich die einfachere Lösung.

2) Nur noch zur Klarstellung: Wie ich beim wiederholten Durchlesen der Beiträge merkte, hast du mein Programm falsch angewendet. Dem Prog darf natürlich NICHT der Dateiname von der Datei übergeben werden, die von deinem Programm erstellt wird. Wenn die Datei nachher 0 Byte hat, zeigt das geradezu, dass mein Prog schon wartet weil es die von deinem Prog gerade erzeugte Datei überschreibt.
Weil du geschrieben hast: 

Zitat:
@Stephan Deine Lösung wartet nicht bis die "PocketOUT.ARF" fertig geschrieben ist. Da müsste vielleicht auch so eine Dummy-Datei, wie die "CheckLoop.txt", erstellt werden.
Genau die wird von meinem Prog erstellt mit dem Dateinamen, der als 2. Parameter übergeben wird. Wenn du da den Namen deiner Daten-Datei übergibst, ist es klar, dass es nicht funzen kann. Da hast du meine Beschreibung von oben falsch verstanden.

Aber, wie schon angedeutet, die Batch-Datei ist die einfachere Lösung, weil sie von der Syntax her einfacher ist und flexibler zu editieren geht und dynamisch aus Lisp heraus erzeugt werden kann (-> man muss die exe-Datei nicht extra liefern und "installieren").

------------------
Gruß, Stephan
www.stbartl.at

[Diese Nachricht wurde von autocart am 09. Jan. 2009 editiert.]

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Theodor Schoenwald
Ehrenmitglied



Sehen Sie sich das Profil von Theodor Schoenwald an!   Senden Sie eine Private Message an Theodor Schoenwald  Schreiben Sie einen Gästebucheintrag für Theodor Schoenwald

Beiträge: 1672
Registriert: 16.04.2002

erstellt am: 09. Jan. 2009 23:52    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für CADchup 10 Unities + Antwort hilfreich

Hallo Stephan,

da ich an diesem Thema gerade dran bin, teste ich Dein Vorschlag auch nochmal.

Wenn zwei unterschiedliche Vorschläge funktionieren ist es mir recht, denn bisher hat alles (ich habe schon viel getestet) nicht oder nicht zufriedenstellend funktioniert.

Gruß
Theodor

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Theodor Schoenwald
Ehrenmitglied



Sehen Sie sich das Profil von Theodor Schoenwald an!   Senden Sie eine Private Message an Theodor Schoenwald  Schreiben Sie einen Gästebucheintrag für Theodor Schoenwald

Beiträge: 1672
Registriert: 16.04.2002

erstellt am: 10. Jan. 2009 20:54    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für CADchup 10 Unities + Antwort hilfreich

Hallo Stephan,

nun ist Dein Vorschlag auch getestet.
Ergebnis: funktioniert einwandfrei und ist ein wenig schneller.
Ein optischer Vorteil: es geht kein DOS-Fenster auf.

Es ist wie so oft, zuerst sucht man lange Zeit eine Lösung und findet keine, dann hat man plötzlich gleich zwei.

Vielen Dank Stephan und Alfred!

Gruß

Theodor Schönwald

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2023 CAD.de | Impressum | Datenschutz