明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1749|回复: 2

[经验] 拆离光栅图像

[复制链接]
发表于 2013-9-28 17:26 | 显示全部楼层 |阅读模式
;|在论坛上,看了很多,都没找到拆离光栅图像的方法
看到了
http://bbs.mjtd.com/forum.php?mod=viewthread&tid=96467 的内容,
其中
第二中方法是在图像词典中删除,方法是:
  1. (dictremove (cdr (car (dictsearch (namedobjdict) "ACAD_IMAGE_DICT"))) "图像名")

我试了试,怎么也没拆离光栅图像
以下是我的笨方法,突然间试验出来的
还望大家指点
也希望能抛砖引玉,找到更好的方法,或者在vba中的方法
---------------------------------------------------------分隔线-----------------------------------------
|;
  1. (setq img (dictsearch (namedobjdict)  "ACAD_IMAGE_DICT"))


; 获得图像词典的内容,

  1. ((-1 . <图元名: 7ef74090>) (0 . "DICTIONARY") (5 . "10A")
  2. (102 . "{ACAD_REACTORS") (330 . <图元名: 7ef5ec60>) (102 . "}")
  3. (330 . <图元名: 7ef5ec60>) (100 . "AcDbDictionary") (280 . 0) (281 . 1)
  4. (3 . "电力APP") (350 . <图元名: 7ef741c8>)
  5. (3 . "水费APP") (350 . <图元名: 7ef74180>)
  6. (3 . "玄奘取经路线图(去程)") (350 . <图元名: 7ef74108>)
  7. )

;从这里可以看出来, 3 所对应的就是图形的名字,后边的 (350 . <图元名: 7ef74108>) 就是参考的图元信息。
;获得 (3 . "玄奘取经路线图(去程)") (350 . <图元名: 7ef74108>)  表如下
  1. ((-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. ((-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 对象的硬参照

;所以,在这里要拆离能选择的光栅图像
;直接
  1. (defun c:eimg()
  2.     (setq en (entsel "\n选择要拆离的光栅图像:"))
  3.     (if en
  4.         (progn
  5.             (setq enx (cdr (assoc 340 (entget (car en)))))
  6.             (entdel enx)
  7.         )
  8.     )
  9.     (princ)
  10. )

;从上边,也可以看出来,直接用 函数 entdel 就可以轻松的拆离光栅图像

;同样,也可以从词典表中,得到要删除的图元的名字,然后,用 entdel 拆离掉
  1. (defun c:eei()
  2. (setq all (namedobjdict))
  3. (setq img (dictsearch all  "ACAD_IMAGE_DICT"))
  4. ;(setq imgx (dictsearch (cdr (assoc -1 img))  "玄奘取经路线图(去程)"))
  5. (foreach xx img
  6.     (if (equal xx '(3 . "玄奘取经路线图(去程)"))
  7.         (progn
  8.             (setq ll (cdr (nth 1 (member xx img ))))
  9.             (entdel ll)
  10.         )
  11.     )
  12. )
  13. (princ)
  14. )

;具体参考的有 图元组码中的 IMAGE IMAGEDEF
;好像用vlax-ldata系列函数也能删除(没有测试)
;思路就是这样
;结束

评分

参与人数 1明经币 +1 收起 理由
自贡黄明儒 + 1 很给力!

查看全部评分

"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2013-9-30 09:52 | 显示全部楼层
我从没有用过光栅图像,你使用entdel后到底是删除了,还是拆离?
发表于 2013-12-2 08:55 | 显示全部楼层
最近要用到这个技术了。谢谢。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-5-17 18:59 , Processed in 0.163050 second(s), 33 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表