Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Lisp
  Produktinformation einer geladenen DWG bestimmen

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:  Produktinformation einer geladenen DWG bestimmen (1780 mal gelesen)
peterba
Mitglied



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

Beiträge: 14
Registriert: 21.06.2007

AutoCAD/Architecture/MEP 2015, DWG TrueView 2013 und DesignReview 2013 auf Win7 64bit.

erstellt am: 18. Jan. 2016 17:35    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

Hallo allerseits,

ich suche eine Möglichkeit, vorzugsweise mittels LISP, die Produktinformation einer bereits geöffneten DWG zu ermitteln. Es geht mir dabei nicht um die DWG-Version, sondern darum festzustellen, mit welchem (AutoCAD-)Produkt die Datei zuletzt gespeichert wurde. AutoCAD kennt diese Daten anscheinend, denn es meldet sich bereits beim Öffnen einer DWG mit einem Dialog, wenn die DWG nicht mit einem Autodesk-Produkt bzw. nicht als TrustedDWG erstellt wurde.

Wenn man eine DWG als Text mit Notepad öffnet, findet man sogar 2 einigermaßen lesbare Bereiche die jeweils mit "A p p I n f o D a t a L i s t" beginnen. Danach folgen auch Versionsangaben zur letzten verwendeten AutoCAD-Version: i n s t a l l _ i d _ s t r i n g = \ " A C A D - 7 0 0 1 : 4 0 7 \ ". Das Beispiel müsste auf pures AutoCAD 2009 (R17.2 ohne vertikalen Aufsatz) in deutsch verweisen.
Ich bin mir aber nicht sicher, ob mein Rückschluß auf das zuletzt verwendete Produkt an dieser Stelle korrekt ist.
Ich habe auch schon versucht, mittels Lisp und READ-Funktionen eine DWG als Text einzulesen. Leider erfolglos, da das Einlesen der DWG bereits vorher beendet wird, weil offenbar ein binärer Code als ein Datei-Ende Zeichen interpretiert wird.

Folgender Hintergrund (für Neugierige):
Wir arbeiten in der Firma mit ACAD, MEP und Architecture. Nun ist es problematisch, wenn man eine pure AutoCAD-DWG direkt in ARCH bzw. MEP öffnet. Z.Bsp: Unterschiedlich definierte DWGUNITS oder INSUNITS; Fehlende Stildefinitionen; usw.... Diese DWG sollte besser als Block eingefügt oder mittels XREF referenziert werden. Wir möchten unsere Anwender in diesem Fall mit einem Hinweis (ALERT) warnen.

Jeder Hinweis oder Lösungsansatz ist gern gesehen.
Programmierkenntnisse mit LISP sind vorhanden.

Gruß, Peter

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

cadffm
Moderator
良い精神




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

Beiträge: 21533
Registriert: 03.06.2002

Alles

erstellt am: 18. Jan. 2016 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 peterba 10 Unities + Antwort hilfreich

Ok, wir reden also von der Info die von DWGCHECK ausgewertet wird.
Endlich mal ne interessant Frage 

Eine direkt abrufbare Variable(bei geöffneter DWG) kenne ich nicht,
im ganzen Bereich der "direkt" per Lisp zugänglich ist, da wäre mir
sowas ebenfalls nicht bekannt (will aber nichts heißen, ist ja recht speziell die Sache und man kann nicht alles wissen).

(im übrigen hast du mir deinem READ... mehr Infor bekommen wie ich, zumindest finde ich den Beschriebenen Part nicht einfach so - habe aber auch nicht viel Zeit vergeudet, mehr als Texteditor und Bearbeiten/Suchen habe ich nicht genutzt.

1-2 sinnvolle Infos kann ich dennoch geben:

a)
Die Meldung lautet "wurde mit einer Software gespeichert.."
sie lautet NICHT "zuletzt mit einer"
(oder gibt es beide Varianten?)

b) Auf die Meldung/Info kann man sich nicht verlassen
  b1) Ich habe eine Datei zuletzt von Bricscad gespeichert(zu 99%, Ich habe sich nicht selbst gespeichert, daher lasse ich 1% Unsicherheit übrig  )
      Bei der Datei kommt KEINE Meldung [Format DWG2013]

  b2= Speichere ich besagte Datei mit Acad2013 ab (nur öffnen&Speichern-unter, wieder DWG2013) ,
      DANN ERSCHEINT die Meldung!

c) Man kann mit einfachen Mitteln (konverter etcpp) die Info entfernen/ändern (also so dass DWGCHECK nicht anschlägt)


------------------
CAD on demand GmbH - Beratung und Programmierung rund um AutoCAD

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

peterba
Mitglied



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

Beiträge: 14
Registriert: 21.06.2007

AutoCAD/Architecture/MEP 2015, DWG TrueView 2013 und DesignReview 2013 auf Win7 64bit.

erstellt am: 18. Jan. 2016 19: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


DWG-Textabschnitt-AppInfoDataList.png


DWG-ExplorerInfo.png

 
Danke, cadffm für das fixe und doch so abendlich späte feedback! 

DWGCHECK war mir nicht mehr parat, aber diese Variable wertet offenbar die Information aus, die ich gern in selbst verwerten würde.

Die AppInfoDataList findet man beim Öffnen einer DWG mittels Notepad (Format: Zeilenumbruch anhaken).
Da zwischen den einzelnen Buchstaben NULL-zeichen stehen, kann man nicht mit der Textsuche rangehen. Siehe Screenshot DWG-Textabschnitt-AppInfoDataList.png

Zitat:
a)Die Meldung lautet "wurde mit einer Software gespeichert.."
sie lautet NICHT "zuletzt mit einer"
(oder gibt es beide Varianten?)

hab die Meldung aus der Erinnerung geschrieben :(  - Korrektur berechtigt.
Zitat:
b) Auf die Meldung/Info kann man sich nicht verlassen
  b1) Ich habe eine Datei zuletzt von Bricscad gespeichert(zu 99%, Ich habe sich nicht selbst gespeichert, daher lasse ich 1% Unsicherheit übrig  )
      Bei der Datei kommt KEINE Meldung [Format DWG2013]

  b2= Speichere ich besagte Datei mit Acad2013 ab (nur öffnen&Speichern-unter, wieder DWG2013) ,
      DANN ERSCHEINT die Meldung!



Die Meldung von DWGCHECK allein hilft mir auch nur wenig, da ich mindestens eine Unterscheidung brauche, ob die geöffnete Datei von (pur-/Vanilla-)AutoCAD oder einem AutoCAD mit Aufsatz (MEP,Arch,Civil..) gespeichert wurde.
Zitat:
c) Man kann mit einfachen Mitteln (konverter etcpp) die Info entfernen/ändern (also so dass DWGCHECK nicht anschlägt)

Klar können auch anderweitig manipulierte DWG vorkommen. Wäre aber schon zufrieden, wenn der Zeichnungsaustausch innerhalb unserer Firma und mit beauftragten Fremdfirmen unterstützt wird, die alle mit AutoCAD(+Aufsatz) arbeiten.

Kann natürlich sein, daß ich mit dem genannten Textabschnitt auf dem Holzweg bin. 

Nachtrag:
Im zweiten Anhang "DWG-ExplorerInfo.png" sieht man beispielsweise was der Windows-Explorer anzeigt, wenn man die Maus eine Weile über der Datei belässt.

[Diese Nachricht wurde von peterba am 18. Jan. 2016 editiert.]

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

cadffm
Moderator
良い精神




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

Beiträge: 21533
Registriert: 03.06.2002

Alles

erstellt am: 18. Jan. 2016 20: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 Nur für peterba 10 Unities + Antwort hilfreich

"Die Meldung von DWGCHECK allein hilft mir auch nur wenig, da ich mindestens eine Unterscheidung brauche, ob die geöffnete Datei von (pur-/Vanilla-)AutoCAD oder einem AutoCAD mit Aufsatz (MEP,Arch,Civil..) gespeichert wurde."

Damit wollte ich darauf hinweisen das man sich dabei noch nicht mal für "egal welche Version" verlassen kann.

Der von dir genannte Abschnitt wird imho nur von Vertikelprodukten geschrieben (kenne ich durch viele ADT/ACAD Dateien),
in Standard Acad gibt es das SO nicht.

-

Aus der LISP-Ecke wirst du da nicht viele Infos bekommen, wenn dann eher im Bereich c++ .net,
englisch-sprachiger Raum, was Google betrifft.
IMHO würde ich aber direkt bei Dienstleistern anfragen (Programmier-Dienstleister).

(Explorer: DIESE Info ist nur die DWGversion, selbst an die kommt man mit Lisp ja nicht ordentlich ran),
aber immerhin ist bekannt das sie ganz oben steht mit AC1027 usw.

Viel Glück   

------------------
CAD on demand GmbH - Beratung und Programmierung rund um AutoCAD

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

peterba
Mitglied



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

Beiträge: 14
Registriert: 21.06.2007

AutoCAD/Architecture/MEP 2015, DWG TrueView 2013 und DesignReview 2013 auf Win7 64bit.

erstellt am: 19. Jan. 2016 12:10    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

Zitat:
Der von dir genannte Abschnitt wird IMHO nur von Vertikelprodukten geschrieben (kenne ich durch viele ADT/ACAD Dateien),
in Standard Acad gibt es das SO nicht.

Das kann ich nicht bestätigen. Habe eben noch einmal leere DWGs mit/ohne Vorlage in Standard ACAD2015 sowie Achitecture2015 erstellt und alle hatten die Abschnitte mit "A p p I n f o D a t a L i s t" mit folgenden Versionsangaben:
    \ " A C A D - E 0 0 1 : 4 0 7 \ " für ACAD 2015-deutsch
    \ " A C A D - E 0 0 6 : 4 0 7 \ " für MEP 2015-deutsch (Architecture läuft bei uns als "Abfallprodukt" in einer MEP Installation)

Erstmal vielen Dank cadffm, für deine Anregungen!

Hat denn sonst noch jemand hier im Forum eine Idee, wie man an diese Daten ran kommt?
Oder einen Vorschlag, wie man eine Standard-AutoCAD Datei von einer DWG unterscheidet, die von einem vertikalen Produkt erstellt wurde?

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

cadffm
Moderator
良い精神




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

Beiträge: 21533
Registriert: 03.06.2002

Alles

erstellt am: 19. Jan. 2016 12: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 peterba 10 Unities + Antwort hilfreich

oh SORRY, kaum nehme ich heute einen anderen Editor, so sehen es auch meine Äuglein! THX 

------------------
CAD on demand GmbH - Beratung und Programmierung rund um AutoCAD

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: 19. Jan. 2016 20:31    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 peterba 10 Unities + Antwort hilfreich

Hallo peterba,

zum Auslesen der Daten direkt aus der Datei musst du die Datei binär lesen und die Bytes in Strings umwandeln und entsprechend parsen.
Via Lisp sehe ich da keine Möglichkeit.
Ich habe das mal mit c#.Net anprogrammiert und auf mein Temp-Verzeichnis losgelassen. FF das Ergebnis, bei dem man sieht, dass diese Info's auch nicht aus allen Zeichnungen ausgelesen werden konnten. Die Codierung der DWG-Dateien ist folglich verschieden, eine Analyse dessen ist mir so zum Spaß allerdings zuviel.
Wenn du allerdings dein Vorhaben nicht nur mit Lisp-Umsetzen möchtest, sondern ggf. auch mit einer .Net-DLL leben kannst, die dir eine zusätzliche Lisp-Funktion zur Verfügung stellst, dann kannst du dich gerne melden.

Grüße!
Holger

Code:

E:\Temp\#BlocksCloudTEST.dwg: <ProductInformation name =\"AutoCAD\" build_version=\"J.51.0.0(x64)\" registry_version=\"20.0\" install_id_string=\"ACAD-E004:407\" registry_localeID=\"1031\">
E:\Temp\#COD-ChangeConstAttrib.dwg
E:\Temp\#COD-ChangeConstAttrib_02.dwg
E:\Temp\0.dwg: <ProductInformation name =\"AutoCAD\" build_version=\"C.56.0(x64)\" registry_version=\"17.2\" install_id_string=\"ACAD-7004:407\" registry_localeID=\"1031\"/>
E:\Temp\ACADTR_1.dwg:
E:\Temp\ACADTR_Zeichnung1.dwg:
E:\Temp\ACADTR_Zeichnung2.dwg:
E:\Temp\AcMoveAttributes.dwg: <ProductInformation name =\"AutoCAD\" build_version=\"G.114.0.0(x64)\" registry_version=\"19.0\" install_id_string=\"ACAD-B004:407\" registry_localeID=\"1031\"/>
E:\Temp\AttsyncXTest.dwg: <ProductInformation name ="Teigha(R).NET for .dwg files" build_version="0.0" registry_version="3.9" install_id_string="ODA" registry_localeID="1033"/>
E:\Temp\BlockTest.dwg: <ProductInformation name ="Teigha(R).NET for .dwg files" build_version="0.0" registry_version="3.9" install_id_string="ODA" registry_localeID="1033"/>
E:\Temp\BOD_Test.dwg
E:\Temp\ByBlock2ByLayer.dwg: <ProductInformation name =\"AutoCAD\" build_version=\"J.51.0.0(x64)\" registry_version=\"20.0\" install_id_string=\"ACAD-E001:409\" registry_localeID=\"1033\">
E:\Temp\Drawing_100.dwg: <ProductInformation name =\"AutoCAD\" build_version=\"J.51.0.0(x64)\" registry_version=\"20.0\" install_id_string=\"ACAD-E001:409\" registry_localeID=\"1033\">
E:\Temp\DWGPROPS.dwg:
E:\Temp\DynBlockTest.dwg: <ProductInformation name =\"AutoCAD\" build_version=\"I.108.0.0(x64)\" registry_version=\"19.1\" install_id_string=\"ACAD-D001:407\" registry_localeID=\"1031\"/>
E:\Temp\DynBlockTest_Listing.dwg: <ProductInformation name =\"AutoCAD\" build_version=\"J.51.0.0(x64)\" registry_version=\"20.0\" install_id_string=\"ACAD-E001:409\" registry_localeID=\"1033\">
E:\Temp\Höhenkoten.dwg: <ProductInformation name =\"AutoCAD\" build_version=\"I.18.0.0(x64)\" registry_version=\"19.1\" install_id_string=\"ACAD-D001:407\" registry_localeID=\"1031\"/>
E:\Temp\ImageRefTest.dwg: <ProductInformation name =\"AutoCAD\" build_version=\"I.18.0.0(x64)\" registry_version=\"19.1\" install_id_string=\"ACAD-D001:407\" registry_localeID=\"1031\"/>
E:\Temp\ImageRefTest_2010.dwg
E:\Temp\ImageRefTest_Binded.dwg: <ProductInformation name =\"AutoCAD\" build_version=\"I.18.0.0(x64)\" registry_version=\"19.1\" install_id_string=\"ACAD-D004:407\" registry_localeID=\"1031\"/>
E:\Temp\ImageRefTest_NoBinded.dwg: <ProductInformation name =\"AutoCAD\" build_version=\"I.18.0.0(x64)\" registry_version=\"19.1\" install_id_string=\"ACAD-D004:407\" registry_localeID=\"1031\"/>
E:\Temp\LayerFilterBrics.dwg: <ProductInformation name ="Teigha(R).NET for .dwg files" build_version="0.0" registry_version="3.9" install_id_string="ODA" registry_localeID="1033"/>
E:\Temp\LOCKED.dwg: <ProductInformation name =\"AutoCAD\" build_version=\"G.114.0.0(x64)\" registry_version=\"19.0\" install_id_string=\"ACAD-B004:407\" registry_localeID=\"1031\"/>
E:\Temp\Nest-01.dwg:
E:\Temp\neuer block.dwg:
E:\Temp\pxStbCutTest.dwg: <ProductInformation name =\"AutoCAD\" build_version=\"J.51.0.0(x64)\" registry_version=\"20.0\" install_id_string=\"ACAD-E001:409\" registry_localeID=\"1033\">
E:\Temp\RBLK.dwg: <ProductInformation name =\"AutoCAD\" build_version=\"I.18.0.0(x64)\" registry_version=\"19.1\" install_id_string=\"ACAD-D001:407\" registry_localeID=\"1031\"/>
E:\Temp\ReaTest.dwg
E:\Temp\RelinkXRefTest_LISP.dwg: <ProductInformation name =\"AutoCAD\" build_version=\"I.108.0.0(x64)\" registry_version=\"19.1\" install_id_string=\"ACAD-D004:407\" registry_localeID=\"1031\"/>
E:\Temp\result.dwg: <ProductInformation name =\"AutoCAD\" build_version=\"I.108.0.0(x64)\" registry_version=\"19.1\" install_id_string=\"ACAD-D001:407\" registry_localeID=\"1031\"/>
E:\Temp\Sample.dwg: <ProductInformation name =\"AutoCAD\" build_version=\"J.210.0.0(x64)\" registry_version=\"20.0\" install_id_string=\"ACAD-E004:407\" registry_localeID=\"1031\">
E:\Temp\Sample2.dwg: <ProductInformation name =\"AutoCAD\" build_version=\"J.210.0.0(x64)\" registry_version=\"20.0\" install_id_string=\"ACAD-E006:407\" registry_localeID=\"1031\">
E:\Temp\Schacht Rohr.dwg:
E:\Temp\Schema_Test.dwg: <ProductInformation name =\"AutoCAD\" build_version=\"J.51.0.0(x64)\" registry_version=\"20.0\" install_id_string=\"ACAD-E001:409\" registry_localeID=\"1033\">
E:\Temp\Scurve.dwg: <ProductInformation name =\"AutoCAD\" build_version=\"I.108.0.0(x64)\" registry_version=\"19.1\" install_id_string=\"ACAD-D004:407\" registry_localeID=\"1031\"/>
E:\Temp\T-Stück DS.dwg:
E:\Temp\Tabelle.dwg: <ProductInformation name =\"AutoCAD\" build_version=\"J.51.0.0(x64)\" registry_version=\"20.0\" install_id_string=\"ACAD-E004:407\" registry_localeID=\"1031\">
E:\Temp\TEST.dwg: <ProductInformation name =\"AutoCAD\" build_version=\"I.108.0.0(x64)\" registry_version=\"19.1\" install_id_string=\"ACAD-D001:407\" registry_localeID=\"1031\"/>
E:\Temp\Testttt.dwg: <ProductInformation name =\"AutoCAD\" build_version=\"J.51.0.0(x64)\" registry_version=\"20.0\" install_id_string=\"ACAD-E004:407\" registry_localeID=\"1031\">
E:\Temp\Test_Version.dwg: <ProductInformation name =\"AutoCAD\" build_version=\"M.49.0.0(x64)\" registry_version=\"20.1\" install_id_string=\"ACAD-F004:407\" registry_localeID=\"1031\">
E:\Temp\TreppeTest.dwg: <ProductInformation name =\"AutoCAD\" build_version=\"J.51.0.0(x64)\" registry_version=\"20.0\" install_id_string=\"ACAD-E001:409\" registry_localeID=\"1033\">
E:\Temp\UcsTransTest.dwg: <ProductInformation name =\"AutoCAD\" build_version=\"M.49.0.0(x64)\" registry_version=\"20.1\" install_id_string=\"ACAD-F004:407\" registry_localeID=\"1031\">
E:\Temp\UcsTransTestRotation.dwg: <ProductInformation name =\"AutoCAD\" build_version=\"M.49.0.0(x64)\" registry_version=\"20.1\" install_id_string=\"ACAD-F004:407\" registry_localeID=\"1031\">
E:\Temp\XRef_Master.dwg: <ProductInformation name =\"AutoCAD\" build_version=\"I.18.0.0(x64)\" registry_version=\"19.1\" install_id_string=\"ACAD-D004:407\" registry_localeID=\"1031\"/>
E:\Temp\XRef_Referenz.dwg: <ProductInformation name =\"AutoCAD\" build_version=\"D.49.0.0\" registry_version=\"18.0\" install_id_string=\"ACAD-8004:407\" registry_localeID=\"1031\"/>
E:\Temp\Zeichnung1.dwg: <ProductInformation name ="Teigha(R).NET for .dwg files" build_version="0.0" registry_version="4.0" install_id_string="ODA" registry_localeID="1033"/>
E:\Temp\Zeichnung2.dwg: <ProductInformation name =\"AutoCAD\" build_version=\"J.51.0.0(x64)\" registry_version=\"20.0\" install_id_string=\"ACAD-E004:407\" registry_localeID=\"1031\">
E:\Temp\Zeichnung_GEAB.dwg: <ProductInformation name =\"AutoCAD\" build_version=\"I.18.0.0(x64)\" registry_version=\"19.1\" install_id_string=\"ACAD-D004:407\" registry_localeID=\"1031\"/>
E:\Temp\ZwCAD_Zeichnung1.dwg
E:\Temp\ZweiteZeichnung.dwg: <ProductInformation name =\"AutoCAD\" build_version=\"G.55.0.0(x64)\" registry_version=\"19.0\" install_id_string=\"ACAD-B016:407\" registry_localeID=\"1031\"/>


