Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  AutoCAD ObjectARX und .NET
  Kompilieren in Version 2012 bis 2015

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:  Kompilieren in Version 2012 bis 2015 (2287 mal gelesen)
cadplayer
Ehrenmitglied
CADniker


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

Beiträge: 1832
Registriert: 28.04.2009

erstellt am: 09. Jan. 2015 18:52    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


DumpObjects.zip

 
Generell meine Frage: Beim Kompilieren in C# kommt es immer darauf an die richtigen Biblioteken in den jeweiligen Versionen anzugeben.
Jetzt kann ich mir allerdings nur schwer vorstellen, dass der Profi dazu das geschriebene Projekt auf die einzelnen Versionen anpasst. Sprich händisch Acdbmgd, Acmgd und die entspr. Debug-Acadversion, bspw. C:\Program Files\Autodesk\AutoCAD Civil 3D 2012\acad.exe angibt.
Gibt es da einen einfacheren Weg ?
Ich bin da ja ein wenig von LISP verwöhnt, da geht´s auf anhieb.

Als zweites finde ich es äusserst langweilig, wenn man kompiliert, dass dan Acad erst gestartet werden muss. Muss das sein, oder kann man den Vorgang vorher schon abbrechen. In meinem Beispiel wird die DumpObjects.dll ziehmlich schnell erzeugt.

Wer kann mir ein wenig Aufklärung dazu geben.
Fleissarbeit, biete 2012version will haben alle Versionen bis 2015

------------------
Gruss Dirk
http://cadplayerlounge.blogspot.se

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

erstellt am: 10. Jan. 2015 09:47    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 cadplayer 10 Unities + Antwort hilfreich

Hallo Dirk,

Da ich nicht im Büro bin, nur ein Link zu einem Beitrag, der ähnliches behandelt.
http://ww3.cad.de/foren/ubb/Forum352/HTML/000253.shtml#000000

Wenn ich am Montag wieder am Rechner sitze, dann poste ich noch einen Screenshot, von meinem Basis-Projekt mit ein paar Erläuterungen.

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

cadplayer
Ehrenmitglied
CADniker


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

Beiträge: 1832
Registriert: 28.04.2009

erstellt am: 10. Jan. 2015 11:54    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

Das wäre einsame Spitze Holger! 

Den Hinweis hatte ich auch schon im Hinterkopf, aber umständlicher, Projektdatei mit Verweisen in Notepad zu überarbeiten.
Den Vorschlag von Ex finde ich ausgereift.

Du startest also nicht ein neues Projekt mit dem Wizard, sondern nimmst immerwieder deine Projektvorlage her, verstehe ich es richtig ?

[Diese Nachricht wurde von cadplayer am 10. Jan. 2015 editiert.]

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

erstellt am: 12. Jan. 2015 09:06    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 cadplayer 10 Unities + Antwort hilfreich

Hallo Dirk,

das Ganze ist am Anfang einige Arbeit, die  sich aber dann auch doppelt und dreifach auszahlt. Ich selber habe mehrere Varianten für gut befunden, umgesetzt und nach einiger Zeit wieder verworfen. Allerdings muss man da dann auch dazu sagen, dass ich ja bekanntlich viele verschiedene Tools für diverse Kunden programmiere, wo es dann doch einiges zu beachten gilt, damit ältere Programme nicht mit neuen Programmen kollidieren usw. ... . Das ist für dich wohl eher uninteressant.

Zur Vorgehensweise: richte dir ein Projekt in der niedrigsten AutoCAD-Version vollständig ein. Dann kopiere die *.csproj Datei und füge dieses Projekt ebenso deiner Projektmappe hinzu. In diesem Projekt änderst du dann das Framework, schmeißt die älteren AutoCAD-Verweise raus und fügst die der für dieses Projekt vorgesehenen AutoCAD-Version hinzu.
Ist das für alle AutoCAD-Versionen geschehen, kannst du dir diese Projektmappe immer wieder kopieren. in den Projekten der kopierten Mappe genügt es nun den Assembly-Namen zu ändern. Ich ändere auch immer noch dem Namespace und ziehe diese Änderung mittels Suchen/Ersetzen in den Projektdateien nach.
Das Vorgehen ist nicht wie in Lisp, aber in 5min hat man ein Projekt für alle AutoCAD-Versionen erstellt.

Das ganze ist nicht in Schriftform so leicht zu erklären .. weshalb ich für das Thema Code-Organisation in meinen Schulungen immer einen halben Tag vorsehe.

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

cadplayer
Ehrenmitglied
CADniker


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

Beiträge: 1832
Registriert: 28.04.2009

erstellt am: 12. Jan. 2015 12:52    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

Hi Holger!
Vielen Dank für deine Ausführungen - sehr wohl ist das absolut interessant für mich. Werde ich demnächst mal ausprobieren.

Eine Frage nur zum Kompiliervorgang, da werden doch die einzelnen dll-Bibliotheken geladen. Muss denn dazu jede Autocad Version installiert sein? Im Prinzip nicht, weil es doch immerwieder die gleichnamigen sind oder ?

------------------
Gruss Dirk
http://cadplayerlounge.blogspot.se

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

erstellt am: 12. Jan. 2015 13:01    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 cadplayer 10 Unities + Antwort hilfreich

... man benötigt imgrunde nicht mal ein einziges AutoCAD um für AutoCAD zu programmieren. Es genügen die DLL's in irgendeinem Verzeichnis.
Da bei uns in der Firma auch nicht alle Rechner gleich installiert sind, haben wir ein extra Verzeichnis auf der lokalen Platte, in dem sich (sortiert) die AutoCAD-Programmbibliotheken befinden. So kann jeder ein Projekt öffnen und darin weiter arbeiten, ohne dass dann erst die Verweise angepasst werden müssen.

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

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

erstellt am: 12. Jan. 2015 13:09    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 cadplayer 10 Unities + Antwort hilfreich

... noch eine Ergänzung:

Da die Objekte in den AutoCAD-Versionen (im Regelfall) unverändert sind, egal in welche Bibliothek Autodesk die Definitionen gepackt hat, ist es theoretisch so, dass der reine Code der für 2008 geschrieben wurde auch in 2015 läuft. Das gilt natürlich auch anders herum, sofern man nur Eigenschaften und Methoden verwandt hat, die in den früheren Versionen bereits implementiert waren.

Da sich die Verweise erst in der Version 2013 geändert haben, sollten Programme die für 2008 programmiert waren auch in den Versionen 2009-2012 laufen. Wenn dem nicht so ist, dann hat der Programmierer bewusst eingebaut oder der Programmierer hat auf Eigenschaften und Methoden zurückgegriffen, die in den Vorgängerversionen nicht existierten. Ähnlich verhält sich das mit den Programmen ab Version 2013 - die sollten auch in 2014-2015 laufen.

Sofern du also ausschließlich in der Versions-Range bis 2012 oder jünger als 2012 arbeitest, musst du gar nicht für die jeweiligen AutoCAD-Versionen eine Kompilierung durchführen.

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

cadplayer
Ehrenmitglied
CADniker


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

Beiträge: 1832
Registriert: 28.04.2009

erstellt am: 03. Feb. 2015 08: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


2015-02-0308-10-15.png


2015-02-0308-08-29.png

 
Jetzt habe ich mal begonnen, mich der Sache anzunehmen. Zunächt wollt ich einmal testen, ob ich das Programm kompilieren (debugen) kann, ohne einen Programmstart von Acad zu starten. Das heisst, die verwendeten dll´s sind als Referenz gebunden. Dennoch bekomme ich folgende Fehlermeldung

------------------
Gruss Dirk
http://cadplayerlounge.blogspot.se

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

cadplayer
Ehrenmitglied
CADniker


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

Beiträge: 1832
Registriert: 28.04.2009

Windows 10
64bit system
Autocad Civil3d 2020 ENGLISH
Visual Studio 2019
OpenDCL.Runtime.9<P>

erstellt am: 03. Feb. 2015 11:42    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

Ohne Acadstart funktioniert einfach, indem man Shift+F6 drückt. Damit baut es die Applikation ohne Programmstart in Acad.
Ich möchte gern eine Message anfügen, sobald das Programm mit netload geladen wird, soll kurz wiedergegeben werden, was mit dem Programm passiert und wie der Eingabebefehl lautet.
Sollte man dazu ein script-Item beilegen mit Inhalt bspw.
(princ "\nDiese Funktion ermöglicht das Ändern des Linientypes \n*** starte mit SLT")

------------------
Gruss Dirk
http://cadplayerlounge.blogspot.se

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

erstellt am: 09. Feb. 2015 09: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 cadplayer 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von cadplayer:
Jetzt habe ich mal begonnen, mich der Sache anzunehmen. Zunächt wollt ich einmal testen, ob ich das Programm kompilieren (debugen) kann, ohne einen Programmstart von Acad zu starten. Das heisst, die verwendeten dll´s sind als Referenz gebunden. Dennoch bekomme ich folgende Fehlermeldung


... wenn du debuggen möchtest, must du vom VS aus AutoCAD starten (die 2. Option in deinem ersten Screenshot). Im AutoCAD musst du dann die erstellte DLL mittels NETLOAD laden. Dann funktioniert das Debuggen.

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

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

erstellt am: 09. Feb. 2015 09:30    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 cadplayer 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von cadplayer:
Ohne Acadstart funktioniert einfach, indem man Shift+F6 drückt. Damit baut es die Applikation ohne Programmstart in Acad.
Ich möchte gern eine Message anfügen, sobald das Programm mit netload geladen wird, soll kurz wiedergegeben werden, was mit dem Programm passiert und wie der Eingabebefehl lautet.
Sollte man dazu ein script-Item beilegen mit Inhalt bspw.
(princ "\nDiese Funktion ermöglicht das Ändern des Linientypes \n*** starte mit SLT")


... Script einbinden ist unnötig. Erstelle eine Klasse, die von IExtensionApplication erbt und erstelle darin die Funktion: Initialize und Terminate, die Initialize wird dann beim Laden automatisch ausgeführt, die Terminate beim Beenden von AutoCAD.

Code:

public class mInitialize : Autodesk.AutoCAD.Runtime.IExtensionApplication
{
public void Initialize()
{
Document _doc = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument;
Editor _ed = _doc.Editor;
_ed.WriteMessage("\nApplication load");

}
public void Terminate()
{ }
}


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

cadplayer
Ehrenmitglied
CADniker


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

Beiträge: 1832
Registriert: 28.04.2009

erstellt am: 09. Feb. 2015 12: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

Genial Holger! Das passte wiedermal wie die Faust aufs Auge. Hast du vielleicht einen Link, wo Acad-objekt-klassen etwas dokumentiert sind. Ich fand nur das hier, weiss aber nicht ob das brauchbare Angaben sind.

http://www.autocadws.com/jsapi/v2/docs/contents.html

------------------
Gruss
Dirk
http://cadplayerlounge.blogspot.se

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

erstellt am: 09. Feb. 2015 12:17    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 cadplayer 10 Unities + Antwort hilfreich

meine Suche nach AutoCAD Net API documentation bringt mehr als ein Ergebnis - unter anderem auch die Doku von Autodesk.

Grüße!
Holger

PS: Wann kann ich dich bei mir zur Schulung erwarten? ;-)

------------------
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

cadplayer
Ehrenmitglied
CADniker


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

Beiträge: 1832
Registriert: 28.04.2009

erstellt am: 09. Feb. 2015 13:28    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

War schon 3 Jahre nicht mehr in Dt. - ich hoffe das wird mal was. Lass mich nur noch ein wenig mit .NET testen, damit ich für dich gewappnet bin. 

------------------
Gruss Dirk
http://cadplayerlounge.blogspot.se

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

cadplayer
Ehrenmitglied
CADniker


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

Beiträge: 1832
Registriert: 28.04.2009

Windows 10
64bit system
Autocad Civil3d 2020 ENGLISH
Visual Studio 2019
OpenDCL.Runtime.9<P>

erstellt am: 21. Mai. 2015 14:08    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

Nochmal nachgefragt.
Wenn man zu verschiedenen Acadversionen kompiliert reicht es da nicht einfach, den Debug in die entspr. Acadversion abzuändern?

Properties -> Debug -> Start external program -> C:\Program Files\Autodesk\AutoCAD 2015\acad.exe

oder

Properties -> Debug -> Start external program -> C:\Program Files\Autodesk\AutoCAD 2014\acad.exe

Die Refenzen AcCoreMgd, AcDbMgd, AcMgd, AeccBaseMgrd, AeccDbMgd
müssten sich doch ebenso mit der Weiterentwicklung ändern oder ?

Jedenfalls ging es bei mir, dass ich mein Programm ursprünglich für Civil3d-2014 generiert ohne Austausch der Refernenzen, wie gesagt nur die 2015 acad.exe kompilieren liess. Gibt es da unter Umständen Probleme?

------------------
Gruss Dirk
Blog | Adolf Spende | Infra-Feed | ÅF AB

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

erstellt am: 21. Mai. 2015 14:19    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 cadplayer 10 Unities + Antwort hilfreich

Hallo Dirk,

die Acad-DLL's werden ja nur referenziert und nicht in deinem Code fest eingebunden. Da dies ohne Angabe einer spezifischen Version erfolgt, funktionieren die Programm-DLLs auf all den AutoCAD-Versionen, in denen die verwendeten Objekte, deren Eigenschaften, deren Methoden (mit den gleichen Parametern) enthalten sind. Da AutoDesk die API jedoch immer mal wieder neu strukturiert und/oder die Objekteigenschaften oder Methodenaufrufe ändert, kann das Funktionieren eben nicht für alle Ewigkeit garantiert werden.

Ich habe die Erfahrung gemacht, dass die für AutoCAD 2008 erstellten Programme nahezu Ausnahmslos bis AutoCAD 2012 laufen. Ab der 2013er kann ich keine Aussage mehr treffen, da ich dann meine Projektstruktur wie oben beschrieben geändert habe.

Fazit: Versuch macht klug.

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

cadplayer
Ehrenmitglied
CADniker


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

Beiträge: 1832
Registriert: 28.04.2009

erstellt am: 22. Mai. 2015 07:56    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 Holger!
Da muss ich mich vorerst mit der Variante begnügen, wobei ich deine im Screenshot, ausgereifter finde. Das mit der Debug-konstante ist mir so noch nicht untergekommen und da bin ich mir unsicher, was da erreicht werden kann.
Tust du quasi alle Versions.dlls gleichzeitig erzeugen bzw lädst du immer alle Acad-dlls von allen Versionen in ein Visual-Projekt?

------------------
Gruss Dirk
Blog | Adolf Spende | Infra-Feed | ÅF AB

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

erstellt am: 22. Mai. 2015 08:56    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 cadplayer 10 Unities + Antwort hilfreich

Hallo Dirk,

du hast ja eine Projektmappe. In dieser ist eins / sind mehrere Projekte.
Wenn du also ein Projekt (z.Bsp. für AutoCAD 2014) fertig hast, gehst du in den Explorer, kopierst die *.csproj-Datei, gibst der einen neuen Namen und fügst dieses Projekt deiner Projektmappe hinzu. In diesem Projekt löschst du die Verweise auf AutoCAD 2014 und fügst die Verweise für AutoCAD 2015 hinzu.
Da beide Projekte auf die gleichen Dateien verweisen, sind Änderungen in einem Projekt gleichermaßen im anderen wirksam.

Zur bedingten Kompilierung:
Beispiel. Bis AutoCAD 2015 war die WcMatch-Funktion in den Utils. Ab 2016 ist die selbe Funktion jedoch in den CoreUtils enthalten.
Da ich keine Lust und es zudem auch nicht notwendig ist, erstelle ich keine komplett neuen Funktionen, in denen das WcMatch verwendet wird, sondern arbeite mit bedingten Kompilieranweisungen. Diese bedeuten nichts anderes, als dass die auf die bedingten Anweisungen verweisenden CodeZeilen mit kompiliert werden oder eben auch nicht.
#if AC2016
    bool _match = Autodesk.AutoCAD.Internal.CoreUtils.WcMatch(_adef.Tag, _AttNamePattern);
#else
    bool _match = Autodesk.AutoCAD.Internal.Utils.WcMatch(_adef.Tag,_AttNamePattern))
#endif

Bei mir gibt es die Konstante nur für AutoCAD 2016 und heißt AC2016 - in den anderen Versionen gibt es keine Konstante, so dass die else-Anweisung greift.

Soweit klar?
(Wenn man es einmal verstanden hat, ist das ein super einfacher Weg, die Versionsunterschiede in den Griff zu bekommen)

Grüße!
Holger

PS: In einer Schulung bei uns ist dieses Thema - CodeHandling && (Objektorientierte-) Code-Bibliotheken in der AutoCAD-Programmierung mit ca. einem Tag angesetzt. Wir waren da ja schon einmal in Kontakt ...

------------------
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

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