| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
| |
| PNY WIRD VON NVIDIA ZUM HÄNDLER DES JAHRES GEWÄHLT, eine Pressemitteilung
|
Autor
|
Thema: Objekte mit XDATA finden (1824 mal gelesen)
|
GüSo Mitglied Elektrotechniker
Beiträge: 141 Registriert: 22.01.2009 Windows 7 Professional SP1, AutoCAD 2011, Office 2013 Windows 10, Office2019
|
erstellt am: 11. Jan. 2015 15:31 <-- editieren / zitieren --> Unities abgeben:
Hallo allerseits! In den vergangenen Tagen habe ich mich in die Thematik XDATA vertieft. Meine Frage, auf die ich noch keine Antwort fand ist: Wie kann ich verläßlich feststellen, ob ein ausgewähltes Objekt über XDATA verfügt oder nicht? Meine Vorstellungen gingen zunächst in die Richtung, daß es eine Methode bei den Objekten ähnlich der bei Blöcken ".HasAttributes" gibt. Das ist ja aber nicht der Fall. MfG Günter ------------------ MfG Günter Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CAD-Huebner Ehrenmitglied V.I.P. h.c. Verm.- Ing., ATC-Trainer
Beiträge: 9803 Registriert: 01.12.2003 AutoCAD 2.5 - 2022, LDD, MDT, RD, ADT, Civil Inventor AIP 4-11, 2008 -2022 Win 10
|
erstellt am: 11. Jan. 2015 16:24 <-- editieren / zitieren --> Unities abgeben: Nur für GüSo
|
KlaK Ehrenmitglied V.I.P. h.c. Dipl. Ing. Vermessung, CAD- und Netz-Admin
Beiträge: 2799 Registriert: 02.05.2006 AutoCAD LandDesktop R2 bis 2004 Civil 3D 2005 - 2022 Plateia, Canalis Visual Basic
|
erstellt am: 11. Jan. 2015 17:57 <-- editieren / zitieren --> Unities abgeben: Nur für GüSo
Nachdem es hier anscheinend um VBA gehen soll, kannst Du Dir mal die GetXData Methode ansehen Damit kannst Du die Daten abfragen (object.GetXData AppName, XDataType, XDataValue) Wenn es aber keine eigene Applikation ist und Du keine weiteren Infos hast könnte die Interpretation der Werte Schwierigkeiten bereiten. Hatte mal eine Auswertung der XData von Canalis geschrieben, aber nachdem ich mir die "übersetzten" Werte über die Applikation anzeigen konnte war das relativ einfach. Kennst Du Dich mit dem VLisp - Editor aus? Dort könntest Du Dir auch die XData der Objekte einfach anzeigen lassen. Grüße Klaus Edit: Zum Abfragen der XData auszug aus der Hilfe:
Code: Sub Ch10_ViewXData() ' Suchen der im vorherigen Beispiel erstellten Auswahl Dim sset As Object Set sset = ThisDrawing.SelectionSets.Item("SS1") ' Definieren der XDaten-Variablen zum Erfassen der XDaten-Informationen Dim xdataType As Variant Dim xdata As Variant Dim xd As Variant 'Definieren des Indexzählers Dim xdi As Integer xdi = 0 ' Durchlaufen der Objekte im Auswahlsatz ' und Abrufen der XDaten für das Objekt Dim msgstr As String Dim appName As String Dim ent As AcadEntity appName = "MY_APP" For Each ent In sset msgstr = "" xdi = 0 ' Abrufen von XDatentyp und -wert für appName ent.GetXData appName, xdataType, xdata 'Wenn die Variable xdataType nicht initialisiert wurde, dann ' waren keine appName-XDaten für dieses Element abrufbar If VarType(xdataType) <> vbEmpty Then For Each xd In xdata msgstr = msgstr & vbCrLf & xdataType(xdi) _ & ": " & xd xdi = xdi + 1 Next xd End If ' Hat die Variable msgstr den Wert NULL, waren keine XDaten vorhanden If msgstr = "" Then msgstr = vbCrLf & "NONE" MsgBox appName & " xdata on " & ent.ObjectName & _ ":" & vbCrLf & msgstr Next ent End Sub
Ist Dir die Application nicht bekannt setzt Du für appName = "" ein, dann erhältst Du alle Daten [Diese Nachricht wurde von KlaK am 11. Jan. 2015 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
GüSo Mitglied Elektrotechniker
Beiträge: 141 Registriert: 22.01.2009 Windows 7 Professional SP1, AutoCAD 2011, Office 2013 Windows 10, Office2019
|
erstellt am: 12. Jan. 2015 17:53 <-- editieren / zitieren --> Unities abgeben:
Hallo Klaus, Ich kenne mich mit dem VLISP-Editor nicht aus. In deinem Beispiel steckt aber, was ich suchte. Zumindest denke ich, daß ich damit meine Vorstellungen umsetzen kann. Das wars was ich suchte: If VarType(xdataType) <> vbEmpty Then For Each xd In xdata msgstr = msgstr & vbCrLf & xdataType(xdi) _ & ": " & xd xdi = xdi + 1 Next xd End If Auf die Idee, die XDATAtype auf vbempty zu prüfen bin ich nicht gekommen. Ich werde das morgen mal ausprobieren. Nochmal zum Thema Vlisp-Editor. Wie ruft man den auf und wo finde ich die Einsteigerhilfe? Ich nehme mal an, das dieser auch Bestandteil von AutoCAD ist. Oder? MfG Günter ------------------ MfG Günter 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
Beiträge: 2799 Registriert: 02.05.2006 AutoCAD LandDesktop R2 bis 2004 Civil 3D 2005 - 2022 Plateia, Canalis Visual Basic
|
erstellt am: 12. Jan. 2015 18:09 <-- editieren / zitieren --> Unities abgeben: Nur für GüSo
Hallo Günther, Aufruf einfach über die Befehlszeile: VLisp Über Ansicht - Zeichnungsdatenbank durchsuchen .. kannst Du Dir dann die Objekte anzeigen lassen Über F1 kann man natürlich in der Hilfe fündig werden allerdings eine gute Erklärung zum Editor habe ich dort noch nicht gefunden ... Grüße Klaus Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
GüSo Mitglied Elektrotechniker
Beiträge: 141 Registriert: 22.01.2009 Windows 7 Professional SP1, AutoCAD 2011, Office 2013 Windows 10, Office2019
|
erstellt am: 13. Jan. 2015 18:29 <-- editieren / zitieren --> Unities abgeben:
Hallo Klaus, ich habe das heute mal ausprobiert. Die Variante mit der Zuweisung der XDATA mittels Objekt.GetXDATA, ..... und anschließender Überprüfung auf vbEmpty ist gut. Das trifft meine Vorstellungen. Nochmals Danke für die Hilfe. Gruß Günter ------------------ MfG Günter Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |