| |
 | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
| |
 | PNY: der unverzichtbare Partner für umfassende KI-Lösungen von Workstations bis zu Edge Computing und KI-Cluster-Bereitstellung, eine Pressemitteilung
|
Autor
|
Thema: Script-fähige XREF-Pfad-Binden-Routine (579 mal gelesen)
|
CAD-Tötti Mitglied
 
 Beiträge: 116 Registriert: 27.09.2003 ACAD 2009
|
erstellt am: 02. Okt. 2003 21:22 <-- editieren / zitieren --> Unities abgeben:         
Hi, ich möchte foldendes Problem lösen: ich brauche eine Scriptfähige Lisp-Routine, die XREFs mit der Option Einfügen bindet. Dabei sollen geclipte XREFS hinterher als geclipte Blöcke erhalten bleiben und nicht einfach verschwinden. Hat jemand von Euch eine gute Idee für einen LISP-Befehl ? Danke, CAD-Tötti :-)
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADwiesel Moderator CAD4FM UG
    

 Beiträge: 1998 Registriert: 05.09.2000 AutoCAD, Bricscad Wir machen das Mögliche unmöglich
|
erstellt am: 05. Okt. 2003 12:52 <-- editieren / zitieren --> Unities abgeben:          Nur für CAD-Tötti
wasse isse damidde? (defun C:Find-xref (/ f EARX_BTAA enams xbpath) (setq EARX_BTAA (tblnext "BLOCK" T)) (while (/= EARX_BTAA nil) (setq f (cdr (assoc 70 EARX_BTAA)) ) ;_ ende von setq (if (= 4 (logand f 4)) (if (not (member (cdr (assoc -2 EARX_BTAA)) enams)) (setq enams (cons (cdr (assoc -2 EARX_BTAA)) enams) xbpath(cons (cdr (assoc 1 EARX_BTAA)) xbpath)) ) ;_ ende von if ) ;_ ende von if (setq EARX_BTAA (tblnext "BLOCK")) ) ;_ end of while (cons enams xbpath) ) ;_ ende von defun (defun M:xeinf (/ blk_list blk_data blk_name blk_pfad elem_li pfad_list dummy filter satz ins_list n ent_name ent_data p x y w ins ) (setq blk_list (list)) (setq blk_data (tblnext "BLOCK" t)) (while blk_data (setq blk_name (cdr (assoc 2 blk_data))) (setq blk_pfad (cdr (assoc 1 blk_data))) (if (and (/= (boole 1 (cdr (assoc 70 blk_data)) 4) 0) (not (equal blk_pfad "" ) ;_ ende von equal ) ;_ ende von not ) ;_ ende von and (progn (setq blk_data (entget (tblobjname "BLOCK" blk_name))) (setq pfad_list blk_pfad) (cond ((/= (setq dummy (findfile pfad_list)) nil) (setq filter (list (cons 0 "INSERT") (cons 2 blk_name))) (setq satz (ssget "_x" filter)) (if satz (progn (setq ins_list (list)) (setq n (1- (sslength satz))) (repeat (sslength satz) (setq ent_name (ssname satz n)) (setq ent_data (entget ent_name)) (setq p (cdr (assoc 10 ent_data))) (setq x (cdr (assoc 41 ent_data))) (setq y (cdr (assoc 42 ent_data))) (setq w (cdr (assoc 50 ent_data))) (setq ins_list (cons (list dummy p x y w) ins_list)) (setq n (1- n)) ) ;_ ende von repeat (command "-xref" "l" (cdr (assoc 2 blk_data))) (foreach ins ins_list (command "_insert" (nth 0 ins) (nth 1 ins) (nth 2 ins) (nth 3 ins) (nth 4 ins) ) ;_ ende von command (setq elem_li (cons (entlast) elem_li)) ) ;_ ende von foreach ) ;_ ende von progn ) ;_ ende von if ) ) ;_ ende von cond ) ;_ ende von progn ) ;_ ende von if (setq blk_data (tblnext "BLOCK")) ) ;_ ende von while elem_li ) ;_ ende von defun ------------------ Gruß CADwiesel Besucht uns im CHAT
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |

| |
CAD-Tötti Mitglied
 
 Beiträge: 116 Registriert: 27.09.2003 ACAD 2009
|
erstellt am: 05. Okt. 2003 14:50 <-- editieren / zitieren --> Unities abgeben:         
Dankeschön, der war schon mal sehr gut, aber :-) : a) warum (defun M:xeinf (/ blk_list blk_data blk_name blk_pfad" und nicht (defun C:xeinf (/ blk_list blk_data blk_name blk_pfad ??? b) gedreht eingefügte XREFs dreht die Routine herum c) geclipte XREFs "entclippt" die Routine, und das war genau der Punkt :-). Hat da jemand noch die Patentlösung für ? Grüße, CAD-Tötti Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |