| |
| 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 (1317 / mal gelesen)
|
otm Mitglied Bauingenieur
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 / zitieren --> Unities abgeben:
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
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 / zitieren --> Unities abgeben: Nur für otm
|
otm Mitglied Bauingenieur
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 / zitieren --> Unities abgeben:
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
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 / zitieren --> Unities abgeben: Nur für otm
|
otm Mitglied Bauingenieur
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 / zitieren --> Unities abgeben:
|
Ingenieur Studio HOLLAUS Mitglied CAD / CAFM / GIS Beratung-Programmierung-Schulung
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 / zitieren --> Unities abgeben: Nur für otm
|
otm Mitglied Bauingenieur
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 / zitieren --> Unities abgeben:
|