------------------
Holger Brischke
CAD on demand GmbH
Individuelle Lösungen von Heute auf Morgen.


defun-tools Das Download-Portal für AutoCAD-Zusatzprogramme!


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

peterba
Mitglied



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

Beiträge: 14
Registriert: 21.06.2007

AutoCAD/Architecture/MEP 2015, DWG TrueView 2013 und DesignReview 2013 auf Win7 64bit.

erstellt am: 20. Jan. 2016 13:57    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

Hallo Holger,

wow, das sieht schon ziemlich gut aus!
Besonders der nach "install_id_string" angegebene Wert interessiert mich.
Ich habe mich mittlerweile auf VBScript eingelassen und bin aber noch nicht ganz so weit mit meiner Programmierung. Wenn das funktionieren würde, wollte ich den VBScript in VLisp via ActiveX nachvollziehen.
Da gefällt mir dein Lösungsansatz schon besser. Natürlich ist dein Ansatz mit einer .NET-DLL immer besser als gar keine Lösung. Leider ist mir die .Net-Programmierung zu kompliziert - nur deshalb die Vorbehalte. 

Noch eine Frage: Ich brauche diesen id-String unmittelbar NACH dem Öffnen einer DWG in AutoCAD. Das bedeutet, die DWG kann nur noch "lesend" (also ohne schreibzugriff) ausgewertet werden.
Würde das mit deinem .NET Ansatz funktionieren?

