Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  AutoCAD VBA
  Objekte mit XDATA finden

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
  
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


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

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 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 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



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

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 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 GüSo 10 Unities + Antwort hilfreich

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: 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 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 GüSo 10 Unities + Antwort hilfreich

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


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

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 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,
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



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: 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 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 GüSo 10 Unities + Antwort hilfreich

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


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

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 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,

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

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)2024 CAD.de | Impressum | Datenschutz