Hot News:

Unser Angebot:

  Foren auf CAD.de (alle Foren)
  AutoCAD VBA
  Zeichenreihenfolge SortensTable Objekt ganz nach hinten

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:  Zeichenreihenfolge SortensTable Objekt ganz nach hinten (1177 mal gelesen)
otm
Mitglied
Bauingenieur


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

Beiträge: 167
Registriert: 26.08.2009

MS Win 10
AutoCAD Civil 3D 2023
VBA Enabler 2023
MS Access Database Enginge X64
MSO 365 (64bit)

erstellt am: 06. Dez. 2016 16: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

Liebes Forum,

ich versuche ein ACAD-Objekt (meist PL) mit einem Makro in der Zeichenreihenfolge ganz nach hinten zu stellen.
Meine Suche im Forum und in der Hilfe hat drei Ergebnisse geliefert, aber alle bringen mir die Fehlermeldung "Fehler beim Kompilieren: Funktion oder Schnittstelle kann nur eingeschränkt verwendet werden oder verwendet einen Typ der Automatisierung, der von VB nicht unterstützt wird".

Hier der Code:

Code:

Public Sub MoveObj_to_Bottom(ObjectACAD As AcadObject)
'Verschiebt EIN ACAD-Objekt in der Anzeigenfolge ganz nach unten
'Get an extension dictionary and, if necessary, add a SortentsTable object
    Dim arrx As AcadObject
    Dim ObjID As Long
    Dim sentityObj As Object
   
    ' Get an extension dictionary and, if necessary, add a SortentsTable object
    Dim eDictionary As Object
    Set eDictionary = ThisDrawing.ModelSpace.GetExtensionDictionary
   
    ' Prevent failed GetObject calls from throwing an exception
    On Error Resume Next
    sentityObj = Nothing
    Set sentityObj = eDictionary.GetObject("ACAD_SORTENTS")
    On Error GoTo 0
    If sentityObj Is Nothing Then
        ' No SortentsTable object, so add one
        Set sentityObj = eDictionary.AddObject("ACAD_SORTENTS", "AcDbSortentsTable")
    End If
   
    ObjID = ObjectACAD.ObjectID  'plineObj.ObjectID
 
    Dim varObject As AcadObject
    Set varObject = ThisDrawing.ObjectIdToObject(ObjID)
   
    Set arrx = ObjectACAD 'varObject
   
    'Move the Object to the bottom
    sentityObj.MoveToBottom arrx
    AcadApplication.Update
    Err.Clear
     
End Sub


Es passieren Hänger bei der Zeile:
    Set sentityObj = eDictionary.GetObject("ACAD_SORTENTS")

Und er hängt sich auf bei der Zeile ObjID = ObjectACAD.ObjectID.

Woran kann das liegen?

------------------
Grüße aus München
Christian

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

Ingenieur Studio HOLLAUS
Mitglied
CAD / CAFM / GIS Beratung-Programmierung-Schulung


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

Beiträge: 1049
Registriert: 06.11.2008

Autocad 2 bis Autocad 2020 (+Map3D, +Civil3D, +Infraworks)
RKV .... CAFM+mehr
HMap ... Vermessung und Verkehr
OoC .... Raumplanung
CBox ... Tools für AutoCAD und BricsCAD (kostenfrei)

erstellt am: 07. Dez. 2016 09: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 otm 10 Unities + Antwort hilfreich


20161207_0859.png

 
Wenn wir bei dieser Vorlage bleiben:
http://help.autodesk.com/view/ACD/2016/ENU/?guid=GUID-5FAD8F50-0876-4EE8-A95F-CFF9F51C5197
...dann muss an die Funktion sentityObj.MoveToBottom ein Array übergeben werden, kein einzelnes Objekt (ohne den gezeigten Code von Dir angesehen zu haben, vermute ich darin das Problem).

------------------


www.cars4fun.at

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

otm
Mitglied
Bauingenieur


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

Beiträge: 167
Registriert: 26.08.2009

MS Win 10
AutoCAD Civil 3D 2023
VBA Enabler 2023
MS Access Database Enginge X64
MSO 365 (64bit)

erstellt am: 07. Dez. 2016 12:00    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

Ich habe mal das Beispiel für ObjectIDToObject aus der ACAD-Hilfe kopiert und versucht es (ohne Veränderung) auszuführen.

Code:

Sub Example_ObjectIDToObject()
    ' This example creates a spline in model space, and returns the
    ' handle for the spline. Then the spline is returned from the handle and colored.
   
    ' Create the spline
    Dim splineObj As AcadSpline
    Dim startTan(0 To 2) As Double
    Dim endTan(0 To 2) As Double
    Dim fitPoints(0 To 8) As Double
   
    startTan(0) = 0.5: startTan(1) = 0.5: startTan(2) = 0
    endTan(0) = 0.5: endTan(1) = 0.5: endTan(2) = 0
    fitPoints(0) = 1: fitPoints(1) = 1: fitPoints(2) = 0
    fitPoints(3) = 5: fitPoints(4) = 5: fitPoints(5) = 0
    fitPoints(6) = 10: fitPoints(7) = 0: fitPoints(8) = 0
    Set splineObj = ThisDrawing.ModelSpace.AddSpline(fitPoints, startTan, endTan)
   
    ZoomAll
   
    ' Find the objectID of the spline
    Dim objectID As Long
    objectID = splineObj.objectID
    MsgBox "The objectID of the Spline is: " & splineObj.objectID, , "ObjectIDToObject Example"
       
    ' Find an object from a given objectID
    Dim tempObj As AcadObject
    Set tempObj = ThisDrawing.ObjectIdToObject(objectID)

    ' Now use the newly initialized object variable to color the object
    Dim color As AcadAcCmColor
    Set color = AcadApplication.GetInterfaceObject("AutoCAD.AcCmColor.19")
    Call color.SetRGB(80, 100, 244)
   
    tempObj.TrueColor = color
   
    ThisDrawing.Regen True
    MsgBox "The Spline is now blue.", , "ObjectIDToObject Example"
   
End Sub


Auch hier bekomme ich die Fehlermeldung: 'Fehler beim Kompilieren: Funktion oder Schnittstelle kann nur eingeschränkt verwendet werden oder verwendet einen Typ der Automatisierung, der von VB nicht unterstützt wird.'

Das Sub bleibt mit obiger Fehlermeldung stehen bei
objectID = splineObj.objectID

Kann es sein, dass mir hier ein Verweis auf irgendeine Bibliothek fehlt?

------------------
Grüße aus München
Christian

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

Ingenieur Studio HOLLAUS
Mitglied
CAD / CAFM / GIS Beratung-Programmierung-Schulung


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

Beiträge: 1049
Registriert: 06.11.2008

Autocad 2 bis Autocad 2020 (+Map3D, +Civil3D, +Infraworks)
RKV .... CAFM+mehr
HMap ... Vermessung und Verkehr
OoC .... Raumplanung
CBox ... Tools für AutoCAD und BricsCAD (kostenfrei)

erstellt am: 07. Dez. 2016 13:04    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 otm 10 Unities + Antwort hilfreich

Bitte dieses:
  Dim objectID As Long
so korrigieren:
  Dim objectID As LongPtr

------------------


www.cars4fun.at

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

otm
Mitglied
Bauingenieur


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

Beiträge: 167
Registriert: 26.08.2009

MS Win 10
AutoCAD Civil 3D 2023
VBA Enabler 2023
MS Access Database Enginge X64
MSO 365 (64bit)

erstellt am: 07. Dez. 2016 13:24    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

Da bekomme ich die Fehlermeldung "Benutzerdefinierter Typ nicht definiert".

------------------
Grüße aus München
Christian

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

Ingenieur Studio HOLLAUS
Mitglied
CAD / CAFM / GIS Beratung-Programmierung-Schulung


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

Beiträge: 1049
Registriert: 06.11.2008

Autocad 2 bis Autocad 2020 (+Map3D, +Civil3D, +Infraworks)
RKV .... CAFM+mehr
HMap ... Vermessung und Verkehr
OoC .... Raumplanung
CBox ... Tools für AutoCAD und BricsCAD (kostenfrei)

erstellt am: 07. Dez. 2016 13:35    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 otm 10 Unities + Antwort hilfreich

Dann hängt es möglicherweise daran, dass VBA für AutoCAD 2013 noch 32bit ist und meine Testumgebung 64bit, ich kann aber nur bis 2014 zurück und da würde das funktionieren. Ich bin damit leider out.

------------------


www.cars4fun.at

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

otm
Mitglied
Bauingenieur


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

Beiträge: 167
Registriert: 26.08.2009

MS Win 10
AutoCAD Civil 3D 2023
VBA Enabler 2023
MS Access Database Enginge X64
MSO 365 (64bit)

erstellt am: 07. Dez. 2016 13: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

Trotzdem Danke.
Vielleicht müssen wir doch auf 2016 umsteigen.

------------------
Grüße aus München
Christian

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