怎样在不打开dwg的情况下,写dwg文件
这样不行: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图片
只能用第三方组件 比如teigha 雪山飞狐_lzh 发表于 2018-7-19 18:50
只能用第三方组件 比如teigha
不用,已经解决了。在新的database里面的entity不能修改其所在图层,一修改就会报错 理解错了 我以为是不开cad。。。
@command()
def dbxtest():
filename = 'd:\\test.dwg'
with dbtrans(db = filename) as tr:
btr = tr.openmodelspace()
mat = acge.Matrix3d.Displacement(acge.Vector3d(10,0,0))
for ent in (tr.getobject(eid) for eid in btr):
with upopen(ent):
if isinstance(ent, acdb.Line):
ent.LayerId = tr.LayerTable['1']
elif isinstance(ent, acdb.DBText):
ent.TransformBy(mat)
tr.Database.SaveAs(filename, acdb.DwgVersion.Current)
没发现你所说的问题 雪山飞狐_lzh 发表于 2018-7-19 22:08
理解错了 我以为是不开cad。。。
没发现你所说的问题
修改LayerId确实可以,我用的是修改Layer,修改其图层名,这样会报错。谢谢大神的无私帮助,您帮我大忙了。
之前只能用笨方法:通过get新添加的ObjId,然后再来修改其图层名。这样会影响程序效率。
页:
[1]