明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2773|回复: 11

[基础] 如何将图纸中的对象集合保存成新的dwg格式文件

[复制链接]
发表于 2018-10-17 23:40:15 | 显示全部楼层 |阅读模式
我想将某一区域下的图形集合保存成一个新的dwg格式文件,请问如何实现?
发表于 2021-3-19 23:48:03 | 显示全部楼层
本帖最后由 xxxxxczxcxz 于 2021-3-20 00:06 编辑

;;保存分图
(defun c:bzft (/ ss filename path  date )
        (setvar "cmdecho" 0) ;指令执行过程不响应
                (setq ss (ssget )) ;选择集
        (setq date (menucmd "M=$(edtime,$(getvar,date),YYYY_MODD_HHMMSS)"))  ; "激光切割文件"是前文件名可自定修改 后面跟时间。
        (setq path "C:\\")    ;自定义路径位置 "\\"隔开
        (setq filename (strcat path  date )) ;合并成文件路径及文件名       
  (command "WBLOCK" filename "" "0,0"  SS  "" "oops" )
        (setvar "cmdecho" 1)
        (PRINC "\n 保存成功 !!!")
        (PRINC)
)
回复 支持 0 反对 1

使用道具 举报

发表于 2018-11-1 09:55:28 | 显示全部楼层
hengdong123 发表于 2018-10-31 20:10
感谢 问号兄233 兄弟的回复,你的思路是对的,你的方法是com调用模式吧
我的是插件的模式,问题来了:
...

readdwgfile直接得到整个文件数据库,个人理解这更倾向于非图形化的数据表。以前只通过查找块表记录中的某一个名字而得到固定的单一块,没有做过选取某一范围内的实体。稍微查找了一下,未找到具体解决方式,相信你也自己查了资料未果才来提问,所以这应该不是个容易实现的技巧,本人才疏学浅,表示无能为力。如果您能实现这一功能,还望分享告知。个人认为英文论坛更多解决方案,只是查起来慢一些,共勉。
 楼主| 发表于 2018-10-19 08:38:20 | 显示全部楼层
怎么没人回答新人提的问题啊?太简单了吗?
发表于 2018-10-19 09:25:31 | 显示全部楼层
本帖最后由 ssyfeng 于 2018-10-19 09:27 编辑
  1. 试试这个可以不

  2. (defun c:tt (/ path pt ss)
  3.   (vl-cmdf "_undo" "be")
  4.   (setq path "c:\\00.dwg"   ;;;定义文件保存路径
  5.     pt '(0 0 0)
  6.     ss (ssget)
  7.   )
  8.   (vl-cmdf "-WBLOCK" path "" pt ss "")
  9.   (vl-cmdf "_undo" "e")
  10.   (vl-cmdf "_undo" 1)
  11.   (princ)
  12. )



 楼主| 发表于 2018-10-19 12:39:06 | 显示全部楼层
感谢ssyfeng兄弟热情回复
请熟悉c#的朋友给个方案
发表于 2018-10-26 08:48:38 | 显示全部楼层
某一区域?可以用闭合PolyLine组成一个区域。假设所有实体都在线内,这样可以用AcadEditor.SelectWindowPolygon(Point3dCollection polygon)方法获取到实体,记录ObjcetId到一个ObjectIdCollection中去。
然后,用Database  dbNew = new Database(false,true);
dbNew = HostApplicationServices.WorkingDatabase.Wblock(ObjectIdCollection,HostApplicationServices.WorkingDatabase.Ucsorg);
dbNew.SaveAs(PathName,DwgVersion.AC1015);
工作性质原因无法贴源码,抱歉。不懂可以咨询。
 楼主| 发表于 2018-10-31 20:10:22 | 显示全部楼层
问号兄233 发表于 2018-10-26 08:48
某一区域?可以用闭合PolyLine组成一个区域。假设所有实体都在线内,这样可以用AcadEditor.SelectWindowPol ...

感谢 问号兄233 兄弟的回复,你的思路是对的,你的方法是com调用模式吧
我的是插件的模式,问题来了:
获取选择集需要editor对象,我是通过ReadDwgFile读取到内存中处理,没法使用editor对象获取某一框选的对象集合,该怎么样处理啊?
发表于 2021-3-20 08:21:09 | 显示全部楼层
论坛里的好几个代码 好像都是这种方式呀
发表于 2021-4-15 22:19:01 | 显示全部楼层
xxxxxczxcxz 发表于 2021-3-19 23:48
;;保存分图
(defun c:bzft (/ ss filename path  date )
        (setvar "cmdecho" 0) ;指令执行过程不响应

大佬请问保存文件,还是源文件名,只是后面加上时间,保存路径还是在源文件路径,怎么做
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-25 04:41 , Processed in 0.160206 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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