乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 175|回复: 9

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

[复制链接]

3

主题

14

帖子

2

银币

初来乍到

Rank: 1

铜币
26
发表于 2018-10-17 23:40:00 | 显示全部楼层 |阅读模式
我想将某一区域下的图形集合保存成一个新的dwg格式文件,请问如何实现?
回复

使用道具 举报

0

主题

2

帖子

2

银币

初来乍到

Rank: 1

铜币
2
发表于 2021-3-19 23:48:00 | 显示全部楼层

;;保存分图
(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)
)
回复

使用道具 举报

1

主题

17

帖子

3

银币

初来乍到

Rank: 1

铜币
21
发表于 2018-11-1 09:55:00 | 显示全部楼层

readdwgfile直接得到整个文件数据库,个人理解这更倾向于非图形化的数据表。以前只通过查找块表记录中的某一个名字而得到固定的单一块,没有做过选取某一范围内的实体。稍微查找了一下,未找到具体解决方式,相信你也自己查了资料未果才来提问,所以这应该不是个容易实现的技巧,本人才疏学浅,表示无能为力。如果您能实现这一功能,还望分享告知。个人认为英文论坛更多解决方案,只是查起来慢一些,共勉。
回复

使用道具 举报

3

主题

14

帖子

2

银币

初来乍到

Rank: 1

铜币
26
发表于 2018-10-19 08:38:00 | 显示全部楼层
怎么没人回答新人提的问题啊?太简单了吗?
回复

使用道具 举报

0

主题

68

帖子

7

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
68
发表于 2018-10-19 09:25:00 | 显示全部楼层
  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. )

回复

使用道具 举报

3

主题

14

帖子

2

银币

初来乍到

Rank: 1

铜币
26
发表于 2018-10-19 12:39:00 | 显示全部楼层
感谢ssyfeng兄弟热情回复
请熟悉c#的朋友给个方案
回复

使用道具 举报

1

主题

17

帖子

3

银币

初来乍到

Rank: 1

铜币
21
发表于 2018-10-26 08:48:00 | 显示全部楼层
某一区域?可以用闭合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);
工作性质原因无法贴源码,抱歉。不懂可以咨询。
回复

使用道具 举报

3

主题

14

帖子

2

银币

初来乍到

Rank: 1

铜币
26
发表于 2018-10-31 20:10:00 | 显示全部楼层

感谢 问号兄233 兄弟的回复,你的思路是对的,你的方法是com调用模式吧
我的是插件的模式,问题来了:
获取选择集需要editor对象,我是通过ReadDwgFile读取到内存中处理,没法使用editor对象获取某一框选的对象集合,该怎么样处理啊?
回复

使用道具 举报

67

主题

504

帖子

696

银币

中流砥柱

Rank: 25

铜币
757
QQ
发表于 2021-3-20 08:21:00 | 显示全部楼层
论坛里的好几个代码 好像都是这种方式呀
回复

使用道具 举报

0

主题

56

帖子

8

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
56
发表于 2021-4-15 22:19:00 | 显示全部楼层

大佬请问保存文件,还是源文件名,只是后面加上时间,保存路径还是在源文件路径,怎么做
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2024-11-22 00:10 , Processed in 0.275083 second(s), 73 queries .

© 2020-2024 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表