起子 发表于 2010-4-15 19:06:00

利用entmake 插入image的问题

<p>本来利用</p><p>(command "_imge" "a" ...)</p><p>的形式是可以插入IMAGE的,但是要用到arx反应器回调函数时,不能调用CAD命令,只能用entmake插入image。</p><p>现在问题来了,用下面的函数插入图片时有问题,我查了DXF代码,并与直接插入的图片的组码进行了对比,主要是330组码的问题,330组码中含IMAGE附着时的图像名,我试着生成330组码,但是显示NIL。</p><p></p><p>以下的代码中不含330组码,</p><p>要是新开窗口的话,会提示“DXF 组不正确: (340)”</p><p>要是开了窗口,并插入过图片的话,不会报错,但是有时图片不显示(查看路径是对的),但是查看图像管理器,看不到插入的图片。</p><p>(defun c:timg ()</p><p>&nbsp; (setq&nbsp;img340 (entmakex<br/>&nbsp;&nbsp; (list<br/>&nbsp;&nbsp;&nbsp;&nbsp; '(0 . "IMAGEDEF")<br/>&nbsp;&nbsp;&nbsp;&nbsp; '(5 . "89")<br/>&nbsp;&nbsp;&nbsp;&nbsp; '(100 . "AcDbRasterImageDef")<br/>&nbsp;&nbsp;&nbsp;&nbsp; '(90 . 0)<br/>&nbsp;&nbsp;&nbsp;&nbsp; '(1<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "c:\\test.bmp"<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp;&nbsp; '(10 154.0 299.0 0.0)<br/>&nbsp;&nbsp;&nbsp;&nbsp; '(11 0.00649351 0.00649351 0.0)<br/>&nbsp;&nbsp;&nbsp;&nbsp; '(280 . 1)<br/>&nbsp;&nbsp;&nbsp;&nbsp; '(281 . 0)<br/>&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp; )</p><p>&nbsp; (entmake<br/>&nbsp;&nbsp;&nbsp; (list<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; '(0 . "IMAGE")<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; '(5 . "8B")<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; '(100 . "AcDbEntity")<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; '(67 . 0)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; '(410 . "Model")<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; '(8 . "0")<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; '(100 . "AcDbRasterImage")<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; '(90 . 0)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; '(10 647.821 428.712 0.0)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; '(11 0.00649351 0.0 0.0)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; '(12 3.97599e-019 0.00649351 0.0)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; '(13 154.0 299.0 0.0)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (cons 340 img340)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; '(70 . 7)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; '(280 . 0)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; '(281 . 50)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; '(282 . 50)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; '(283 . 0)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; '(71 . 1)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; '(91 . 2)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; '(14 -0.5 -0.5 0.0)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; '(14 153.5 298.5 0.0)<br/>&nbsp;&nbsp;&nbsp; ) ;_ 结束list<br/>&nbsp; ) ;_ 结束entmake<br/>)</p>

起子 发表于 2010-4-18 10:56:00

<p>有人做过这个吗?</p>

起子 发表于 2010-4-28 13:00:00

<p>已经搞定了,不用ENTMAKE,用ACTIVEX。</p><p>(setq *acad* (vlax-get-acad-object)<br/>actvdoc (vla-get-activedocument *acad*)<br/>mspace (vla-get-modelspace actvdoc)<br/>ImgObj (vlax-invoke mspace 'addraster <br/>"C:/TEST.png" (list 0.0 0.0 0.0) 1 0))</p>
页: [1]
查看完整版本: 利用entmake 插入image的问题