Gruß, Peter

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: 20. Jan. 2016 15: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 peterba 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von peterba:
...Noch eine Frage: Ich brauche diesen id-String unmittelbar NACH dem Öffnen einer DWG in AutoCAD. Das bedeutet, die DWG kann nur noch "lesend" (also ohne schreibzugriff) ausgewertet werden.
Würde das mit deinem .NET Ansatz funktionieren? ...

Ja, Für die Auswertung ist ein Schreibzugriff nicht notwendig - im Zweifel kann man die Datei im Hintergrund temporär kopieren und dann zum Lesen öffnen.

Grüße!
Holger

------------------
Holger Brischke
CAD on demand GmbH
Individuelle Lösungen von Heute auf Morgen.


defun-tools Das Download-Portal für AutoCAD-Zusatzprogramme!


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

peterba
Mitglied



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

Beiträge: 14
Registriert: 21.06.2007

AutoCAD/Architecture/MEP 2015, DWG TrueView 2013 und DesignReview 2013 auf Win7 64bit.

erstellt am: 20. Jan. 2016 15: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

Also, wenn du den lesenden Zugriff für die aktuelle DWG hinbekommst, wäre das optimal. Beim Erstellen einer temporären Kopie der DWG würde sich je nach Größe, die Ladezeit bestimmt merklich verlängern. Denn ich würde die Auswertung gern unmittelbar beim Öffnen einer Zeichnung (als Ergänzung zur ACADDoc.lsp) einsetzen.

