寒风 发表于 2005-1-26 10:10:00

请求帮忙:把参考图替换成相应的块

哪位朋友给我写一个小程序,是这样的:在一个图形文件中有若干个参考图,现在要把这个参考图以块的方式存在,所以要把图中的所有参数考图都改变成块,但是保留与参数图位置及大小,插入点。

meflying 发表于 2005-1-26 11:18:00

(defun c:test( / ss i ent ents pt blkname blk_lst)
   (setq ss (ssget "x" '((0 . "INSERT"))))
   (setq i 0)
   (repeat (sslength ss)
       (setq ent (ssname ss i))
       (setq ents (entget ent))
       (setq blkname (cdr (assoc 2 ents)))
       (if (not (assoc blkname blk_lst))
         (progn
(setq pt (cdr (assoc 10 (tblsearch "BLOCK" blkname))))
(setq blk_lst (append blk_lst (list (list blkname pt))))
         )
       )
       (setq i (1+ i))
   )
   (mapcar 'Getent (mapcar 'car blk_lst) (mapcar 'cadr blk_lst))
   (princ)
)
(defun Getent(blkname pt / ent ent_lst)
   (setq ent (tblobjname "BLOCK" blkname))
   (while (setq ent (entnext ent))
       (setq ent_lst (append ent_lst (list ent)))
   )
   (Makeblk ent_lst pt blkName)   
)
(defun Makeblk(ent_lst pt blkName)
   (entmake (list
             '(0 . "BLOCK")
             (cons 2 blkname)
             '(70 . 0)
             (cons 10 pt)))
   (mapcar '(lambda(e) (entmake (entget e))) ent_lst)
   (entmake '((0 . "ENDBLK")))
)

寒风 发表于 2005-1-26 11:38:00

不行啊,我要的是,用相同的文件以块的形式插进来,然后替换掉相应的参考图。但要保持相同的大小与插入点。

meflying 发表于 2005-1-26 11:42:00

不明白,你传个图上来说明一下问题吧

寒风 发表于 2005-1-26 12:28:00




这是DWG文件里面有说明.

mccad 发表于 2005-1-26 12:45:00

外部参照可以通过程序变成块:<BR>1.需要更改系统变量:BINDTYPE为1<BR>2.使用-xref中的B选项,给予外部参照名称就可以改过来。

寒风 发表于 2005-1-26 13:14:00

哦,可以了,不用写程序了,谢谢各位.

寒风 发表于 2005-1-26 13:16:00

那有办法反过来改变吗
页: [1]
查看完整版本: 请求帮忙:把参考图替换成相应的块