| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
| |
| PNY bietet das umfangreichste Ökosystem von B2B als auch B2C-Lösungen für IT-Akteure auf dem Markt, eine Pressemitteilung
|
Autor
|
Thema: AutoCAD 2008 oder Vista Problem? (1998 mal gelesen)
|
Big Sven Mitglied Techn. Angestellter
Beiträge: 133 Registriert: 14.09.2005
|
erstellt am: 27. Nov. 2007 18:12 <-- editieren / zitieren --> Unities abgeben:
Hallo Forum! Wir haben seit ein paar Tagen Windows Vista Busines 32Bit im Einsatz. Die AutoCAD Version 2008 wurde mit dem Service Pack 1 installiert. Wir hatten vorher AutoCAD 2006 und 2007 auf Windows XP Prof. Rechnern im Einsatz. Jetzt laufen einige Lisp Routinen nicht mehr (brechen mit unterschiedlichen Fehlermeldungen ab). Hat von Euch auch jemand solche Zusammenstellung und ähnliche Erfahrungen gesammelt? Muss ich alle Lisp-Routinen überprüfen, weil es irgendetwas neues in ACAD2008 gibt oder kann es womöglich auch mit Vista zusammenhängen? Vielen Dank für Eure Hilfe Gruß Sven Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
tunnelbauer Ehrenmitglied V.I.P. h.c. Bauingenieur
Beiträge: 7085 Registriert: 13.01.2004 ich hab eh keine Probleme damit...
|
erstellt am: 27. Nov. 2007 18:19 <-- editieren / zitieren --> Unities abgeben: Nur für Big Sven
Simple Antwort: Ja. Warum Ja? Du bringst zuviele Variablen auf einmal ins Spiel... Wir wissen nicht wie dein Code aussieht der abstürzt (nicht mehr läuft). Wir kennen deine unterschiedlichen Fehlermeldungen nicht (meist wären aber genau diese ein guter Ansatz das Problem zu beheben). Somit bleibt eigentlich nur ein Ja über und du musst den Code checken - wir können dir nur helfen wenn uns der Code bekannt ist und/oder die Fehlermeldung - alles andere wäre Hellsehen. ------------------ Grüsse Thomas Korrekturen zum Kochbuch AutoLISP 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: 28. Nov. 2007 08:18 <-- editieren / zitieren --> Unities abgeben: Nur für Big Sven
Hallo, folgende Sachen ab 2008 sind mir aufgefallen: 1. Laden von vlx-Dateien mit integrierter DCL-Datei über die acaddoc.lsp => in ACAD2008 CIVIL und ACAD2008 kann auf die DCL-Inhalte nicht zugegriffen werden, in ACAD2008MAP dagegen schon. Lösung: entweder die vlx-Datei zusätzlich in die Startgruppe der zu ladenden Anwendungen aufnehmen oder die DCL-Datei zusätzlich auf einem Supportpfad bereitstellen. 2. Verwendung der Systemvariablen "OSNAPCOORD" Wenn die Systemvariable auf 2 gestellt ist, dann reagieren ACAD2006 und ACAD2008MAP unterschiedlich. In ACAD2008MAP haben die Objektfänge eine höhere Priorität als die vorgegebenen Werte in Command-Befehlen, in ACAD2006 dagegen nicht. Lösung: "OSNAPCOORD" auf 1 Noch ein weiterer Beitrag zum Thema: http://ww3.cad.de/foren/ubb/Forum145/HTML/002282.shtml#000001 viele Grüße Jörn [Diese Nachricht wurde von joern bosse am 28. Nov. 2007 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Big Sven Mitglied Techn. Angestellter
Beiträge: 133 Registriert: 14.09.2005
|
erstellt am: 28. Nov. 2007 12:13 <-- editieren / zitieren --> Unities abgeben:
Hallo Tunnelbauer, hallo Jörn, ich wollte Euch das ersparen, dass ich alle Listings hier einfüge, die nicht funktionieren! Ich habe noch mal ein wenig geforscht! Es waren zum Teil wieder die üblichen Kleinigkeiten bei einem Programmupdate: z.B. bei dem Befehl Stutzen (_trim) war bis ACAD 2007 die Eingabe des Buchstaben Z für Zaun. Bei ACAD 2008 muss man aber ZA für Zaun eingeben. Das einzige Problem, welches ich nun noch habe, betrifft ActiveX und die Datei "MSADO15.dll". Das scheint anscheinend ein Vista Problem zu sein, da diese Datei vermutlich hierher kommt. Hat jemand hier einen Lösungsvorschlag? Vielen Dank noch einmal! Gruß Sven Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
tunnelbauer Ehrenmitglied V.I.P. h.c. Bauingenieur
Beiträge: 7085 Registriert: 13.01.2004 ich hab eh keine Probleme damit...
|
erstellt am: 28. Nov. 2007 12:18 <-- editieren / zitieren --> Unities abgeben: Nur für Big Sven
Zitat: Original erstellt von Big Sven: ... Das einzige Problem, welches ich nun noch habe, betrifft ActiveX und die Datei "MSADO15.dll". Das scheint anscheinend ein Vista Problem zu sein, da diese Datei vermutlich hierher kommt...
Eine Spur präziser bitte... Wo kommt die Datei her? Aus Vista? Glaub ich nicht... Meiner Meinung nach hast du ein Problem, welches hier unter Methode 2 beschrieben ist... ------------------ Grüsse Thomas Korrekturen zum Kochbuch AutoLISP Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
fuchsi Mitglied Programmierer c#.net Datawarehouse
Beiträge: 1201 Registriert: 14.10.2003 AutoCad Version 2012 deu/enu <P>Windows 7 64bit
|
erstellt am: 28. Nov. 2007 12:58 <-- editieren / zitieren --> Unities abgeben: Nur für Big Sven
Zitat: Original erstellt von Big Sven: Es waren zum Teil wieder die üblichen Kleinigkeiten bei einem Programmupdate: z.B. bei dem Befehl Stutzen (_trim) war bis ACAD 2007 die Eingabe des Buchstaben Z für Zaun. Bei ACAD 2008 muss man aber ZA für Zaun eingeben.
Das ist aber auch ziemlich schlampig programmiert ! Wennst schon _TRIM (englische Befehle) verwendest, solltest die Optionen auch auf englisch umstellen Also nicht Z für ZAUN , sondern _FENCE für Zaun. Wennst dich an sowas hälst laufen Lisp Programme normalerweise problemlos weiter. (ich habe in der 2008er Lispprogramme aus der zeit der 9er Version laufen, und die Funktionieren klaglos) Ich entwickle prinzipiell immer auf einer englischen Version und teste dann auf der deutschen.
------------------ Ing. Anton Fuchs WWW.FFZELL.AT.TC
[Diese Nachricht wurde von fuchsi am 28. Nov. 2007 editiert.] 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: 28. Nov. 2007 13:14 <-- editieren / zitieren --> Unities abgeben: Nur für Big Sven
|
Big Sven Mitglied Techn. Angestellter
Beiträge: 133 Registriert: 14.09.2005
|
erstellt am: 28. Nov. 2007 14:52 <-- editieren / zitieren --> Unities abgeben:
Zitat: Original erstellt von fuchsi: Das ist aber auch ziemlich schlampig programmiert !
Vielen Dank für das Kompliment Fuchsi! Leider bin ich kein Vollblutprogrammierer, sondern nur ein Bastler. Im übrigen habe ich nicht erwähnt, dass ich den englischen Befehl verwendet habe. Aber selbst wenn, dann bist Du ja nicht davor sicher, wenn Autodesk aus "_fe" für _FENCE z.B. "_fc" macht oder? Das war eigentlich mein Problem und nicht die Sprache! Aber zum Glück bekommt man ja auch als Anfänger Hilfe in diesem Forum! @Tunnelbauer Das Problem mit der DLL ist glaube ich folgendes: Mit einem Programm öffne ich eine Access-Datenbank. Dort ist nun folgende Zeile eingetragen: (setq strClsId (vl-registry-read "HKEY_CLASSES_ROOT\\ADODB.Parameter\\CLSID")) (setq strServer (vl-registry-read strcat "HKEY_CLASSES_ROOT\\CLSID\\" strClsId "\\InprocServer32"))) Als Ergebnis bekomme ich: (2 . "%CommonProgramFiles%\\System\\ado\\msado15.dll") zurück. Der richtige Pfad wäre aber: C:\Program Files\Common Files\System\ado. Dort befindet sich die richtige DLL-Datei. Leider verstehe ich die Zeile nicht so ganz, da sie nicht von mir stammt! Wie muss diese richtig heißen? Vielen Dank für die Hilfe! Sven [Diese Nachricht wurde von Big Sven am 28. Nov. 2007 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
tunnelbauer Ehrenmitglied V.I.P. h.c. Bauingenieur
Beiträge: 7085 Registriert: 13.01.2004 ich hab eh keine Probleme damit...
|
erstellt am: 28. Nov. 2007 14:55 <-- editieren / zitieren --> Unities abgeben: Nur für Big Sven
|
fuchsi Mitglied Programmierer c#.net Datawarehouse
Beiträge: 1201 Registriert: 14.10.2003 AutoCad Version 2012 deu/enu <P>Windows 7 64bit
|
erstellt am: 28. Nov. 2007 15:27 <-- editieren / zitieren --> Unities abgeben: Nur für Big Sven
In diesem Fall würde ich so etwas versuchen Damit wird einfach in dem String das %CommonProgramFiles% durch dessen Umgebungsvariablen Inhalt ersetrzt. Hat den Vorteil, dass das wiederum auf einer deutschen und englischen Maschine läuft. (setq str "%CommonProgramFiles%\\System\\ado\\msado15.dll") (setq str (replace str "%CommonProgramFiles%" (getenv "CommonProgramFiles")))
----->"C:\\Programme\\Gemeinsame Dateien\\System\\ado\\msado15.dll" Dazu benötigte Funktion ;------------------------------------------------------------------------------ ; Replace Funktion ersetzten eines Suchstrings durch den ReplaceString ; ;------------------------------------------------------------------------------ ; -> String zu durchsuchender String ; -> Searchstring zu suchender/ersetztender string ; -> ReplaceString string mit dem ersetzt wird ;------------------------------------------------------------------------------ (defun Replace (String SearchString ReplaceString / ) (while (/= String (vl-string-subst ReplaceString SearchString String)) (setq String (vl-string-subst ReplaceString SearchString String)) ) String )
Allerdings wofür bitte benötigt man den Pfad der DLL ?? Machst du einen Import der Typelibrary (vlax-import-type-library ) ?
Würde ich so nicht machen, weil du imer Versionabhängig bist. (Wer sagt dir, dass die ADO15 dll installiert ist, und nicht die ADO16 ADO17 usw.) Zum Abfragen eine Accesatenbank verwende ich DAO, und das instanziere ich so (setq Dao (DaoInit)) (setq db (daoOpenDb dao "d:\\test\\test.mdb")) (setq rs (DaoOpenRecordset db (strcat "SELECT * FROM KUNDEN WHERE NAME = 'HUGO'"))) (while (not (DaoRsEof rs)) (print (DaoRsGetField rs "ADRESSE") (DaoRsMoveNext rs) ) (DaoCloseRecordset rs) (DaoCloseDb db) (vlax-release-object dao)
benötigte Funktionen
; Funktionen zu Zugriff auf Access Tabellen
;------------------------------------------------------------------------------ ; erstellen einer referenz auf dao.dbengine ;------------------------------------------------------------------------------ (defun DaoInit ( / daoobj) (vl-load-com) (if (not (setq daoobj (vlax-get-or-create-object "DAO.DBENGINE.36"))) (if (not (setq daoobj (vlax-get-or-create-object "DAO.DBENGINE.35"))) (progn (alert "Cannot initialize DAO") nil) daoobj ) daoobj ) ) ;------------------------------------------------------------------------------ ; Öffnen einer Access Datenbank ;------------------------------------------------------------------------------ (defun DaoOpenDb ( DaoObj Db / ) (try 'vlax-invoke (list daoobj "OPENDATABASE" db)) ) (defun DaoCloseDb ( Db / ) (try 'vlax-invoke (list db "CLOSE")) (try 'vlax-release-object (list db)) ) ;------------------------------------------------------------------------------ ; Öffnen eines Recordsets ;------------------------------------------------------------------------------ (defun DaoOpenRecordset ( db query / ) (try 'vlax-invoke (list db "OPENRECORDSET" query)) ) (defun DaoCloseRecordset ( rs / ) (try 'vlax-invoke (list rs "CLOSE")) (try 'vlax-release-object (list rs)) ) ;------------------------------------------------------------------------------ ; EndOfFile ;------------------------------------------------------------------------------ (defun DaoRsEof ( rs / ) (if (= (try 'vlax-get-property (list rs "EOF")) :vlax-false) nil t) ) ;------------------------------------------------------------------------------ ; Move Next ;------------------------------------------------------------------------------ (defun DaoRsMoveNext ( rs / ) (try 'vlax-invoke (list rs "MOVENEXT")) ) ;------------------------------------------------------------------------------ ; Recordcount ;------------------------------------------------------------------------------ (defun DaoRsRecordCount (rs / ) (try 'vlax-get-property (list rs "RECORDCOUNT")) ) ;------------------------------------------------------------------------------ ; rs.fields ;------------------------------------------------------------------------------ (defun DaoRsGetField (rs name / fields field value ) (cond ((and (setq fields (try 'vlax-get-property (list rs "FIELDS"))) (setq field (try 'vlax-get-property (list fields "ITEM" name))) ) (setq value (vlax-get-property field "VALUE")) (vlax-release-object fields) (vlax-release-object field) (vlax-variant-value value) ) (t nil) ) ) ;------------------------------------------------------------------------------ ; Testroutine ergibt nil im Fehlerfall ansonst den Rückgabewert der zu ; testenden Funktion ; ist der Rückgabewert der Funktion auch im Erfolgsfall nil ; wird t zurückgegeben ; ; (try '+ (list 1 2 3 4 5 6)) ergibt 21 ; (try '/ (list 5 0)) ergibt nil ;------------------------------------------------------------------------------ (defun Try ( func arg / a1 a2 ) (setq a2 (vl-catch-all-error-p (setq a1 (vl-catch-all-apply func arg)))) (cond (a2 nil) (a1 a1) (t t) ) ) [Diese Nachricht wurde von fuchsi am 28. Nov. 2007 editiert.] [Diese Nachricht wurde von fuchsi am 28. Nov. 2007 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
fuchsi Mitglied Programmierer c#.net Datawarehouse
Beiträge: 1201 Registriert: 14.10.2003 AutoCad Version 2012 deu/enu <P>Windows 7 64bit
|
erstellt am: 28. Nov. 2007 15:29 <-- editieren / zitieren --> Unities abgeben: Nur für Big Sven
Zitat: Original erstellt von Big Sven: Aber selbst wenn, dann bist Du ja nicht davor sicher, wenn Autodesk aus "_fe" für _FENCE z.B. "_fc" macht oder? [Diese Nachricht wurde von Big Sven am 28. Nov. 2007 editiert.][/i]
Nicht _FE sondern _FENCE, Niemals die Shortcuts verwenden !!!!!!
Und wenn du nur für eine deutsche Version proggst "ZAUN" statt "Z" oder "ZA" Shortcuts können sich ändern, die ausgeschriebene Option in den seltensten Fällen !! ------------------ Ing. Anton Fuchs WWW.FFZELL.AT.TC [Diese Nachricht wurde von fuchsi am 28. Nov. 2007 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Big Sven Mitglied Techn. Angestellter
Beiträge: 133 Registriert: 14.09.2005
|
erstellt am: 30. Nov. 2007 09:29 <-- editieren / zitieren --> Unities abgeben:
Hallo Fuchsi! Vielen Dank für Deine Tipps. Allerdings habe ich noch nicht ganz verstanden, wo Du die Access-Applikation öffnest und ob/wie Du einen Import von Typelibrary machst! Oder braucht man gar keine Typelibrary laden um Daten in Access zu schreiben und zu lesen? Gruß Sven Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Big Sven Mitglied Techn. Angestellter
Beiträge: 133 Registriert: 14.09.2005 HP ZBook Intel Core 12.Gen i7 2,3GHz 32GB RAM Windows 11 Pro AutoCAD 2024
|
erstellt am: 03. Dez. 2007 12:06 <-- editieren / zitieren --> Unities abgeben:
Hallo! Leider bin ich mit meinem Problem noch nicht so richtig weiter gekommen. Da in Windows Vista ja nur noch Temporäre Verzeichnisse geführt werden konnte ich dieses schon beheben. Aber ich bekomme immer noch nicht meine Access-Datenbank aus ACAD heraus über ActiveX geöffnet Vielleicht hat jemand noch einen Lösungsvorschlag für mich! (vl-load-com) (setq strFile (findfile (strcat (u_pfad_planung_cad) "Kabelnummer-Datenbank.mdb"))) (if (null adom-Append) (progn (if (and (setq strClsId (vl-registry-read "HKEY_CLASSES_ROOT\\ADODB.Parameter\\CLSID")) (setq strServer (vl-registry-read (strcat "HKEY_CLASSES_ROOT\\CLSID\\" strClsId "\\InprocServer32"))) (if (= (type strServer) 'LIST) (findfile (setq strServer (replace (cdr strServer) "%CommonProgramFiles%" (getenv "CommonProgramFiles")))) (findfile strServer))) (setq bErg (vlax-Import-Type-Library :tlb-filename strServer :methods-prefix "adom-" properties-prefix "adop-" :constants-prefix "adok-")) (alert "ADO ist nicht initialisiert") ); if ); progn (setq bErg T) ) (vlax-get-or-Create-Object "ADODB.Connection") Die Fehlermeldung ist folgende: Zuordnung zu geschütztem Symbol: ADOM-ADDNEW In Unterbrechungsschleife wechseln? Hat jemand einen Tipp für mich, wie ich die Access-Datenbank zum Lesen und Schreiben öffnen kann? Gruß Sven Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
fuchsi Mitglied Programmierer c#.net Datawarehouse
Beiträge: 1201 Registriert: 14.10.2003 AutoCad Version 2012 deu/enu <P>Windows 7 64bit
|
erstellt am: 03. Dez. 2007 14:40 <-- editieren / zitieren --> Unities abgeben: Nur für Big Sven
die Fehlermeldung Zuordnung zu geschütztem Symbol taucht auf, wenn man z.B.: mittels setq einem geschütztem Symbol einen neuen Wert zuweisen möchte. Z.B.: (setq princ nil) würde diese Meldung verursachen. Hier möchtest du dem Lisp-Befehl PRINC (gesch. Symbol) den Wert nil zuweisen, und das mag er absolut nicht. diese Zurodnung kann eigentlich nur hier passieren (setq bErg (vlax-Import-Type-Library :tlb-filename strServer :methods-prefix "adom-" roperties-prefix "adop-" :constants-prefix "adok-") ) Hier würden für alle möglichen methoden des ADO Objektes Funktionen importiert, wobei die Methoden mit dem Präfix "Adom-m" beginnen. Also hier würde ein geschütztes Symbol ADOM-ADDNEW definiertw erden Bei meiner reinen 2008 Autocad Version funktioniert dieser Import taddellos. Das lässt mich vermuten, dass entweder Du bereits eine Funktion ADOM-ADDNEW hast (z.B.: durch eine geladenen ARX-Anwendung einer anderen Applikation) (einfach mal in der Befehlskonsole VOR dem Aufrufen deines Lisps !adom-addnew eingeben) oder du später mittels (defun ADOM-ADDNEW (/) selber eine definierst hast, und dort birnst ihm, weill ja der Import der type Library dieses gesch. Symbol bereits angelegt hat. (also den Lispcode mal nach defun ADOM-ADDNEW absuchen) ------------------ Ing. Anton Fuchs WWW.FFZELL.AT.TC Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |