| |  | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte | | |  | PNY: der unverzichtbare Partner für umfassende KI-Lösungen von Workstations bis zu Edge Computing und KI-Cluster-Bereitstellung, eine Pressemitteilung
|
Autor
|
Thema: Abfrage ob ACAD geladen wurde (1835 mal gelesen)
|
blacky1985 Mitglied Application Engineer
 
 Beiträge: 348 Registriert: 16.04.2008 PSP 2008 SP1 PSP 2009 SP1 PSP 2010 AIP 2008 SP3 AIP 2009 SP2 AIP 2010
|
erstellt am: 14. Sep. 2008 09:57 <-- editieren / zitieren --> Unities abgeben:         
Hallo Jungs, wollte mal bei euch Nachfragen, ob es eine Möglichkeit gibt den Status von ACAD Abzufragen. Ich will ACAD ganz normal über eine VB.NET Anwendung starten, also die "acad.exe". Allerdings sollte man dann ja wohl etwas warten mit dem nächsten Programmaufruf bzw. wenn ich z.B. irgendwelche Aktionen in ACAD ausführen will, bis ACAD auch vollständig geladen ist. Daher meine Frage na der Stelle, gibt es eine Möglichkeit und wenn ja, wie lautet diese, um abzufragen ob ACAD nach dem Aufruf über ein VB.NET Programm vollständig geladen und initialisiert wurde. P:S: Bitte jetzt nicht den Tip geben darauf zu prüfen ob die acad.exe im Taskmanager vorhanden ist Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Ex-Mitglied
|
erstellt am: 14. Sep. 2008 16:51 <-- editieren / zitieren -->
hi, wenn du nicht ueber taskmanager pruefen willst, dann lass uns mal wissen, wie du autocad startest. machst du dies ueber com ueber createobject bzw. ueber getobject, bekommst du das acadobjekt sowieso zurueck. BTW wenn du acad aus einer dotnet-exe startest, dann bekommst du nicht die performance wie eine in autocad geladene dotnet-dll - alfred -
|
Stelli1 Moderator Verm.-Ing.
    
 Beiträge: 1526 Registriert: 17.08.2005 Map 2000-2014, Rasterdesign, MapGuide, Autodesk Topobase, VS6, VS.net 2013
|
erstellt am: 14. Sep. 2008 17:09 <-- editieren / zitieren --> Unities abgeben:          Nur für blacky1985
Hallo, wie findest du den die EXE von AutoCAD ? Du kannst doch die Zeichnung öffnen z.B. mit
Code: System.Diagnostics.Process.Start("Zeichnung")
Prüfen kannst du in einer Schleife mit Getobject(..).Übringes hat Alfred mit der Geschwindigkeit recht. Je nachdem was du machen willst, z.B. Zeichnungselemente erstellen, hast du einen 10-20 -fachen Geschwindigkeitsverlust wenn du AutoCAD von aussen steuerst. Bei 1 ms oder 20 ms ist es egal, aber 1 min oder 20 min machen schon einen Unterschied. Wilfried Stelberg ------------------ Warum lisp'eln wenn's auch anders geht. www.ib-stelberg.de Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
blacky1985 Mitglied Application Engineer
 
 Beiträge: 348 Registriert: 16.04.2008
|
erstellt am: 14. Sep. 2008 18:13 <-- editieren / zitieren --> Unities abgeben:         
Die exe von Autocad findet man ganz klar über die Registry :-), dann kann ich in einer VB.NET Anwendung das Programm ganz ohne Probleme über die acad.exe starten. Natürlich dauert es je nach Rechnerleistung unterschiedlich lang bis ACAD geöffnet ist. Ich will nachdem ACAD also gestartet wurde eine Zeichnung öffnen und diese dann über die VB.NET Anwendung plotten un dann ACAD wieder schließen. Hab glaub ich den Befehl auch gefunden. Ist es richtig das ich über GetAcadState abrufen kann mit dem Wert IsQuiescent, ob ACAD gerade fertig geladen wurde ? Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Stelli1 Moderator Verm.-Ing.
    
 Beiträge: 1526 Registriert: 17.08.2005 Map 2000-2014, Rasterdesign, MapGuide, Autodesk Topobase, VS6, VS.net 2013
|
erstellt am: 14. Sep. 2008 18:22 <-- editieren / zitieren --> Unities abgeben:          Nur für blacky1985
|
Ex-Mitglied
|
erstellt am: 14. Sep. 2008 19:36 <-- editieren / zitieren -->
hi Zitat: Die exe von Autocad findet man ganz klar über die Registry
==>nicht, wenn mehr als eine autocad-version (2004,2005,2006,...) bzw. mehr als ein autocad-produkt (autocad-lt,autocad-map3d,autocad-civil3d,autocad-architecture,...) installiert ist. Zitat: System.Diagnostics.Process.Start("Zeichnung")
auch hier vorsicht, es wird die autocadversion/das autocad-produkt gestartet, das zuletzt als aktiv in der registry abgelegt wurde. d.h. wenn autocad 'von aussen' gestartet wird und dann von aussen gesteuert wird, dann ist nicht gewaehrleistet, dass meine geladenen lib's, egal ob dotnet(assemblys) oder activex(komponenten) koennten dann die falschen sein. also nochmals zurueck zu meiner ersten frage (weil das mal die basis fuer alles andere ist), wie wird autocad von deiner exe gestaret? dann kann ich andere fragen wie 'zustand von aktivitaet von autocad', ... beantworten. - alfred - |
blacky1985 Mitglied Application Engineer
 
 Beiträge: 348 Registriert: 16.04.2008
|
erstellt am: 15. Sep. 2008 07:20 <-- editieren / zitieren --> Unities abgeben:         
Zitat: arbeitest du mit der ActiveX (com)-Schnittstelle ? Da kannst du zwar den Staus abfragen, bekommst aber nur eine Antwort wenn AutoCAD "betriebsbereit" ist.
Das ist mir bewußt, reicht aber vollkommend aus für meinen Zweck, da ich einfach ne while-Schleife einsetze die abgebrochen wird, wenn ACAD betriebsbereit ist, was mir vollkommend wie gesagt ausreicht. Zitat: ==>nicht, wenn mehr als eine autocad-version (2004,2005,2006,...) bzw. mehr als ein autocad-produkt (autocad-lt,autocad-map3d,autocad-civil3d,autocad-architecture,...) installiert ist.
Dies ist mit ebenfalls bewußt, aber da nur ACAD 2008 im Einsatz ist, ist auch dies kein Problem an der Stelle. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |

| |
Ex-Mitglied
|
erstellt am: 15. Sep. 2008 09:10 <-- editieren / zitieren -->
hi wenn du ueber activex gehst und dabei auf sendcommand und auf 'plot im hintergrund' verzichtest, dann brauchst du keine status-ueberpruefung, weil: - beim start ueber CreateObject - bei ausfuehrung von COM-functions/subs dein code erst dann weitergefuehrt wird, wenn autocad die jeweils aktuelle programmzeile ausgefuehrt hat (bzw. autocad geladen ist). wenn du ueberpruefen willst, ob autocad sich aufgehaengt hat, dann geht (in diesem fall) nur ueber einen getrennten, parallelen thread, der ueber prozessueberwachung laeuft und dabei, kombiniert mit einem timer, z.b. speicherveraenderungen protokolliert. - alfred - |
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
 |