Wenn ich noch einen Wunsch äussern darf, ohne vorlaut zu gelten?:
Die Rückgabe der von deinem Programm ermittelten Informationen als Zuweisungs-Liste, die man in Lisp mittels "Assoc" auswerten könnte, wäre eine perfekte Lösung.
Rückgabe Beispiel:

Code:
(('name "AutoCAD")...('install_id_string "ACAD-7004:407"))

und NIL eben dann, wenn die ProductInfo nicht existiert.

Gruß,
Peter

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: 20. Jan. 2016 16:50    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 peterba 10 Unities + Antwort hilfreich

... kann man alles machen .. allerdings übersteigt das den Rahmen der Hilfe, die ich im Rahmen dieses Forums zu geben bereit bin. Schick mir eine Mail oder ruf mich am besten mal an.

Grüße!
Holger

------------------
Holger Brischke
CAD on demand GmbH
Individuelle Lösungen von Heute auf Morgen.


defun-tools Das Download-Portal für AutoCAD-Zusatzprogramme!


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

CADwiesel
Moderator
CAD4FM UG




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

Beiträge: 1968
Registriert: 05.09.2000

AutoCAD, Bricscad
Wir machen das Mögliche unmöglich

erstellt am: 20. Jan. 2016 18: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 peterba 10 Unities + Antwort hilfreich

Die Informationen können auch mit VLisp ausgelesen werden. Du kannst die Informationen entweder als String oder binär lesen. Die Einfachheit wird allerdings dadurch erschwert, das die Zeichen nicht als Asciizeichen z.B. P sondern als Zeichen \000P vorliegt.
Du musst also für jedes Zeichen (Productcode) die \000 entfernen.

------------------
Gruß
CADwiesel
Besucht uns im CHAT

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

CADwiesel
Moderator
CAD4FM UG




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

Beiträge: 1968
Registriert: 05.09.2000

AutoCAD, Bricscad
Wir machen das Mögliche unmöglich

erstellt am: 21. Jan. 2016 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 Nur für peterba 10 Unities + Antwort hilfreich

Eigentlich macht es ja gar keinen Sinn in dem von dir beschriebenen Fall die DWG erst zu öffnen und dann deren Inhalt auszuwerten.
Du solltes dir vielmehr einen eigenen OPEN Dialog basteln, oder einen Reactor verwenden, der auf den OPEN Befehl reagiert und dann erstmal die ausgewählte Datei verwurstet und ggf dann die Datei in eine Leere einfügt oder einen Hinweis ausgibt, oder sonstiges...

------------------
Gruß
CADwiesel
Besucht uns im CHAT

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

peterba
Mitglied



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

Beiträge: 14
Registriert: 21.06.2007

AutoCAD/Architecture/MEP 2015, DWG TrueView 2013 und DesignReview 2013 auf Win7 64bit.

erstellt am: 21. Jan. 2016 12:34    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

Zitat:
Original erstellt von CADwiesel:
Die Informationen können auch mit VLisp ausgelesen werden. Du kannst die Informationen entweder als String oder binär lesen. Die Einfachheit wird allerdings dadurch erschwert, das die Zeichen nicht als Asciizeichen z.B. P sondern als Zeichen \000P vorliegt.
Du musst also für jedes Zeichen (Productcode) die \000 entfernen.

Hallo CADwiesel,
ich habe versucht diese Daten in VLisp mit READ-CHAR/READ-LINE zu lesen, allerdings bricht das Einlesen schon vorher ab, da irgendwelche Binärdaten dem Lisp ein Dateiende vorgaukeln. Ist dir das besser gelungen?
Dieses \000 steht in dem betreffenden Abschnitt vor jedem ASCII-Zeichen, weil die Daten offenbar als 16bit/2Byte codiert hinterlegt sind. Nicht schön, kann ich aber selbst rausfiltern.
Zitat:
Eigentlich macht es ja gar keinen Sinn in dem von dir beschriebenen Fall die DWG erst zu öffnen und dann deren Inhalt auszuwerten.
Du solltes dir vielmehr einen eigenen OPEN Dialog basteln, oder einen Reactor verwenden, der auf den OPEN Befehl reagiert und dann erstmal die ausgewählte Datei verwurstet und ggf dann die Datei in eine Leere einfügt oder einen Hinweis ausgibt, oder sonstiges...

