| |
| Webinar für CAD-Konstrukteure im Metallbau: Industrietreppen, Balkone, Geländer in einer nahtlosen 2D- und 3D-CAD-Umgebung |
Autor(20117)
|
Thema: dxf und prt per Button gleichzeitig Speichern (3596 mal gelesen)
|
LaserCAD Mitglied
Beiträge: 12 Registriert: 05.03.2011 MegaCAD2013
|
erstellt am: 05. Mrz. 2011 00:17 <-- editieren / zitieren --> Unities abgeben:
Hallo, Ich bin neu hier und hoffe, dass ich hier Hilfe bekomme. Ich versuche schon seit 2 Tagen ein vermutlich einfaches Problem zu lösen. In MegaCAd 2011 möchte ich einen Button habe, mit welchem ich die Zeichnung in ein definiertes Verzeichnis als Prt und gleichzeitig als DXF speichern kann. Die Informationen über den Speicherort sollten wenn möglichst aus einer .ini Datei kommen. Es handelt sich also um einen erweiterten "Speichern unter" (bei erstmaliger speicherung) bzw. einen erweiterter "Speichern" Befehl. Ich habe versucht das irgendwie mit einer dll und C hinzubekommen. Bin aber nicht wirklich weiter gekommen. Man muss dazu sagen, dass ich in C allerdings auch nicht so bewandert bin. Falls es jemanden gibt, der mir ein wenig unter die Arme greifen kann wäre ich dankbar. Sourcecode wäre natürlich super...will ja schließlich was dazu lernen :-) Dankeschön
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Ex-Mitglied
|
erstellt am: 05. Mrz. 2011 08:43
Hallo LaserCAD, und willkommen im MegaCAD-Forum. Also - in der 2010 / und in der 2011-Classik-Oberfläche (nicht die Fluent - da hab ich es noch nicht gefunden) gibt es eine Möglichkeit, PRT's oder MAC's in DXF's oder DWG's zu Konvertieren...und umgekehrt...Verzeichnisweise...automatisch...mit Dateinamen-Übergabe...in die entspr. Verzeichnisse, die dann frei wählbar sind...etc. ...schau dir das mal an, ob dir damit etwas geholfen ist. Es ist denke ich nicht die Lösung, die dir vorschwebt - aber es wäre ein Ansatz... @Fluent-Fans... ...wo finde ich das Batch-Konvertieren in der Fluent-Umgebung? HTH,
|
LaserCAD Mitglied
Beiträge: 12 Registriert: 05.03.2011 MegaCAD2013
|
erstellt am: 05. Mrz. 2011 10:04 <-- editieren / zitieren --> Unities abgeben:
Vielen Dank für die Antwort. Bringt mich jedoch leider nicht weiter. In der Dokumentation zum Konverter steht folgendes: Zitat: /SaveAs wenn Sie eine Datei aus MegaCAD heraus immer mit einem festen Ausgabepfad und Namen exportieren wollen, so setzen Sie diesen Parameter ein dwgdxf.dll /SaveAs „c:\EXPORT\megacad.dxf“
Wie kann ich dies nun in eine in C geschriebene DLL einbauen, welche ich dann per Button in MegaCAD ausführe? In der DLL soll dann auch gleichzeitig der Befehl für das sSeichern der .prt enthalten sein
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
MySolutions Mitglied
Beiträge: 56 Registriert: 21.12.2005 Wir bieten zahlreiche Hard-/Software und PlugIn Lösungen für die Bereiche CAD, CAM, ERP, ECM, MDC, DNC, PTM, SFDC, MES, EAI/BI, PDM, FAM, CRM uvm. Nähere Informationen finden Sie auf unserer Homepage!
|
erstellt am: 05. Mrz. 2011 10:58 <-- editieren / zitieren --> Unities abgeben: Nur für LaserCAD
Hallo LaserCAD Zitat: Original erstellt von LaserCAD: Wie kann ich dies nun in eine in C geschriebene DLL einbauen, welche ich dann per Button in MegaCAD ausführe? In der DLL soll dann auch gleichzeitig der Befehl für das sSeichern der .prt enthalten sein
Also ich würde dir in diesem Fall den Einsatz einer MBT (MegaCAD Batch Datei) empfehlen, dort kannst du den Befehl "dwgdxf.dll /SaveAs „c:\EXPORT\megacad.dxf“ wie aus der Hilfe verwenden. Weitere Informationen zum Erstellen und Verwenden von MBT-Dateien solltest du ebenfalls in der Hilfedatei finden. Gruss MySolutions Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Judgeman Mitglied Minijober i.R.
Beiträge: 328 Registriert: 20.12.2006 Win10prof,AMD Phenom(tm) II X4 945 Processor, 3000 MHz,16GB RAM NVIDIA GeForce 9800 GT MegaCAD 2021 64bit
|
erstellt am: 06. Mrz. 2011 12:23 <-- editieren / zitieren --> Unities abgeben: Nur für LaserCAD
|
Ex-Mitglied
|
erstellt am: 06. Mrz. 2011 14:21
Hallo Judgeman, diese "Schaltfläche" gibt es bei mir nicht Bei mir hört die Liste nach dem "Zeichnung per Email versenden" auf... Kann man da eine andere Umgebung laden? |
MABI Ehrenmitglied Leuchtenbauer
Beiträge: 1978 Registriert: 18.12.2003 MegaCAD unfold 2021-Metall 3D (64) noch verfügbar mit Verzögerung unfold 2012-2015 (32) unfold 2016-19 (64) Adobe Acrobat-3D
|
erstellt am: 07. Mrz. 2011 08:59 <-- editieren / zitieren --> Unities abgeben: Nur für LaserCAD
Guten Morgen NN, eine interessante Sache. Wer also nicht mit der ProfiPlus arbeitet, hat in der Fluentoberfläche dies Funktion nicht verfügbar. Aber, wenn er auf Klassik umstellt dann schon. Sollte es nicht umgekehrt sein? In der Klassik sind nicht alle Funktionen enthalten. Da kann ich mich nur wundern. ------------------ Gruß Matthias bald bin ich groß Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Ex-Mitglied
|
erstellt am: 07. Mrz. 2011 09:03
Guten Morgen Mabi, ich hatte oben ein Edit eingefügt Bei mir war es so, dass ich in der 2011 (Classic oder Fluent) keinerlei "Umgebungen" geladen bzw. gespeichert hatte - und da war die Möglichkeit zum "Batch Ex- und Import" nicht angezeigt. Als ich dann in der Fluent die Umgebung "MegaCAD 2011 ProfiPlus" neu geladen habe - war dann der enstpr. Eintrag da. Aber ich gebe dir schon recht (z.B. zum Thema Bemaßungen) - ich komme mit der Fluent auch noch so gar nicht gut zurecht... |
Judgeman Mitglied Minijober i.R.
Beiträge: 328 Registriert: 20.12.2006 Win10prof,AMD Phenom(tm) II X4 945 Processor, 3000 MHz,16GB RAM NVIDIA GeForce 9800 GT MegaCAD 2021 64bit
|
erstellt am: 07. Mrz. 2011 10:13 <-- editieren / zitieren --> Unities abgeben: Nur für LaserCAD
Hallo MABI Ich hab gar keine ProfiPlus! Allerdings habe ich gerade festgestellt, daß es, je nach geladener Umgebung - den Button "DXF/DWG Batch Import/Export" gibt und den Button "Batch Import/Export" Im Button "Batch Import/Export" ist der andere mit drinn. Und wie gesagt: Die ProfiPlus-Umgebung habe ich nicht geladen. -------------------- Grüße Andreas Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
MABI Ehrenmitglied Leuchtenbauer
Beiträge: 1978 Registriert: 18.12.2003
|
erstellt am: 07. Mrz. 2011 13:51 <-- editieren / zitieren --> Unities abgeben: Nur für LaserCAD
Hallo Andreas, Hallo Thomas, jetzt habe auch ich es kappiert. Wenn man das Programm installiert ist eine 0-Umgebung geladen. Diese enthält den Batch konverter nicht. Wenn man aber dann eine Umgebung aus der Auswahl lädt, ist der Konverter enthalten. Mein Pech nur, dass ich mir die 0-Umgebung für mich schon ohne Batch Konverter angepasst habe. Nun mach ich das nochmal. Danke für Euere Hilfe. ------------------ Gruß Matthias bald bin ich groß Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
LaserCAD Mitglied
Beiträge: 12 Registriert: 05.03.2011 MegaCAD2013
|
erstellt am: 10. Mrz. 2011 22:47 <-- editieren / zitieren --> Unities abgeben:
Ich weiß nicht ob ich so etwas auch mit der MegaCADBatch Datei lösen kann. Ich habe es jetzt in C++ einigermaßen am laufen. Es wird ein Dialogfenster geöffnet in den der Dateiname eingegeben wird und anschließend wird die PRT und die DXF gespeichert. Der Code ist unten aufgeführt. Wenn ich die dll in MegaCAD mit Menüeintrag <Service> <DLL aufrufen> öffne, klappt alles. Ich habe mit der Menübelegung eine Schaltfläche erzeugt, die die Funktion dll-Starten ausführt. Wenn ich die Schaltfläche drücke funktioniert nur noch das Eingeben des Artikelnamens und das Speichern der PRT. Das speichern der DXF funktioniert nicht. ??? Ich denke das liegt daran, dass ich die Funktion "LoadDLL" eigentlich nicht mehr benützen darf. In der Hilfe des C-Interfaces kommt bei der Beschreibung des MegaCMD-Befehls folgender Hinweis: Zitat: Entsprechend ist in einem DLL-Programm der Befehl CallDll nicht zulässig.
Wie kann ich nun dwgdxf.dll SaveAs ausführen damit es funktioniert? Code: #include "std.h" #include "megatyp.h" #include "megacad.h"/******************************************************************************/ extern "C" short MegaMain(char *file, char *args) { char pfad[355]; char artnr[255]; char endung[355]; //Speicherpfad setzen: strcpy_s(pfad,"c:\\test\\"); //endung: strcpy_s(endung,".PRT"); //artnr vorbelegen: strcpy_s(artnr,"Artikelnummer"); short input; input = StringInput("Artikelnummer eingeben",artnr,255);
if (input==TRUE) { //8Stellige Eingabe übernehmen strncat (pfad,artnr, 8); //endung anhägnen strncat (pfad,endung,4); } else { Message("Keine Speicherung",NULL,NULL,NULL,"ok",3); exit; } Message("Ihr Speicherpfad ist",pfad,NULL,NULL,"ok",3); //speichert prt. in pfad SaveCurrentFile( // save current file to disk pfad, // filename (may be NULL) 0L); // (flags&1) => extract whole file // speichern über function ini MegaCMD("PrtSave"); MegaCMD("LoadDll C:\\ProgramData\\MegaCAD_3D_2010\\Convert\\dwgdxf.dll /SaveAs \"c:\\test\\*.dxf\"");
return(0); }
[Diese Nachricht wurde von LaserCAD am 10. Mrz. 2011 editiert.] [Diese Nachricht wurde von LaserCAD am 10. Mrz. 2011 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
PauliPanther Mitglied Interimsmanager für Bauprojekte bei Prävention, Intervention und Dokumentation
Beiträge: 788 Registriert: 18.03.2003
|
erstellt am: 12. Mrz. 2011 16:45 <-- editieren / zitieren --> Unities abgeben: Nur für LaserCAD
Hei, ich kenne C zwar nicht, aber es besteht ein wesentlicher Unterschied zwischen LoadDLL und CallDll. Bei LoadDll bleibt der Befehl im Speicher, bei CallDll nicht. Vielleicht hilfts ja trotzdem..... ------------------ Viele Grüße, Sonja Rottstegge CAD & EDV-Dienstleistungen und Schulungen www.cad-point.info Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
LaserCAD Mitglied
Beiträge: 12 Registriert: 05.03.2011 MegaCAD2013
|
erstellt am: 16. Mrz. 2011 16:12 <-- editieren / zitieren --> Unities abgeben:
Das stimmt natürlich; habe ich "übersehen" Da ich im Code "LoadDll" verwende und dessen Verwendung mit MegaCMD nicht verboten ist (im Gegensatz zu CallDll), müsste die Funktionsausführung doch eigentlich funktionieren. Wie oben bereits beschrieben funktioniert meine DLL nur, wenn ich sie über das Menü <Service> <Dll aufrufen> ausführe. Wenn ich meine DLL in das Menü mit einer Schaltfläche integriere wird nur die .prt gespeichert. Die dxf wird nicht gespeichert. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
PauliPanther Mitglied Interimsmanager für Bauprojekte bei Prävention, Intervention und Dokumentation
Beiträge: 788 Registriert: 18.03.2003
|
erstellt am: 16. Mrz. 2011 16:39 <-- editieren / zitieren --> Unities abgeben: Nur für LaserCAD
Hei Laser, ich bin mir nicht sicher, ob ich gerade einfach nur blind bin, aber welche Funktion hast Du denn für den Button selbst benutzt? Das Menü Service - DLL aufrufen benutzt den Befehl "CallDll". Der Aufruf erfolgt ohne Parameter-Übergabe. Bei den Buttons (TAB-Taste) gibt es untereinander zweimal das fast gleich aussehende. Hast Du wirklich den CallDll-Button erwischt? Oder doch aus Versehen den Load? Oder hast Du bei dem Funktionsaufruf mit Parameter gearbeitet?
------------------ Viele Grüße, Sonja Rottstegge CAD & EDV-Dienstleistungen und Schulungen www.cad-point.info Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
LaserCAD Mitglied
Beiträge: 12 Registriert: 05.03.2011 MegaCAD2013
|
erstellt am: 16. Mrz. 2011 18:26 <-- editieren / zitieren --> Unities abgeben:
Vielen Dank für den Denkanstoß. Nachdem du von verschiedenen Buttons geschrieben hattest habe ich gedacht, dass ich doch nur eine Möglichkeit habe die DLL einzubinden. Dann habe ich nochmals geschaut und bin fündig geworden. Ich habe einen weitern "CallDLL Button" gefunden, der in der Liste bei einem "LoadDLL Button" stand.(wie von dir beschrieben) Als ich dann die DLL mit diesem Button gestartet habe hat die Ausführung funktioniert. Zum testen ob mein alter "CallDLL Button" wirklich nicht funktioniert (die Buttons haben eigentlich die gleiche Beschreibung), hat nun die Einbindung mit diesem auch funktioniert. ...sehr komische Phänomen. Jedenfalls funktioniert nun. Vielen Dank nochmals an alle die hier gepostet haben und ein Stückchen zum großen ganzen beigetragen haben. P.S.: Den Button, mit welchem es bei mir zunächst nicht funktioniert hat, ist in keiner Kategorie in der Menübelegungsliste gelistet. Man finden ihn nur in der Kategorie -alle anzeigen-; und dort am Ende der Liste. Der funktionierende Button ist in der Kategorie Diverse zu finden.
[Diese Nachricht wurde von LaserCAD am 16. Mrz. 2011 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
PauliPanther Mitglied Interimsmanager für Bauprojekte bei Prävention, Intervention und Dokumentation
Beiträge: 788 Registriert: 18.03.2003
|
erstellt am: 17. Mrz. 2011 09:20 <-- editieren / zitieren --> Unities abgeben: Nur für LaserCAD
Hallo, das kannst Du nur sehen, wenn Du bei "Menü belegen" über den Haken "Funktion bearbeiten", Dir Deinen eigenen Button anschaust (mit Klick natürlich ). Da steht dann in der ersten von 3 Zeilen der eigentlich verwendete Befehl drin. Und sorry, ich bekomme die 2011 nicht mehr, deshalb kann ich nur von der 2010 reden. In der waren jedenfalls noch beide Buttons in der Kategorie "Diverse" zu finden. ------------------ Viele Grüße, Sonja Rottstegge CAD & EDV-Dienstleistungen und Schulungen www.cad-point.info Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |