Hot News:

Unser Angebot:

  Foren auf CAD.de (alle Foren)
  AutoCAD VBA
  Laufzeitfehler bei AutoCAD.AcCmColor.22

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:  Laufzeitfehler bei AutoCAD.AcCmColor.22 (1727 / 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: 22. Okt. 2018 13: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!

Unter AutoCAD 2018 Map3D löst der Code

Code:
  Dim Farbe As AcadAcCmColor
  Set Farbe = AcadApplication.GetInterfaceObject("AutoCAD.AcCmColor.22")

einen Laufzeitfehler -2147221005 (800401f3) aus.  In der Hilfe ist der aber genau so beschrieben.

Hab nur ich das Problem oder kann es jemand bestätigen?
Und noch viel wichtiger: Hat jemand eine Lösung für das Problem?

lg
Didi

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

CADmium
Moderator
Maschinenbaukonstrukteur




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

Beiträge: 13508
Registriert: 30.11.2003

ACAD 2008 Mechanical

erstellt am: 22. Okt. 2018 14:13    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

AutoCAD.AcCmColor.22  .. hier sollten immer die 2 ersten Zeichen der Sysvar-Rückgabe von (getvar "acadver") stehen.

in Lisp sehe das so aus
(setq TC-OBJEKT (vl-catch-all-apply
                                'vla-getinterfaceobject
                                (list(vlax-get-acad-object)
                                        (strcat "AutoCAD.AcCmColor."
                                        (substr (getvar "acadver") 1 2)
                                      )
                                )
                              )
              )

------------------
Also ich finde Unities gut ... und andere sicher auch
---------------------------------------
  - Thomas -          
"Bei 99% aller Probleme ist die umfassende Beschreibung des Problems bereits mehr als die Hälfte der Lösung desselben."

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: 22. Okt. 2018 14:43    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 Cadmium,

Danke für die rasche Antwort. Leider kann ich mit Lisp nicht viel anfangen. Mein Code ist Teil einer größeren Sammlung von VBA Programmen und ich weiß nicht, ob bzw. wie ich da Teile durch Lisp-Code ersetzen kann.

Das mit den ersten 2 Ziffern ist mir bekannt. Die stehen da auch so drinnen. Meine Versionsnummer ist 22.

Eigentlich war der gepostete Code auch schon zum Testen vereinfacht. Im Originalcode steht:   

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


damit ich nicht bei jedem Versionswechsel den Code ändern muss. In den bisherigen Versionen war das auch kein Problem. Aber jetzt ??

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

CADmium
Moderator
Maschinenbaukonstrukteur




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

Beiträge: 13508
Registriert: 30.11.2003

ACAD 2008 Mechanical

erstellt am: 22. Okt. 2018 14:50    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

sieh IMHO ok aus ... testen kann ich leider nicht .. wenn du mal meinen Klammerausdruck in die Befehlszeile kopierst ... läuft das in den gleichen Laufzeitfehler ?

------------------
Also ich finde Unities gut ... und andere sicher auch
---------------------------------------
  - Thomas -          
"Bei 99% aller Probleme ist die umfassende Beschreibung des Problems bereits mehr als die Hälfte der Lösung desselben."

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: 23. Okt. 2018 07:43    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 Cadmium,

Sorry hatte gestern keine Zeit mehr. Hab heute morgen deinen Code in die Befehlszeile kopiert. Das sieht dann so aus:

Code:
Befehl: (setq TC-OBJEKT (vl-catch-all-apply
((_>                                'vla-getinterfaceobject
((_>                                (list(vlax-get-acad-object)
(((_>                                        (strcat "AutoCAD.AcCmColor."
((((_>                                        (substr (getvar "acadver") 1 2)
((((_>                                      )
(((_>                                )
((_>                              )
(_>              )
#<%catch-all-apply-error%>

Was sagt mir diese Rückmelung?

lg
Didi

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

CADmium
Moderator
Maschinenbaukonstrukteur




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

Beiträge: 13508
Registriert: 30.11.2003

ACAD 2008 Mechanical

erstellt am: 23. Okt. 2018 07:51    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

das da ein Fehler aufgetreten ist ... doof :-(

------------------
Also ich finde Unities gut ... und andere sicher auch
---------------------------------------
  - Thomas -          
"Bei 99% aller Probleme ist die umfassende Beschreibung des Problems bereits mehr als die Hälfte der Lösung desselben."

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

KlaK
Ehrenmitglied V.I.P. h.c.
Dipl. Ing. Vermessung, CAD- und Netz-Admin



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

Beiträge: 2624
Registriert: 02.05.2006

AutoCAD LandDesktop R2 bis 2004
Civil 3D 2005 - 2022
Plateia, Canalis
Visual Basic

erstellt am: 23. Okt. 2018 13: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 Nur für Goofy007 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von Goofy007:
Hallo Cadmium,

Danke für die rasche Antwort. Leider kann ich mit Lisp nicht viel anfangen. Mein Code ist Teil einer größeren Sammlung von VBA Programmen und ich weiß nicht, ob bzw. wie ich da Teile durch Lisp-Code ersetzen kann.

Das mit den ersten 2 Ziffern ist mir bekannt. Die stehen da auch so drinnen. Meine Versionsnummer ist 22.

Eigentlich war der gepostete Code auch schon zum Testen vereinfacht. Im Originalcode steht:    

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


damit ich nicht bei jedem Versionswechsel den Code ändern muss. In den bisherigen Versionen war das auch kein Problem. Aber jetzt ??

Hi,
Version ist bei mir eine schreibgeschützte Variable
Unter 2017 klappt es mit diesem Code:

Code:

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

Grüße
Klaus 

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: 23. Okt. 2018 13:26    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 Klaus,

Danke für die Rückmeldung. Ich habe inzwischen festgestellt, daß der Code auf einem anderen Rechner einwandfrei funktioniert.

Leider haben Reparatur und Neuinstallation auf meinem Rechner keine Abhilfe gebracht. Ich muss wohl als nächstes Autocad komplett deinstallieren und neu installieren.

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: 24. Okt. 2018 11: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

Hallo Leute,

Danke für eure Rückmeldungen. Das Problem ist gelöst.

Der Code war in Ordnung. Weder Reparaturinstallation noch Neuinstallation haben geholfen.
Nach dem kompletten Entfernen und Neu-Installieren von AutoCAD (+Map +Civil) geht es nun.

Leider weiß ich noch immer nicht, was genau den Fehler verursacht hat. Aber immerhin geht's wieder.

lg
Didi

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

rexxitall
Mitglied
Dipl. -Ing. Bau


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

Beiträge: 266
Registriert: 07.06.2013

Various: systems, Operating systems, cad systems, cad versions, programming languages.

erstellt am: 29. Okt. 2018 19:40    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

Leidiges Thema ging mir auch mal auf den Sack 

Letale Lösung:
Eine Klasse für alle Interface und Ruhe ist 
Läuft ohne Änderungen etc mit jeder ACAD Version auch der neuesten mit 64 bit

Lieben Gruß
Thomas

CLASS ACADINTERFACE:
Private Type interfaces
    applicaTION As Object
    AcadLayerStateManager As Object
    AxDbDocument As Object
    AcCmColor As Object
    VLApplication As Object
    IAcadObject As Object
    appName As String
    AppNameVertical  As String
    VBE As Object
    INITIALIZED As Boolean
End Type

Private PINTERFACE As interfaces

Function GET_INTERFACE(INTERFACE As String) As Object
    Dim strAcadVersion As String
    With PINTERFACE.applicaTION
        strAcadVersion = MID(.version, 1, 2)
        If CInt(strAcadVersion) < 16 Then
            Set GET_INTERFACE = AcadApplication.GetInterfaceObject(INTERFACE)
        Else
            On Error Resume Next
            If INTERFACE = "AutoCAD.Application" Then
   
                Set GET_INTERFACE = AutoCAD.applicaTION
                Exit Function
            End If
            If INTERFACE = "VL.Application" Then
                Call CreateObject("VL.Application")
            End If
       
            If INTERFACE = "AutoCAD.IAcadObject" Then
                Set GET_INTERFACE = GetInterfaceObject(INTERFACE)
            End If
     
       
            Set GET_INTERFACE = GetInterfaceObject(INTERFACE)
            If GET_INTERFACE Is Nothing Then
                Set GET_INTERFACE = GetInterfaceObject(INTERFACE & "." & strAcadVersion)
            End If
        End If
    End With
End Function

Private Sub Class_Initialize()
    Dim strname As String
    If PINTERFACE.INITIALIZED = True Then Exit Sub
    Set PINTERFACE.applicaTION = applicaTION
    Set PINTERFACE.AcadLayerStateManager = GET_INTERFACE("AutoCAD.AcadLayerStateManager")
    Set PINTERFACE.AxDbDocument = GET_INTERFACE("ObjectDBX.AxDbDocument")
    Set PINTERFACE.AcCmColor = GET_INTERFACE("AutoCAD.AcCmColor")
    Set PINTERFACE.VLApplication = GET_INTERFACE("VL.Application")
    Set PINTERFACE.applicaTION = GET_INTERFACE("AutoCAD.Application")
    Set PINTERFACE.IAcadObject = GET_INTERFACE("AutoCAD.IAcadObject")
   
    Set PINTERFACE.VBE = applicaTION.VBE
    PINTERFACE.appName = PINTERFACE.applicaTION.CAPTION
    strname = PINTERFACE.applicaTION.CAPTION
    PINTERFACE.AppNameVertical = left(strname, InStr(1, strname, " -"))
    PINTERFACE.INITIALIZED = True
   
End Sub

Public Sub Init()
    Call Class_Initialize
End Sub

Public Property Get IColor() As Object
    If Not PINTERFACE.INITIALIZED Then Call Class_Initialize
    Set IColor = PINTERFACE.AcCmColor
End Property

Public Property Get IVBE() As Object
    If Not PINTERFACE.INITIALIZED Then Call Class_Initialize
    Set IVBE = PINTERFACE.VBE
End Property


Public Property Get Ilayer() As Object
    If Not PINTERFACE.INITIALIZED Then Call Class_Initialize
    Set Ilayer = PINTERFACE.AcadLayerStateManager
End Property

Public Property Get ILisp() As Object
    If Not PINTERFACE.INITIALIZED Then Call Class_Initialize
    Set ILisp = PINTERFACE.VLApplication
End Property


Public Property Get Iapp() As Object
    If Not PINTERFACE.INITIALIZED Then Call Class_Initialize
    Set Iapp = PINTERFACE.applicaTION
End Property
Public Property Get IDoc() As Object
    If Not PINTERFACE.INITIALIZED Then Call Class_Initialize
    Set IDoc = PINTERFACE.AxDbDocument
End Property
Public Property Get iobj() As Object
    If Not PINTERFACE.INITIALIZED Then Call Class_Initialize
    Set iobj = PINTERFACE.IAcadObject
End Property

Public Property Get IAppName() As String
    If Not PINTERFACE.INITIALIZED Then Call Class_Initialize
    IAppName = PINTERFACE.appName
End Property
Public Property Get IAppNameVertical() As String
    If Not PINTERFACE.INITIALIZED Then Call Class_Initialize
    IAppNameVertical = PINTERFACE.AppNameVertical
End Property


Public Function INTERFACE(INAME As String) As Object
    Dim testname As String
    Set INTERFACE = Nothing
    If Not PINTERFACE.INITIALIZED Then Call Class_Initialize
    Select Case LCase(INAME)
        Case "acadlayerstatemanager"
            INTERFACE = PINTERFACE.AcadLayerStateManager
        Case "axdbdocument"
            INTERFACE = PINTERFACE.AxDbDocument
        Case "accmcolor"
            INTERFACE = PINTERFACE.AcCmColor
        Case "vlapplication"
            INTERFACE = PINTERFACE.VLApplication
        Case "application"
            INTERFACE = PINTERFACE.applicaTION
        Case "iacadobject"
            INTERFACE = PINTERFACE.IAcadObject
        Case Else
            Set INTERFACE = GET_INTERFACE(INAME)
    End Select
End Function
'-------------------------------------------------------------
Initialisieren:
in irgendeinem Modul:

Public AINTERFACE As New ACADINTERFACES
'---------------------------------------------

Initialisieren: IM Startup EINMAL
Kann man auch jedes mal aufrufen. Die Klasse weis wenn sie bereits initialisiert ist und macht dann nix

sub INIT
AINTERFACE.Init
end sub


Benutzung: z.B. für Farben

Sub testinterfaces(entity as acadentity)
'OPTIONAL ->  AINTERFACE.Init  falss man die klasse nirgendwo initialisiert hat

    Dim COLOR As AcadAcCmColor
    Set COLOR = AINTERFACE.IColor
    Call COLOR.SetRGB(241, 162, 14)

    entity.TRUECOLOR = COLOR

End Sub

------------------
Wer es nicht versucht, hat schon verlorn 
Und bei 3 Typos gibts den vierten gratis !
<<< for sale !

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