| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für SOLIDWORKS |
| |
| Zerspanungstreff mit SolidCAM bei der Hoffmann GmbH in Achim/Bremen, eine Veranstaltung am 14.11.2024
|
Autor
|
Thema: Erkennung von Dateien als SolidWorksfiles (1514 / mal gelesen)
|
ThomasStep Mitglied Softwareentwickler
Beiträge: 10 Registriert: 13.03.2017
|
erstellt am: 13. Mrz. 2017 20:42 <-- editieren / zitieren --> Unities abgeben:
Hallo, ich muss OHNE eine SolidWorks-Installation entscheiden, ob eine Datei ein SolidWorksfile ist oder nicht. Diese Entscheidung soll lediglich durch Scannen der Datei und anhand von String- oder Bytefolgenvergleichen erfolgen, also OHNE ein Makro aufzurufen. Auch habe ich für meine Entscheidung keine Extension (.slprt, .sldasm bzw. .slddrw) zur Verfügung. Bisher konnte ich dies wie folgt machen: Ich suchte in dem jeweiligen file die Bytefolge mit den Oktalwerten: \122\000\157\000\157\000\164\000\040\000\105\000\156\000\164\000\162\000\171. Dahinter verbirgt sich "R o o t E n t r y". Für die Unterscheidung, ob es sich um ein Part, Assembly oder um ein Drawing handelt, suchte ich in der Datei nach den Strings "moPart_c", "moAssembly_c" bzw. "moDrawing_c". Soweit so gut. Dies funktionierte mit Solidworksfiles bis zur Version 2014 (Files der Versionen 2015 und 2016 habe ich noch nicht testen können). Nun habe ich SolidWorksfiles, die mit der Version 2017 erzeugt wurden. Leider fand ich in den SolidWorksfiles dieser Version weder "R o o t E n t r y" noch die Strings "moPart_c", "moAssembly_c" bzw. "moDrawing_c". Weiss jemand Strings oder Bytefolgen in den SolidWorksfiles der Version 2017, welche ich zur sicheren Identifizierung als Solidworksfiles heranziehen kann? Diese Strings/Bytefolgen dürfen auch NICHT in anderen CAD-Daten (CATIA, Pro/E, UG/NX, ...) oder auch in anderen Windows-Dateien (Word, Excel, ..) enthalten sein, sondern sollten exclusiv in Solidworksfiles enthalten sein. Schon mal Danke für Eure Hilfe, Thomas Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Heiko Soehnholz Ehrenmitglied V.I.P. h.c. Dipl.-Ing. (FH) Maschinenbau
Beiträge: 5499 Registriert: 03.07.2002 SOLIDWORKS 2001 - 2024SP3.1 Elite AE Award 2023 SOLIDWORKS Premium, Simu, Flow, Plastics, Composer, MBD, Inspection, PDMP, Visualize, TopsWorks, DPS Tools, JobBox, MacroSheet, etc. Passungstabelle von Heinz WIN10x64 22H2 | HP ZBook 17 Fury G8
|
erstellt am: 13. Mrz. 2017 22:07 <-- editieren / zitieren --> Unities abgeben: Nur für ThomasStep
Zitat: Original erstellt von ThomasStep:
Auch habe ich für meine Entscheidung keine Extension (.slprt, .sldasm bzw. .slddrw) zur Verfügung.
Hallo Thomas, auch wenn ich dir (leider) nicht helfen kann, frage ich mich aber schon, warum man bei einer Datei nicht die Endung verwenden will und darf?! Finde ich komisch... Weil: Dafür sind sie ja da! ------------------ Einen schönen Gruß von Heiko - www.dps-software.de - www.iknow-solidworks.de - Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
ThomasStep Mitglied Softwareentwickler
Beiträge: 10 Registriert: 13.03.2017
|
erstellt am: 13. Mrz. 2017 23:27 <-- editieren / zitieren --> Unities abgeben:
Hallo Heiko, Leider fordert das Tool, welches ich für die CAD-Datenanalyse verwende, die Analyse unabhängig von der Extension. Im Workflow, in welchem dieses Tool, eingesetzt wird, gibt es Situationen, in denen nur die eigentlichen Daten ohne Dateinamen und Extension vorliegen. Nicht schön, aber so ist es leider. Gruß Thomas Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bk.sc Ehrenmitglied V.I.P. h.c. Konstrukteur Sondermaschinenbau
Beiträge: 2795 Registriert: 18.07.2012 -Solid Works 2019 SP5 -Pro Engineer WF 3
|
erstellt am: 14. Mrz. 2017 07:31 <-- editieren / zitieren --> Unities abgeben: Nur für ThomasStep
Hallo Thomas, hast du mal eine SWX 2017 Datei genommen und diese mit 7z entpackt und dir die einzelnen Bestandteile mit dem Editor angeschaut, da könntest du evtl. was im Header finden was dir weiter hilft. Gruß Bernd ------------------ --- Man muß nicht alles wissen, man muß nur wissen wo es steht --- Staatlich anerkannte Deutschniete Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
ThomasStep Mitglied Softwareentwickler
Beiträge: 10 Registriert: 13.03.2017
|
erstellt am: 14. Mrz. 2017 10:01 <-- editieren / zitieren --> Unities abgeben:
Hallo Bernd, für meine Testfiles (.sldprt, .sldasm und .slddrw) bekam ich mit 7z die folgende Fehlermitteilung: "Die Datei XYZ kann nicht als Archive geöffnet werden.". Auch mit unzip.exe (UnZip 5.50 of 17 February 2002, by Info-ZIP.) konnte ich die files nicht öffnen. Viele Grüße Thomas Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
StefanBerlitz Guter-Geist-Moderator IT Admin (CAx)
Beiträge: 8756 Registriert: 02.03.2000 SunZu sagt: Analysiere die Vorteile, die du aus meinem Ratschlag ziehst. Dann gliedere deine Kräfte entsprechend und mache dir außergewöhnliche Taktiken zunutze.
|
erstellt am: 14. Mrz. 2017 10:10 <-- editieren / zitieren --> Unities abgeben: Nur für ThomasStep
Hallo Thomas, mir wäre nicht bekannt, dass es so etwas gibt, weder offiziell supportet (was ja dann sinnvoll wäre) oder auch nur rausgetüftelt. Deine alte Methode dürfte vermutlich seit der 2015 nicht mehr funktionieren, da hat SolidWorks das Dateiformat von Microsofts Compound Files zugunsten eines neuen geändert, was ich aber nicht kenne. Ein gepacktes Format scheint es auch nicht zu sein, zumindest kann mein 7-Zip 16.02 das nicht öffnen und auch die oberflächliche Untersuchung mit einem Hex-Editor scheint mir keine "Mgic Numbers" zu bringen. Wenn daas worklich wichtig ist ohne sich auf die Dateiendung zu verlassen und sicher sein soll würde ich empfehlen in dem Toll den SolidWSorks Document Manager einzubinden und dann per ISwDMApplication2::GetDocument2 für die drei Standardtypen eben versuchen das zu laden und den Rückgabewert von SwDmDocumentOpenError zu untersuchen. Das hat neben der Abhängigkeit von der DLL den zusätzlichen Nachteil, dass das mittlerweile versionsabhängig ist. Eine Registrierung bei SolidWorks ist für den Entwicklerschlüssel notwendig, aber das geht ruckzuck und problemlos. Ciao, Stefan ------------------ Inoffizielle deutsche SolidWorks Hilfeseite http://solidworks.cad.de Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
ThomasStep Mitglied Softwareentwickler
Beiträge: 10 Registriert: 13.03.2017
|
erstellt am: 14. Mrz. 2017 10:23 <-- editieren / zitieren --> Unities abgeben:
Hallo Stefan, "tüfteln" trifft es gut, so hatte ich mich seinerzeit an die SolidWorksfilerekennung gemacht und bin dort auf "R o o t E n t r y" bzw. "moPart_c", "moAssembly_c" und "moDrawing_c" gekommen. Danke für den Hinweis, dass sich das Format geändert hat (Microsofts Compound --> ???). Das gibt mir etwas die Sicherheit, dass ich mit meinen damaligen Erkennungskriterien nicht gänzlich falsch lag. Deinem Vorschlag mit dem Makro kann ich leider nicht nachgehen, weil ich bei der Dateierkennung völlig OHNE SolidWorks (DLLs, ...) auskommen muss. Viele Grüße Thomas Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
StefanBerlitz Guter-Geist-Moderator IT Admin (CAx)
Beiträge: 8756 Registriert: 02.03.2000 SunZu sagt: Analysiere die Vorteile, die du aus meinem Ratschlag ziehst. Dann gliedere deine Kräfte entsprechend und mache dir außergewöhnliche Taktiken zunutze.
|
erstellt am: 14. Mrz. 2017 10:48 <-- editieren / zitieren --> Unities abgeben: Nur für ThomasStep
Hallo Thomas, nur zur Info: die SolidWorks Document Manager API ist frei verfügbar, stammt zwar von SolidWorks, ist aber kostenfrei, darf verteilt werden und bedarf nur eines Entwicklerschlüssels seitens des Programmierers. Du könntest damit z.B. eine kleine EXE schreiben im Stile von IsThisASolidWorksFile.exe , der du dann per Parameter den Pfad zu einer beliebigen Datei übergibst, die Exe versucht das eben per SwDocMgr zu öffnen und gibt einen Return-Code zurück, je nachdem ob ein Fehler passiert ist oder z.B. welcher Dateityp das denn nun wirklich ist. Ciao, Stefan ------------------ Inoffizielle deutsche SolidWorks Hilfeseite http://solidworks.cad.de Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
ckoring Mitglied Ingenieur
Beiträge: 229 Registriert: 09.06.2009 Fujitsu CELSIUS M740 Intel Xeon E5-1620v4 32 GB RAM Nvidia Quadro P4000 Windows 10 Pro SolidWorks 2017 SP4.1 DBWorks R16 SP1.7
|
erstellt am: 15. Mrz. 2017 14:16 <-- editieren / zitieren --> Unities abgeben: Nur für ThomasStep
|
ThomasStep Mitglied Softwareentwickler
Beiträge: 10 Registriert: 13.03.2017
|
erstellt am: 15. Mrz. 2017 14:23 <-- editieren / zitieren --> Unities abgeben:
|
ckoring Mitglied Ingenieur
Beiträge: 229 Registriert: 09.06.2009 Fujitsu CELSIUS M740 Intel Xeon E5-1620v4 32 GB RAM Nvidia Quadro P4000 Windows 10 Pro SolidWorks 2017 SP4.1 DBWorks R16 SP1.7
|
erstellt am: 15. Mrz. 2017 14:39 <-- editieren / zitieren --> Unities abgeben: Nur für ThomasStep
|
ThomasStep Mitglied Softwareentwickler
Beiträge: 10 Registriert: 13.03.2017
|
erstellt am: 15. Mrz. 2017 15:40 <-- editieren / zitieren --> Unities abgeben:
Hallo Christian, kein Problem. Ich habe auch noch einmal intensiv mit einem HexEditor in die files geschaut. Leider ohne Erfolg. Es wird wahrscheinlich darauf hinauslaufen, dass ich mir ein Makro/eine Exe schreibe, so wie es Stefan vorgeschlagen hat. Aber das soll(te) wirklich nur der letzte Ausweg sein, wenn es mir nicht gelänge, die Datei durch Parsen als SolidWorksfile zu identifizieren. Danke an alle, die sich bei der Diskussion beteiligt haben, Thomas Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |