;|在论坛上,看了很多,都没找到拆离光栅图像的方法
看到了
http://bbs.mjtd.com/forum.php?mod=viewthread&tid=96467 的内容,
其中
第二中方法是在图像词典中删除,方法是:
 - (dictremove (cdr (car (dictsearch (namedobjdict) "ACAD_IMAGE_DICT"))) "图像名")
我试了试,怎么也没拆离光栅图像
以下是我的笨方法,突然间试验出来的
还望大家指点
也希望能抛砖引玉,找到更好的方法,或者在vba中的方法
---------------------------------------------------------分隔线-----------------------------------------
|;
 - (setq img (dictsearch (namedobjdict) "ACAD_IMAGE_DICT"))
; 获得图像词典的内容,
 - ((-1 . <图元名: 7ef74090>) (0 . "DICTIONARY") (5 . "10A")
- (102 . "{ACAD_REACTORS") (330 . <图元名: 7ef5ec60>) (102 . "}")
- (330 . <图元名: 7ef5ec60>) (100 . "AcDbDictionary") (280 . 0) (281 . 1)
- (3 . "电力APP") (350 . <图元名: 7ef741c8>)
- (3 . "水费APP") (350 . <图元名: 7ef74180>)
- (3 . "玄奘取经路线图(去程)") (350 . <图元名: 7ef74108>)
- )
;从这里可以看出来, 3 所对应的就是图形的名字,后边的 (350 . <图元名: 7ef74108>) 就是参考的图元信息。
;获得 (3 . "玄奘取经路线图(去程)") (350 . <图元名: 7ef74108>) 表如下
 - ((-1 . <图元名: 7ef74108>) (0 . "IMAGEDEF") (5 . "119") (102 . "{ACAD_REACTORS") (330 . <图元名: 7ef74110>) (330 . <图元名: 7ef74090>) (102 . "}") (330 . <图元名: 7ef74090>) (100 . "AcDbRasterImageDef") (90 . 0) (1 . ".\\玄奘取经路线图(去程).jpg") (10 1024.0 575.0 0.0) (11 0.352778 0.352778 0.0) (280 . 1) (281 . 5))
;上下两个的表中,350 是一样的。
;如果,你打开光栅图像(CAD图元中的对象)的表,你会发现
 - ((-1 . <图元名: 7ef74178>) (0 . IMAGE) (330 . <图元名: 7ef5ecf8>) (5 . 127) (100 . AcDbEntity) (67 . 0) (410 . Model) (8 . 0) (100 . AcDbRasterImage) (90 . 0) (10 11.903 105.571 0.0) (11 0.352778 0.0 0.0) (12 2.16007e-017 0.352778 0.0) (13 1024.0 575.0 0.0) (340 . <图元名: 7ef74108>) (70 . 7) (280 . 0) (281 . 50) (282 . 50) (283 . 0) (360 . <图元名: 7ef74170>) (71 . 1) (91 . 2) (14 -0.5 -0.5 0.0) (14 1023.5 574.5 0.0))
;(340 . <图元名: 7ef74108>)对应的图元也是这个, 《dxf 参考》中说明的有,这个是----- 340 imagedef 对象的硬参照
;所以,在这里要拆离能选择的光栅图像
;直接
 - (defun c:eimg()
- (setq en (entsel "\n选择要拆离的光栅图像:"))
- (if en
- (progn
- (setq enx (cdr (assoc 340 (entget (car en)))))
- (entdel enx)
- )
- )
- (princ)
- )
;从上边,也可以看出来,直接用 函数 entdel 就可以轻松的拆离光栅图像
;同样,也可以从词典表中,得到要删除的图元的名字,然后,用 entdel 拆离掉
 - (defun c:eei()
- (setq all (namedobjdict))
- (setq img (dictsearch all "ACAD_IMAGE_DICT"))
- ;(setq imgx (dictsearch (cdr (assoc -1 img)) "玄奘取经路线图(去程)"))
- (foreach xx img
- (if (equal xx '(3 . "玄奘取经路线图(去程)"))
- (progn
- (setq ll (cdr (nth 1 (member xx img ))))
- (entdel ll)
- )
- )
- )
- (princ)
- )
;具体参考的有 图元组码中的 IMAGE IMAGEDEF
;好像用vlax-ldata系列函数也能删除(没有测试)
;思路就是这样
;结束
|