明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1303|回复: 4

怎样在不打开dwg的情况下,写dwg文件

[复制链接]
发表于 2018-7-19 12:41:37 | 显示全部楼层 |阅读模式
这样不行:
Database acNewDb = new Database(false, true);
acNewDb.ReadDwgFile(filePath, file:///C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\%W@GJ$ACOF(TYDYECOKVDYB.pngSystem.IO.FileShare.ReadWrite, true, null);
……
acNewDb.SaveAs(filePath, null);

保存会报:“警告:保存时出错 建议您对图形运行RECOVER”的错误
file:///D:\My Documents\Tencent Files\358754980\Image\Group\{8ETI3TW5HVZ)ABIYN%922Q.png


file:///D:\My Documents\Tencent Files\358754980\Image\Group\{8ETI3TW5HVZ)ABIYN%922Q.png[url=]图片[/url]

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
发表于 2018-7-19 18:50:17 来自手机 | 显示全部楼层
只能用第三方组件 比如teigha
 楼主| 发表于 2018-7-19 19:45:26 | 显示全部楼层
雪山飞狐_lzh 发表于 2018-7-19 18:50
只能用第三方组件 比如teigha

不用,已经解决了。在新的database里面的entity不能修改其所在图层,一修改就会报错
发表于 2018-7-19 22:08:25 | 显示全部楼层
理解错了 我以为是不开cad。。。
  1. @command()
  2. def dbxtest():
  3.     filename = 'd:\\test.dwg'
  4.     with dbtrans(db = filename) as tr:
  5.         btr = tr.openmodelspace()
  6.         mat = acge.Matrix3d.Displacement(acge.Vector3d(10,0,0))
  7.         for ent in (tr.getobject(eid) for eid in btr):
  8.             with upopen(ent):
  9.                 if isinstance(ent, acdb.Line):
  10.                     ent.LayerId = tr.LayerTable['1']
  11.                 elif isinstance(ent, acdb.DBText):
  12.                     ent.TransformBy(mat)
  13.         tr.Database.SaveAs(filename, acdb.DwgVersion.Current)
复制代码

没发现你所说的问题
 楼主| 发表于 2018-7-20 17:03:21 | 显示全部楼层
雪山飞狐_lzh 发表于 2018-7-19 22:08
理解错了 我以为是不开cad。。。

没发现你所说的问题

修改LayerId确实可以,我用的是修改Layer,修改其图层名,这样会报错。谢谢大神的无私帮助,您帮我大忙了。
之前只能用笨方法:通过get新添加的ObjId,然后再来修改其图层名。这样会影响程序效率。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-29 00:38 , Processed in 0.163147 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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