netcai 发表于 2017-9-3 21:43:08

如何导出布局丢失?

两个问题:
1、我有很多不同图纸中的布局要导出,不打开这些图纸怎么做?
2、如何在不打开图纸的情况下创建视口?
**** Hidden Message *****

nobody 发表于 2017-9-3 23:01:55

这两个特定任务涉及的很多API。如果您只是尝试将视口放入另一个绘图(多个偶数),您可以右键单击布局选项卡并使用“从模板导入”并选择您希望导入它们的绘图。

MickD 发表于 2017-9-4 00:10:55

2个问题。您知道如何从正在使用的绘图中导出布局吗?网?
2。可以使用在当前图形中创建视口吗?网?
如果是这样,那么您已经完成了一半,然后您可以打开内存中的绘图数据库(提示:database。ReadDwgFile(...) )并且你在背景中为多个绘图添加一点额外的逻辑。

netcai 发表于 2017-9-4 03:25:27

2个问题:
1.您知道如何从正在.net中处理的图形中导出布局吗
2.能否使用.net在当前图形中创建视口
是的,我现在在.net上使用这些方法,但是当文件数量很大,或者图形大小很大时,代码会变得不稳定,同一个图形,有时是ok,有时是错误的。因此,我尝试使用侧数据库,但使用当前图形和侧数据库之间存在许多差异:
以下代码运行正常,但有两个问题:
1,仅导出模型空间中的实体,图纸空间中的图元不导出,我不知道为什么
2,如果已剪切块,导出块将恢复其方向边界,剪切状态将消失
公共静态无效ExportLayoutSideDatabase(字符串oldFileName,字符串newFileName)
{
数据库currentDatabase=HostApplicationServices.WorkingDatabase;
使用(Database db=new Database(false,true))
{
db.ReadDwgFile(oldFileName,System.IO.FileShare.ReadWrite,true,null);
主机应用程序服务。工作数据库=db
ObjectId:layoutId=new ObjectId()
使用(Transaction tr=db.TransactionManager.StartTransaction())
{
布局管理器lm=LayoutManager.Current;
//ACAD_LAYOUT字典。
数据库字典layoutDict=tr.GetObject(db.layoutdirectionaryid,OpenMode.ForRead)作为词典
//迭代字典条目
foreach(DBDictionaryEntry de in layoutDict)
{
字符串layoutName=de.Key;
if(layoutnam!=“Model”)
{
layoutd=lm.GetLayoutId(layoutName);
lm。CurrentLayout=layoutName
中断
}
}
tr.Commit()
}
Autodesk.AutoCAD.ExportLayout。Engine Engine=Autodesk.AutoCAD.ExportLayout.Engine。实例()
使用(数据库Outdb=engine.ExportLayout(layoutId))
{
如果(engine.EngineStatus!=AcExportLayet.ErrorStatus.Successed)
{
}{
Arx.Prompts.Editor.WriteMessage(“\nexportLayoutFailed:”,engine.EngineStatus.ToString());
返回
}
否则
{
Outdb.SaveAs(newFileName,DwgVersion.AC1800);
}
}主机应用程序服务。WorkingDatabase=currentDatabase
}
}

n.yuan 发表于 2017-9-4 09:56:49

只是好奇,欧特克在哪里。AutoCAD.ExportLayout.Engine类来自?至少我没有在Acad2018 APIs上看到它。你用的是哪个版本的AutoCAD?

n.yuan 发表于 2017-9-4 11:08:08


这是一个很好的例子https://www.theswamp.org/index.php?topic=44472.msg497326#msg497326
AcExportLayout.dll

MickD 发表于 2017-9-4 14:33:44

啊,谢谢,杰夫,链接。显然,Autodesk.AutoCAD.ExportLayout是未记录的API,不适合外人使用。虽然我几乎盲目地信任Tony的任何代码,但他的例子是从Acad编辑器中打开的文档导出的。我们不知道 ExportLayout 命名空间是否可以应用于端数据库。因此,人们只能用他/她自己的自由裁量权使用它:如果它有效,那么有效,如果它不是,它就不是。我不认为Autodesk或这里的任何人能够提供关于OP代码不起作用的原因的进一步细节/解释。
OTH,完全可以通过正式提供的Acad .NET API编写代码来导出布局,论坛中的任何人都可以评论。

MickD 发表于 2017-9-4 18:28:22

我从来没有用过它,除了用反射器看它,并得到了一些关于扩展方法的想法。
页: [1]
查看完整版本: 如何导出布局丢失?