如何将图纸中的对象集合保存成新的dwg格式文件
我想将某一区域下的图形集合保存成一个新的dwg格式文件,请问如何实现?本帖最后由 xxxxxczxcxz 于 2021-3-20 00:06 编辑
;;保存分图
(defun c:bzft (/ ss filename pathdate )
(setvar "cmdecho" 0) ;指令执行过程不响应
(setq ss (ssget )) ;选择集
(setq date (menucmd "M=$(edtime,$(getvar,date),YYYY_MODD_HHMMSS)")); "激光切割文件"是前文件名可自定修改 后面跟时间。
(setq path "C:\\") ;自定义路径位置 "\\"隔开
(setq filename (strcat pathdate )) ;合并成文件路径及文件名
(command "WBLOCK" filename "" "0,0"SS"" "oops" )
(setvar "cmdecho" 1)
(PRINC "\n 保存成功 !!!")
(PRINC)
)
hengdong123 发表于 2018-10-31 20:10
感谢 问号兄233 兄弟的回复,你的思路是对的,你的方法是com调用模式吧
我的是插件的模式,问题来了:
...
readdwgfile直接得到整个文件数据库,个人理解这更倾向于非图形化的数据表。以前只通过查找块表记录中的某一个名字而得到固定的单一块,没有做过选取某一范围内的实体。稍微查找了一下,未找到具体解决方式,相信你也自己查了资料未果才来提问,所以这应该不是个容易实现的技巧,本人才疏学浅,表示无能为力。如果您能实现这一功能,还望分享告知。个人认为英文论坛更多解决方案,只是查起来慢一些,共勉。 怎么没人回答新人提的问题啊?太简单了吗? 本帖最后由 ssyfeng 于 2018-10-19 09:27 编辑
试试这个可以不
(defun c:tt (/ path pt ss)
(vl-cmdf "_undo" "be")
(setq path "c:\\00.dwg" ;;;定义文件保存路径
pt '(0 0 0)
ss (ssget)
)
(vl-cmdf "-WBLOCK" path "" pt ss "")
(vl-cmdf "_undo" "e")
(vl-cmdf "_undo" 1)
(princ)
)
感谢ssyfeng兄弟热情回复
请熟悉c#的朋友给个方案 某一区域?可以用闭合PolyLine组成一个区域。假设所有实体都在线内,这样可以用AcadEditor.SelectWindowPolygon(Point3dCollection polygon)方法获取到实体,记录ObjcetId到一个ObjectIdCollection中去。
然后,用DatabasedbNew = new Database(false,true);
dbNew = HostApplicationServices.WorkingDatabase.Wblock(ObjectIdCollection,HostApplicationServices.WorkingDatabase.Ucsorg);
dbNew.SaveAs(PathName,DwgVersion.AC1015);
工作性质原因无法贴源码,抱歉。不懂可以咨询。 问号兄233 发表于 2018-10-26 08:48
某一区域?可以用闭合PolyLine组成一个区域。假设所有实体都在线内,这样可以用AcadEditor.SelectWindowPol ...
感谢 问号兄233 兄弟的回复,你的思路是对的,你的方法是com调用模式吧
我的是插件的模式,问题来了:
获取选择集需要editor对象,我是通过ReadDwgFile读取到内存中处理,没法使用editor对象获取某一框选的对象集合,该怎么样处理啊? 论坛里的好几个代码 好像都是这种方式呀 xxxxxczxcxz 发表于 2021-3-19 23:48
;;保存分图
(defun c:bzft (/ ss filename pathdate )
(setvar "cmdecho" 0) ;指令执行过程不响应
大佬请问保存文件,还是源文件名,只是后面加上时间,保存路径还是在源文件路径,怎么做
页:
[1]
2