Vom Öffnen komme ich nicht weg, weil man einer DWG vorher noch nicht ansieht, ob sie nur eine Standard-DWG ist oder mehr enthält, weil Sie von einem vertikalen Produkt erstellt wurde. Die Verwendung eines Reaktors verlegt die Auswertung nur vor das Öffnen, was evtl. die Problematik des doppelten Zugriffs auf eine DWG entschärft. Letzlich soll beim Öffnen einer Standard-DWG nur ein Warnung kommen, es aber nicht verhindert werden.
Gruß, Peter

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

CADwiesel
Moderator
CAD4FM UG




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

Beiträge: 1968
Registriert: 05.09.2000

AutoCAD, Bricscad
Wir machen das Mögliche unmöglich

erstellt am: 21. Jan. 2016 16:33    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 peterba 10 Unities + Antwort hilfreich

Zum Einlesen habe ich den Umweg über ADODB Object gemacht und binär eingelesen. Dann löschst du die Nullen raus und wandelst den Binärcode in String um, den du dann nach deiner Information durchsuchen kannst. Das alles passier so schnell, das es gut vor tatsächlichem Öffnen der Datei passieren kann und du damit eine entsprechende Aktion, wie schon geschrieben, treffen kannst.
Es macht nicht wirklich Sinn, die Datei erst in einem CAD zu öffnen und sie dann zu analysieren. Auch wenn ich gerne mal code kostenlos raushaue, bin ich aber doch der Meinung, das dies erstens recht hochwertiges Wissen ist, aber auch die Forenilfe zur Selbsthilfe übersteigt.
Ich stimme da eher Holger zu.

------------------
Gruß
CADwiesel
Besucht uns im CHAT

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

peterba
Mitglied



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

Beiträge: 14
Registriert: 21.06.2007

AutoCAD/Architecture/MEP 2015, DWG TrueView 2013 und DesignReview 2013 auf Win7 64bit.

erstellt am: 22. Jan. 2016 15:58    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

Du meinst mit dem Einlesen über ADODB wahrscheinlich nicht die Verwendung des ActiveX Interface-Objekts "ObjectDBX"?

Ist mir schon klar, daß die betreffende Programmierung - egal mit welcher Methode - kein Pappenstiel ist. Meine erste Hoffnung war ja, daß es schon einen Weg zum Feststellen der Productinfo gibt, der mir nicht bekannt ist.
Trotzdem danke ich allen für die konstruktiven Vorschläge!

Mittlerweile habe ich selbst schon recht gute Fortschritte gemacht. Ich bleibe in VLISP und benutze das "FileSystemObject" des Windows-Scripting-Host als InterfaceObject. Die frei verfügbare Vorlage kommt aus WSH.LSP Copyright 1999 Tony Tanzillo. Mit dem "FileSystemObject" kann man jede binäre - also auch DWG - einlesen. Die ganze Programmierung bleibt aber auf bekanntem Lisp-Terrain.

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

VMichl
Mitglied



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

Beiträge: 211
Registriert: 04.01.2001

erstellt am: 22. Jan. 2016 18:25    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 peterba 10 Unities + Antwort hilfreich

peterba
Mitglied



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

Beiträge: 14
Registriert: 21.06.2007

AutoCAD/Architecture/MEP 2015, DWG TrueView 2013 und DesignReview 2013 auf Win7 64bit.

erstellt am: 25. Jan. 2016 11: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

Danke, das ist laut Beschreibung genau, was ich suche!
Download aber momentan nicht möglich.

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

VMichl
Mitglied



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

Beiträge: 211
Registriert: 04.01.2001

erstellt am: 26. Jan. 2016 22:22    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 peterba 10 Unities + Antwort hilfreich

Es ist möglich aber nur nach einen Login. DWGintVer ist kostenlos nur für unsere Kunden. (mehr ausserhalb Forum)

V.Michl

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