Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de
  AutoCAD VBA
  Element markieren (ObjektID) bekannt

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 präsentiert die PRO Elite™ High Endurance microSD-Flash-Speicherkarten für Videoüberwachung und kontinuierliche Aufzeichnung, eine Pressemitteilung
Autor Thema:  Element markieren (ObjektID) bekannt (2207 mal gelesen)
MartinM
Mitglied



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

Beiträge: 122
Registriert: 27.11.2001

erstellt am: 30. Jun. 2004 17:11    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 Zusammen,

wie kann ich in meiner aktuellen Sitzung ein Element markieren (auswählen), von dem ich die ObjektID kenne ?
Das müsste doch über einen Selektion Set gehen. Die AddItem Methode schlug bis jetzt fehl.
Kann mir jemand helfen ?

Viele Grüsse

Martin

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

RoSiNiNo
Mitglied
Konstrukteur


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

Beiträge: 1126
Registriert: 09.10.2002

Acad 2011-deutsch, Express Tools
3ds Max 2010
Win 7-Professional
HP Workstation Z400, 6GB
GeForce GTX 470

erstellt am: 01. Jul. 2004 08:18    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 MartinM 10 Unities + Antwort hilfreich

Hallo Martin,
kannst du vielleicht genauer erklären was du machen möchtest.
Willst du z.B. das Objekt einfach mit .Highlight hervorheben oder möchtest du das Objekt nach Beendigung deiner Prozedur das Objekt mit z.b. Wahl;Vorige; auswählen.

------------------
Roland

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

MartinM
Mitglied



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

Beiträge: 122
Registriert: 27.11.2001

erstellt am: 01. Jul. 2004 08:34    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 Roland,

danke für deine Antwort. Gerne erläutere ich  mein Problem ausführlicher: Ich bekomme aus einer anderen Prozedur *) ein Array mit den ObjektID´s von diversen AutoCAD Elementen der aktuellen Sitzung. Nun möchte ich diese AutoCAD-Elemente markieren (= ich möchte die Griffe sehen).
Ich denke eine Möglichkeit wäre, die gesamte Zeichnung (Element für Element) durchzugehen, und jeweils die ObjektIDs vergleichen; das hört sich nicht nur unelegant an, ich glaube es ist es auch.

Meine Hoffnung ist es, die Elemente direkt anzusprechen.

Viele Grüsse

Martin

*) Für diejenigen, die es genauer interessiert: Ich arbeite mit Map und habe da manchmal das Problem, das Elemente im Speichersatz enthalten sind, deren Identität (Lage) ich nicht kenne. Die Map-Grundfunktionalität "Speichersatz anzeigen" hilft mir dabei nicht, weil die Zeichnungen zum Teil recht groß sind und die Elemente dabei "nur gehighlightet" werden.
VBA gibt mit Objekt.SaveSet.GetObjects(kQueriedExisted) ein Array dieser Elemente mit den ObjektID´s zurück.

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

RoSiNiNo
Mitglied
Konstrukteur


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

Beiträge: 1126
Registriert: 09.10.2002

Acad 2011-deutsch, Express Tools
3ds Max 2010
Win 7-Professional
HP Workstation Z400, 6GB
GeForce GTX 470

erstellt am: 01. Jul. 2004 08: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 MartinM 10 Unities + Antwort hilfreich

OK, entweder du verwendest die Methode .Highlight für alle Objekte, dan hast du aber keine Griffe. Mit VBA ist es leider nicht möglich die Griffe einzuschalten.
Ich habe mir aber zwei Funktionen geschrieben (der Lösungsansatz kommt von Bernd Cuder, Danke an dieser Stelle) mit denen du die Objekte in einen Auswahlsatz schreibst den du anschließend in ACAD auswählen kannst (also mit dem Befehl WAHL).
Code:
Sub RSNNSSSetXdata(Object As AcadEntity)
   
    Dim DataType(1) As Integer
    Dim Data(1) As Variant
   
    On Error GoTo Err_Control
    DataType(0) = 1001: Data(0) = "RSNN_Selection"
    DataType(1) = 1000: Data(1) = "Auswahl"
   
    Object.SetXData DataType, Data

Exit_Here:
    Exit Sub
Err_Control:
    Err.Clear
    Resume Exit_Here
   
End Sub

Sub RSNNSSDelXdataAll()
   
    Dim objSelSet As AcadSelectionSet
    Dim Object As AcadEntity
    Dim varData(0) As Variant
    Dim intData(0) As Integer
    Dim varDataS(0) As Variant
    Dim intDataS(0) As Integer
       
    On Error GoTo Err_Control
    Set objSelSet = ThisDrawing.PickfirstSelectionSet
    'objSelSet.Clear
    intDataS(0) = 1001
    varDataS(0) = "RSNN_Selection"
    'intDataS(1) = 1000
    'varDataS(1) = "Auswahl"
   
    objSelSet.Select acSelectionSetAll, FilterType:=intDataS, FilterData:=varDataS
   
    If objSelSet.Count = 0 Then GoTo Exit_Here
   
    intData(0) = 1001
    varData(0) = "RSNN_Selection"
    For Each Object In objSelSet
        Object.SetXData intData, varData
    Next Object
   
Exit_Here:
    objSelSet.Delete
    Exit Sub
Err_Control:
    Err.Clear
    Resume Exit_Here
   
End Sub


Mit RSNNSSSetXdata setzt du XDatas und mit RSNNSSDelXdataAll löscht du alle XDatas. Dadurch kannst du dann alle Objekte auf einmal wählen und die Griffe einschalten.

Die Vorgehensweise ist dann recht einfach.

Code:
    Dim tempObj As AcadObject
    RSNNSSDelXdataAll 'am Anfang alle eventuell vorhandenen Daten löschen
    Set tempObj = ThisDrawing.ObjectIdToObject(objectID)
    RSNNSSSetXdata (tempObj)  'Objekt zur späteren Auswahl hinzufügen

    RSNNSSDelXdataAll 'Objekte nun für Auswahl in Acad bereitstellen


------------------
Roland

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

MartinM
Mitglied



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

Beiträge: 122
Registriert: 27.11.2001

erstellt am: 01. Jul. 2004 13:44    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 Roland,

danke für deine Antwort. Das man einen Selection Set nicht "aktivieren" (Griffe sichtbar) kann, ist schade. Ich habe deinen (Bernds) Ansatz aufgenommen und eine Eigenschaft (Farbe) der Daten des Selection Sets verändert, sodaß ich anschließend visuell bzw. über die Schnellauswahl meinen Auswahlsatz erkennen kann !

Danke und viele Grüsse

Martin

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

RoSiNiNo
Mitglied
Konstrukteur


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

Beiträge: 1126
Registriert: 09.10.2002

Acad 2011-deutsch, Express Tools
3ds Max 2010
Win 7-Professional
HP Workstation Z400, 6GB
GeForce GTX 470

erstellt am: 01. Jul. 2004 15:17    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 MartinM 10 Unities + Antwort hilfreich

Wenn du die Farbe änderst brauchst du den ganzen Code von oben nicht.
Du könntst aber mit SendCommand folgendes versuchen.
Code:
ThisDrawing.SendCommand "_select" & vbCr & "_p" & vbCr

Stell vorigen Code ans Ende der Prozedur.

------------------
Roland

[Diese Nachricht wurde von RoSiNiNo am 01. Jul. 2004 editiert.]

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

MartinM
Mitglied



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

Beiträge: 122
Registriert: 27.11.2001

erstellt am: 05. Jul. 2004 11:34    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 Roland,

die Realisierung über XDATEN hat mir nicht so gut gefallen, weil ich denke, dass einige das anschließende Löschen dieser XDATEN unterlassen würden. Deshalb habe ich der Farbänderung den Vorrang gegeben.
Deine Idee mit dem SendCommand funktioniert leider nicht, denn es wird die Objektwahl im Selection Set offensichtlich nicht berücksichtigt.
Ich habe jetzt aber noch eine andere Möglichkeit gefunden, ohne die Daten zu "manipulieren":
ThisDrawing.Wblock Dateiname, Selection Set
...schreibt den Inhalt des Auswahlsatzes in eine DWG.
Das ganze werde ich jetzt mal mit den Benutzern besprechen und demokratisch entscheiden lassen, welches Verfahren wir anwenden.

Viele Grüsse

Martin

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

RoSiNiNo
Mitglied
Konstrukteur


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

Beiträge: 1126
Registriert: 09.10.2002

Acad 2011-deutsch, Express Tools
3ds Max 2010
Win 7-Professional
HP Workstation Z400, 6GB
GeForce GTX 470

erstellt am: 05. Jul. 2004 12:06    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 MartinM 10 Unities + Antwort hilfreich

Hi Maritn,
ich glaub da hast du etwas falsch verstanden, der SendCommand funktioniert nur im zusammenhang mit den XDatas und wenn du sie wie oben beschrieben wieder löschst. Also versuch es doch noch einmal so wie oben beschrieben und häng den SendCommand dran. Wenn es trotzdem nicht funtionieren sollte erklär ich es dir gerne noch einmal.

------------------
Roland

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

MartinM
Mitglied



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

Beiträge: 122
Registriert: 27.11.2001

erstellt am: 05. Jul. 2004 13:07    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 Roland,

ja, so funktioniert es: Klasse, wie ich es mir ursprünglich gewünscht hatte. Da kann ich die Farbänderung bzw. den Wblock vergessen..

Vielen Dank und viele Grüsse

Martin

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