Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  AutoCAD ObjectARX und .NET
  Position eines Blockes in Xref 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
Autor Thema:  Position eines Blockes in Xref finden (1043 mal gelesen)
yamaha
Mitglied
Konstrukteur


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

Beiträge: 374
Registriert: 19.05.2004

Autocad/Inventor 2020, Windows 10 64Bit

erstellt am: 17. Feb. 2017 22:05    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,

ich habe eine Haupt-DWG-Datei in der mehrere DWG-Dateien als Xref eingebunden sind.

Jede dieser eingebundenen DWG-Dateien sind ein Fließbild einer Anlage.
Fließbild = Rohrleitungsplan
Auf jedem DWG sind Pfeile für Ein-und Ausgänge der Rohre auf andere Fließbilder.
Diese Pfeile sind Blöcke mit Attributen.
Jeder Pfeil hat eine eindeutige Kennung woher er kommt und wohin er geht.

Ich habe nun die Idee das ich in der Haupt-DWG Datei
einen Pfeil auswähle und ein kleines Programm mir zeigt wo sich der
dazugehörige Gegen-Pfeil sich befindet.

Ich habe es nun schon geschafft, mit "objDoc.Editor.GetNestedEntity"
ein einzelnes Objekt in dem Xref auszuwählen zu können.
Leider funktioniert das für alle Objekte.
Ich kann die Auswahl nicht auf ganze Blöcke beschränken.

Das wäre meine erste Frage, ob hierzu jemand einen Tip hat,
wie man die Auswahl so einstellen kann, das ich
nur ganze Blöcke in einem X-Ref wählen kann.

Da ich mir derzeit nicht anders helfen konnte,
wähle ich derzeit genau ein spezifisches Attribut eines Blockes
und suche dann nach dem Wert der in diesem Attribut steht.

Code:
Dim nid As ObjectId = objDoc.Editor.GetNestedEntity(vbLf & "Select a Object: ").ObjectId
Dim obj As DBObject = tr.GetObject(nid, OpenMode.ForRead)
Select Case obj.ObjectId.ObjectClass.DxfName
    Case "ATTRIB"
        objAttributeRef = TryCast(obj, AttributeReference)
        objPuffer = tr.GetObject(objAttributeRef.BlockId, OpenMode.ForRead)
        If TypeOf objPuffer Is BlockTableRecord Then
            objBlockTableRecord = objPuffer
            strSuchtext = objAttributeRef.TextString

Code:
Dim objDatabaseXref As Database
Dim objXrefGraph As XrefGraph = objDatabase.GetHostDwgXrefGraph(True)
Dim objXrefGraphNode As XrefGraphNode
For intNr As Integer = 0 To objXrefGraph.NumNodes - 1
    objXrefGraphNode = objXrefGraph.GetXrefNode(intNr)
    objDatabaseXref = objXrefGraphNode.Database



Auch das funktioniert soweit, nur das ich es nicht an die Position
des Attributes bzw. des Blockes in der Haupt-DWG komme.

Ich hoffe ich habe mich nicht zu kompliziert ausgedrückt.

Weiß jemand wie ich da weiter komme ?

Vielen Dank für eure Hilfe

------------------
Gruß Jörn

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

Brischke
Moderator
CAD on demand GmbH




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

Beiträge: 4171
Registriert: 17.05.2001

AutoCAD 20XX, defun-tools

erstellt am: 18. Feb. 2017 09:14    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 yamaha 10 Unities + Antwort hilfreich

... schaue dir mal die vollständige Rückgabe vom GetNestedEntity(..) an, Da bekommst du auch eine Liste der vom gepickten Objekt ausgehend übergeordneten Elemente. Also kannst du dich durch die Liste durchbewegen und schauen, ob das gepickte Element innerhalb der von dir gesuchten Blockreferenz verschachtelt ist.

Grüße!
Holger

------------------
Holger Brischke
CAD on demand GmbH
Individuelle Lösungen von Heute auf Morgen.


defun-tools Das Download-Portal für AutoCAD-Zusatzprogramme!


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

yamaha
Mitglied
Konstrukteur


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

Beiträge: 374
Registriert: 19.05.2004

Autocad/Inventor 2020, Windows 10 64Bit

erstellt am: 18. Feb. 2017 14:32    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 Holger,

also so ganz komme ich nicht klar.

Über "GetContainer" bekomme ich nun das komplette Xref,
in dem sich das ausgewählte Objekt befindet.
Das hilft nicht wirklich.
Habe schon viel gegoogelt, scheint ja nicht so einfach mit
den Xref's zu sein.

Wenn man zumindest den Einfügepunkte eines X-Refs abfragen könnte,
wäre mir ja schon geholfen.
Aber alleine das habe ich nicht gefunden.

Schade.

------------------
Gruß Jörn

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

Brischke
Moderator
CAD on demand GmbH




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

Beiträge: 4171
Registriert: 17.05.2001

AutoCAD 20XX, defun-tools

erstellt am: 18. Feb. 2017 18: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 yamaha 10 Unities + Antwort hilfreich

vielleicht googelst du falsch?
Xref ist zunächst einfach nur eine Blockdefinition bzw Referenz, die eine Abhängigkeit von einer externen Zeichnung hat. Bei der Programmierung kannst du also identisch wie beim Handling der Blöcke vorgehen.
Bekommst du das AutoCAD-Magazin? Darin habe ich in der Ausgabe 02/2013 ein Tool zur Suche von Text in Xrefs veröffentlicht, allerdings c#.Net, SourceCode ist auf den CD's enthalten.

Grüße!
Holger

------------------
Holger Brischke
CAD on demand GmbH
Individuelle Lösungen von Heute auf Morgen.


defun-tools Das Download-Portal für AutoCAD-Zusatzprogramme!


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

yamaha
Mitglied
Konstrukteur


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

Beiträge: 374
Registriert: 19.05.2004

Autocad/Inventor 2020, Windows 10 64Bit

erstellt am: 19. Feb. 2017 14:30    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 Holger,

Vielen Dank für deine Hinweise.

Wer das Magazin mit CD noch hat, kann mir das gerne per PM anbieten.

Gruß Jörn

------------------
Gruß Jörn

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