Community
AutoCAD Produktfamilie - Deutsch
Das Forum für alle Fragen zu AutoCAD, LT, Architecture, Electrical, Map 3D, Mechanical, MEP, Plant 3D, Raster Design, Web App, sowie Autodesk Civil 3D und Advance Steel.
abbrechen
Suchergebnisse werden angezeigt für 
Anzeigen  nur  | Stattdessen suchen nach 
Meintest du: 

AutoCAD: XREF eindeutig über permanente ID identifizieren?

5 ANTWORTEN 5
GELÖST
Antworten
Nachricht 1 von 6
carstenhoppe8585
358 Aufrufe, 5 Antworten

AutoCAD: XREF eindeutig über permanente ID identifizieren?

Hallo zusammen

 

gibt es bei XREF's eine eindeutige - PERMANENTE - ID, die also im DWG selbst gespeichert ist, und nicht bei Laufzeit, Öffnen der DWG, dynamisch erzeugt wird?

 

Die Entity-ID ändert sich gewissermaßen jedesmal, wenn ich die DWG neu öffne im AutoCAD.

Das hilft mir leider nicht.

 

Gib es irgendwas zu einem XREF, wo ich mit dem gleichen "String" es immer wieder identifizieren kann?

 

 

Gruß

Carsten

 

@carstenhoppe8585

 

Die Themenüberschrift wurde zum besseren Verständnis editiert
von @maximilian.kroner

Original: XREF eindeutig über permanente ID identifizieren?

5 ANTWORTEN 5
Nachricht 2 von 6

Hi,

 

nur um sicherzustellen: Eine DWG A wird als XRef in DWG B eingefügt, wo würde jetzt die ID konstant sein müssen?

Ist gefragt, ob die Einfügung in DWG B eine feste ID hätte?

Oder ist gefragt, ob in DWG A irgendetwas eindeutiges gespeichert wäre, was Sie unique macht?

 

Grundlegend hat eine Blockeinfügung einen Handle, und der ist auch, solange nicht mit Bereinigungsmaßnahmen (z.b: WBLOCK) gearbeitet wird, auch festgelegt und belbt erhalten. Also in DWG B kann ich die Referenz-Einfügung eindeutig über Handle identifizieren.

 

Beantwortet das die Frage?

 

- alfred -

------------------------------------------------------------------------------------
Alfred NESWADBA
Ingenieur Studio HOLLAUS ... www.hollaus.at ... blog.hollaus.at ... CDay 2024
------------------------------------------------------------------------------------
(not an Autodesk consultant)
Nachricht 3 von 6

Hallo Alfred

 

DWG - A  :

      DWG-B : XREF-1

      DWG-B : XREF-2

 

Ich öffne nur DWG-A und muss die Handles für die beiden XREF's ermitteln.

 

 

wenn ich DWG-A öffne (mach ich über ACC, mein .lsp), kann ich alle Entity-ID's ermitteln,also in diesem Fall 2 verschiedene ID's für 2mal DWG-B eingefügt. Logisch, dass die unterschiedlich sein müssen, weil ja 2mal eingefügt. soweit so gut.

Wenn ich das dann erneut aufrufe über meine ACC-Lösung, haben sich die beiden Entity-ID's neu generiert.

 

Jetzt die Frage: wie komme ich an den Handle für die XREF's in DWG-A ran?

 

Gruß

Carsten

Nachricht 4 von 6

Hi,

 

>> Jetzt die Frage: wie komme ich an den Handle für die XREF's in DWG-A ran?

(entget (car (entsel "XREF selektieren: ")

 

>> Wenn ich das dann erneut aufrufe über meine ACC-Lösung,

>> haben sich die beiden Entity-ID's neu generiert

Das verstehe ich nicht, wenn ich eine Block-Einfügung 5 mal selektiere, hat diese jedesmal den gleichen Handle (eben solange keine Bereinigungen/ähnliche Maßnahmen stattgefunden haben). Was machst Du denn zwischen den Aufrufen (Du schreibst "wenn ich erneut aufrufe")?


Aber vielleicht ist es nur das Wort "Entity-ID" ... was genau ist das für Dich, ich sprechen bei Eindeutigkeit von diesem Teil:

 

20171127_134506.png

 

- alfred -

------------------------------------------------------------------------------------
Alfred NESWADBA
Ingenieur Studio HOLLAUS ... www.hollaus.at ... blog.hollaus.at ... CDay 2024
------------------------------------------------------------------------------------
(not an Autodesk consultant)
Nachricht 5 von 6

ich starte es über den Consolen-Mode ( ACC) Da rufe ich ein .scr und meine DWG auf.

Bewusst bereinige ich da gar nichts.

 

Hier mal ein Auszug aus meinem Code, mit dem ich den Entity-Name ermittle. (in meinem Fall über ssname)

Also, wir reden schon von dem gleichen Wert ( Entity Name). nur dass bei jedem erneuten Start

("C:\Program Files\Autodesk\AutoCAD 2017\accoreconsole.exe" /i "%Working_Dir%\%DWG_Name%" /s "%Script_dir%\XREF_INFO.scr")

neue Entity-Namen ermitelt werden.

 

Und zwischen den Aufrufen dieses Commands  öffne ich die  DWG NICHT in AutoCAD, um irgendwas zu bereinigen.

 

 

  (while (setq tdef (tblnext "BLOCK" (not tdef)))

    (if	(= (logand (cdr (assoc 70 tdef)) 4) 4)
      (progn
	(setq XREF_NAME (cdr (assoc 2 tdef)))
	(setq
	  aws (ssget "_X" (list (cons 0 "INSERT") (cons 2 XREF_NAME)))
	)
	(princ "\n")

	(if (/= aws nil)
	  (progn


	    (setq XREF_amount (sslength aws))
	    (princ "\n" file)

	    (princ
	      (strcat
		"<XREF_IR Name=\""
		XREF_NAME
		"\" count=\""
		(itoa XREF_amount)
		"\">"
	      )
	      file
	    )

	    (setq i 0)
	    (repeat XREF_Amount

	      (setq Entity_Name (ssname aws i))
	      (setq STR_Entity_Name
		     (substr
		       (vl-prin1-to-string (ssname aws i))
		       15
		       7
		     )
	      )

 

Ich habe inzwischen den Befehl "handent" gefunden, der basierend auf einem Handle (der wohl permanent sein soll, solange man nicht wblock benutzt) den Entitynamen ermittelt.

 

Aber nirgends ist beschrieben, wie ich in LISP an diesen Handle rankomme, den ich an handent übergebe. Der Weg zurück ware für mich interessant.

 

Gruß

Carsten

Nachricht 6 von 6

Hi,

 

>> wie ich in LISP an diesen Handle rankomme

Wenn ich mich nicht vertippe/"verklammere":

 

(cdr (assoc 5 (entget (car (entsel)))))

- alfred -

------------------------------------------------------------------------------------
Alfred NESWADBA
Ingenieur Studio HOLLAUS ... www.hollaus.at ... blog.hollaus.at ... CDay 2024
------------------------------------------------------------------------------------
(not an Autodesk consultant)

Sie finden nicht, was Sie suchen? Fragen Sie die Community oder teilen Sie Ihr Wissen mit anderen.

In Foren veröffentlichen  

Autodesk Design & Make Report