如何插入LSP炸开块 如何打开、关闭图档
第一 :怎样 插入炸开的图块。应该不用后面跟一个炸开命令 _explode 吧(entmake (list (cons 0 "INSERT") ;插入
(cons 2 "epin4") ;插入块的名字
(cons 6 "BYLAYER")
(cons 8 "0")
(cons 10 pt) ;插入点
))
第二: A)我这个程序把从UG里转出来的DXF档 改变线形,颜色等,最后关闭这个图档要怎么写
CAD里提示: 是否确定要放弃对图形所作的全部修改?? <N>
B) 能否在一个图档里执行此命令,打开另一个DXF图档,然后关闭。在原图档接着执行粘贴
试过几次 (open , getfiled 都没成,是格式不对,还是方法不对?
(defun C:ttt()
(command "zoom""a" )
(setq pt (getpoint "请选择基点:\n"))
(command "ltscale" 18)
(SETQ colr_22 (ssget "X"'((62 . 22)) ))
(SETQ line_7(ssget "X" '((6 . "continuous")) ))
(SETQ dash(ssget "X" '((6 . "dashed")) ))
(command "erase" colr_22 "" "chprop" line_7 "" "c" "7" "" "chprop" dash "" "c" "2""")
;三个命令 删除22#线 改变直线7#颜色 改变虚线2#色
(command "_copybase"pt (ssget "X") "")
(command "_close" ) ;改成这样 (command "_close" "Y" "") 也不能一次关闭。
(princ)
)
可以这样做:
(程序在空白图中运行)
1、使用DXFIN插入DXF文件;
2、修改内容;
3、使用WBLOCK另写成DWG文件;
4、用UNDO退到空白状态;然后重复1。 一、插入炸开的图块command insert "*块名"
二、能否用dbx操作 谢谢上几楼。
我本意是打开一个DXF图档,处理下,然后选中了,带基点复制,关闭 另外文档里再粘贴就行。
二楼的方法,又多了一个DWG文档,,到时又要多清理一个文档。达不到快速的效果。。
3楼 插入命令效果是一样的。好像跟emake 一样,不会留下其它痕迹。
原来我用(command "-wblock" "qww""" '(0 0) ent_list "")建块,会留下一个 qww.dwg 文件,所以都改emake 生成图形和块,再插入
dbx这命令没见,,
哎,这二次开发太伤脑筋了,,我还是将就点算了,,多几个步骤也算了,反正电脑算得快。。 本帖最后由 cabinsummer 于 2011-10-28 04:32 编辑
用activex解决
思路如下:
1、打开dxf文件;
2、选择插入基点,存入表share;
3、选择要插入的图元,遍历选择集,用entget获取图元数据并用append追加到share之后;最好是做成块
4、(setq filename “要打开的文件”)
5、用(setq newfile (vla-open (vla-get-documents (vlax-get-acad-object)) filename))打开要插入的图形文件;
6、用(vl-propagate 'share)共享share到所有文件;
7、用(vla-activate newfile)激活新文档;
8、提取原始文档的插入点(car share);
9、依次提取share后面的各表数据;
10、用entmake生成新图元,注意插入点的坐标变换。
也可以把原文档中的选择集先做成块,插入到新文档后炸开。
本帖最后由 cash1331 于 2011-11-4 13:13 编辑
谢谢楼上的回答。 我现在是懂点LSP皮毛。 所以你上面的思路,我也用不了。
其实我原来也是要打开DXF图档了,然后把多余的线删了,再关图档的。
看你写了这么多条,感觉蛮复杂的样子,我还是命令用完了,随手关闭就行了。比我原来也省事多了。。
页:
[1]