| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
Autor
|
Thema: Umstieg ACA2008 ACA2011 (1036 mal gelesen)
|
oscarr Mitglied CAD-Manager
Beiträge: 198 Registriert: 02.10.2007 ACA 2012 - English Win 7/x64
|
erstellt am: 03. Aug. 2010 17:13 <-- editieren / zitieren --> Unities abgeben:
Hallo zusammen, der Umstieg von AutoCAD Architecture 2008 auf AutoCAD2011 steht bei uns an. Die ersten Kollegen arbeiten bereits damit. Nun ist es an der Zeit meine .NET Erweiterungen auch den Jungs für 2011 zur Verfügung zu stellen. Gibt es eine cleveren Trick in der èbergangszeit für beide Versionen gleichzeitig zu entwickeln oder jedes mal die referenzen auf die acdbmgd.dll u.ä. zu ändern. Ich denke da in irgendwelche Compilereinstellungen die dan zwei dll compilieren oder sowas in der Art? LG Holger Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Ex-Mitglied
|
erstellt am: 03. Aug. 2010 19:38 <-- editieren / zitieren -->
Hi, guck mal >>>hier<<<, hilft hoffe ich schon mal (gleicher Source, unterschiedliche SLN's). - alfred - ------------------ www.hollaus.at |
Wene71 Mitglied
Beiträge: 28 Registriert: 25.04.2010 Win8.1 Pro x64, ACAD 2015, VS 2013
|
erstellt am: 03. Aug. 2010 19:46 <-- editieren / zitieren --> Unities abgeben: Nur für oscarr
Hallo, als erstes würde ich versuchen gar nichts zu machen. Also die 2008'er DLL's in ACAD 2011 laden, und mal alle Programme durchprobieren. Las wissen ob es funktioniert und Dich für die Übergangszeit zufrieden stellt. Vielleicht auch "Late Binding" - könnte auch gehn. Gruß Werner Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Wene71 Mitglied
Beiträge: 28 Registriert: 25.04.2010 Win8.1 Pro x64, ACAD 2015, VS 2013
|
erstellt am: 03. Aug. 2010 19:53 <-- editieren / zitieren --> Unities abgeben: Nur für oscarr
|
Ex-Mitglied
|
erstellt am: 04. Aug. 2010 18:36 <-- editieren / zitieren -->
Hi, @Werner: >> Also die 2008'er DLL's in ACAD 2011 laden Nee, so nicht. Denn 2008 API ist nicht kompatiblel zu 2010 API, Du kannst zwar mit einigermaßen hoher Wahrscheinlichkeit für 2008 gebaute DLL's mit 2009 (und sogar 2007) laden, aber mit 2010 gab's einen Bruch (der managed API signatures) und damit würde ich (solange man nicht nur an COM oder LISP denkt) die fehlerfreie Lauffähigkeit sehr stark bezweifeln. >> Vielleicht auch "Late Binding" - könnte auch gehn.
Ja könnte, nur - persönliche Meinung - wer LateBinding vermeidet, hat weniger Typkonflikte zur Laufzeit (und in einigen Fällen auch die bessere Performance). - alfred - ------------------ www.hollaus.at |
oscarr Mitglied CAD-Manager
Beiträge: 198 Registriert: 02.10.2007 ACA 2012 - English Win 7/x64
|
erstellt am: 05. Aug. 2010 10:36 <-- editieren / zitieren --> Unities abgeben:
Danke Alfred, genau an sowas dachte ich. Habe jetzt zwei sln für die verschiedenen Versionen, damit habe ich dann auch noch das Problem mit den verschiedenen Framworkversionen gelöst. Das ich einmal Code: Imports ACSMCOMPONENTS17Lib
bzw.
Code: Imports ACSMCOMPONENTS18Lib
stehen haben müsste habe ich ebenfalls mit den Projekteigenschaften gelöst, indem ich den passenden Namespace eingefügt habe und spare mir dann die IMPORTS Anweisung.ABER ein völlig anderes Problem ist, das Autodesk offensichtlich an der API geschraubt hat. Mit 2008 hieß es:
Code:
Dim myMVRef As MultiViewBlockReference = obj obj = myMVRef.ClassifyingStyleId
und mit 2011 scheinbar: Code:
Dim myMVRef As MultiViewBlockReference = obj obj = myMVRef.StyleId
Frage: Kann man abfragen welche Version/Referenz geladen ist? Um den passenden Code zu compilieren? LG Holger Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Wene71 Mitglied
Beiträge: 28 Registriert: 25.04.2010 Win8.1 Pro x64, ACAD 2015, VS 2013
|
erstellt am: 05. Aug. 2010 11:06 <-- editieren / zitieren --> Unities abgeben: Nur für oscarr
Hallo, hilft es wenn du die AutoCAD-Versions-Nr ausliest? Beispiel: Code: Dim vers As Version = Autodesk.AutoCAD.ApplicationServices.Application.Version Dim sNr As String = vers.Major.ToString & "." & vers.Minor.ToString Dim ACAD_Version As Double = Convert.ToDouble(sNr) Dim Schraff As Hatch = New Hatch 'Vor AutoCAD 2011... If ACAD_Version() < 18.1 Then Schraff.Origin = Origin Schraff.PatternScale = PatternScale Schraff.PatternAngle = PatternAngle Schraff.SetHatchPattern(HatchPatternType.PreDefined, PatternName) Else 'Ab AutoCAD 2011... Schraff.Origin = Origin Schraff.SetHatchPattern(HatchPatternType.PreDefined, PatternName) Schraff.PatternScale = PatternScale Schraff.PatternAngle = PatternAngle End If
Gruß Werner Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
oscarr Mitglied CAD-Manager
Beiträge: 198 Registriert: 02.10.2007 ACA 2012 - English Win 7/x64
|
erstellt am: 05. Aug. 2010 16:19 <-- editieren / zitieren --> Unities abgeben:
So ähnlich habe ich es hinbekommen Code:
#Const ACA2011 = False/True#If ACA2011 Then obj = myMVRef.StyleId #Else obj = myMVRef.ClassifyingStyleId #End If
sonst gibts Mecker weil es das .ClassifyingStyleId Property in 2011 gar nicht mehr gibt.vielen lieben Dank Holger Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Ex-Mitglied
|
erstellt am: 05. Aug. 2010 22:21 <-- editieren / zitieren -->
Hi, gute Variante, ich halte es ein wenig anders. Ich habe ja schon ein SLN und VBPROJ für AutoCAD 2011, für 2010, für 2009, ... In diesen halte ich möglichst immer in gleichen Dateien den SourceCode, eben mit den Ausnahmen, wo die Signaturen sich geändert haben. Für diese Fälle gibt es Mini-VB-Files, die Versionsabhängig sind, aber gleiche Funktionsnamen/-signaturen haben. Und diese Dateien gibt's dann ebenfalls für 2011, 2010, ... aber immer nur die passende wird in der entsprechenden VBPROJ mitgeladen. Hoffe, das ist ausreichend verständlich, - alfred - ------------------ www.hollaus.at |