Hot News:

Unser Angebot:

  Foren auf CAD.de (alle Foren)
  AutoCAD VBA
  Versionsabhängikeiten

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:  Versionsabhängikeiten (1000 mal gelesen)
Goofy007
Mitglied
Vermessungstechniker


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

Beiträge: 578
Registriert: 06.11.2004

Map3D 2018 und Civil3D 2018

erstellt am: 31. Aug. 2009 16: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

Hallo Forum,

Ich habe in einem meiner Makros den Befehle:

Code:
Set Farbe = AcadApplication.GetInterfaceObject("Autocad.accmcolor.17")
verwendet. Nun habe ich festgestellt, daß der nur in den 17er Versionen von ACAD funktioniert.
Um Versionsunabhängig zu sein, muß ich wohl erst mal die Version feststellen, und dann die für die Verison passende Funktion wählen.

Ist das so? Oder gibt es einen eleganteren Weg?
Ich möchte unnötige if´s vermeiden. In der Hilfe und im Web konnte ich leider nichts brauchbares finden.

lg
Didi

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


Ex-Mitglied

erstellt am: 31. Aug. 2009 17:06    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

Hi Didi,

Dann kannst du statt fixer Texte eine Funktion definieren, die Dir die richtigen ActiveX-ObjectNames evaluiert und diesen retourniert.

Code:
'...folgendes kann in eigenen Modulen stehen, die Du Dir als allgemeine Library erzeugst
Private Function getAcadVersionMain as string
  getAcadVersionMain = left(ThisDrawing.Application.Version,2)
End Function

Private Function getColorInterfaceString() as String
  getColorInterfaceString = "Autocad.accmcolor." & getAcadVersionMain
End Function

'...und in Deiner Funktion schreibst Du dann:
Set Farbe = AcadApplication.GetInterfaceObject(getColorInterfaceString)



Noch schöner ist natürlich, wenn Du beim Start Deiner Applikation den Versionsstring von AutoCAD mal in eine Variable speicherst, dann muss nicht immer auf das Application-Objekt hingegriffen werden, zusätzlich fängst Du damit auch das Problem im obigen Code ab, der abfliegen würde, wenn gerade keine Zeichnung offen wäre.

- alfred -

------------------
www.hollaus.at

Goofy007
Mitglied
Vermessungstechniker


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

Beiträge: 578
Registriert: 06.11.2004

Map3D 2018 und Civil3D 2018

erstellt am: 31. Aug. 2009 19: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

Hallo Alfred,

danke für deine Inspirationen. Da ich auch schon über etwas in der Art nachgedacht habe, fühle ich mich jetzt bestätigt und werd mich frischen Mutes an die Arbeit machen.

lg
Didi

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

Goofy007
Mitglied
Vermessungstechniker


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

Beiträge: 578
Registriert: 06.11.2004

Map3D 2018 und Civil3D 2018

erstellt am: 01. Sep. 2009 09:20    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 Alfred,

ich hab deinen Vorschlag jetzt so umgesezt.

Code:

...
Dim AcFarbe As String
Dim Version As String
Dim Farbe As AcadAcCmColor         
...
Version = Left(ThisDrawing.Application.Version, 2)
AcFarbe = "Autocad.accmcolor." & Version
Set Farbe = AcadApplication.GetInterfaceObject(AcFarbe)
...

Abschmieren ohne Zeichnung scheint mir nicht gefährlich zu seine, weil man ohne Zeichnung das Makro gar nicht starten kann.

nochmals Danke und
liebe Grüße
Didi

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

Stelli1
Moderator
Verm.-Ing.


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

Beiträge: 1521
Registriert: 17.08.2005

Map 2000-2014, Rasterdesign,
MapGuide, Autodesk Topobase,
VS6, VS.net 2013

erstellt am: 01. Sep. 2009 13: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 Nur für Goofy007 10 Unities + Antwort hilfreich

Hallo Didi,

es geht auch ohne "Versionszauber" 

Code:
    Set Farbe = New AcadAcCmColor
    Farbe.ColorMethod = acColorMethodByACI
    Farbe.ColorIndex = acCyan

Wilfried Stelberg

------------------
Warum lisp'eln wenn's auch anders geht.
www.ib-stelberg.de

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

Goofy007
Mitglied
Vermessungstechniker


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

Beiträge: 578
Registriert: 06.11.2004

Map3D 2018 und Civil3D 2018

erstellt am: 01. Sep. 2009 19: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

Hallo Wilfried,

Danke für deinen Beitrag.
Kannst du mir auch noch kurz erklären, was da dann der Unterschied ist?

lg
Didi

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