You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过APS Design Automation API将标记导入DWG并保存?

解决方案:通过Design Automation API将DXF标记合并到DWG

核心思路

借助Design Automation for AutoCAD运行自定义脚本,将DXF标记文件导入目标DWG,再把合并后的DWG存回Forge存储桶。

具体步骤

1. 编写AutoCAD自定义脚本(.NET)

核心是实现导入DXF到DWG的逻辑,示例代码如下:

using Autodesk.AutoCAD.ApplicationServices;
using Autodesk.AutoCAD.DatabaseServices;
using Autodesk.AutoCAD.Runtime;
using System.IO;

namespace MarkupMerger
{
    public class Commands
    {
        [CommandMethod("MergeMarkups")]
        public void MergeMarkups()
        {
            Document doc = Application.DocumentManager.MdiActiveDocument;
            Database db = doc.Database;

            // 读取输入的DXF标记文件(Design Automation中输入文件默认挂载路径)
            string dxfPath = Path.Combine(Environment.GetEnvironmentVariable("LOCALAPPDATA"), "Autodesk", "DesignAutomation", "Input", "markups.dxf");
            
            using (Transaction tr = db.TransactionManager.StartTransaction())
            {
                // 打开模型空间
                BlockTable bt = tr.GetObject(db.BlockTableId, OpenMode.ForRead) as BlockTable;
                BlockTableRecord btr = tr.GetObject(bt[BlockTableRecord.ModelSpace], OpenMode.ForWrite) as BlockTableRecord;

                // 导入DXF到模型空间
                using (DxfIn dxfIn = new DxfIn())
                {
                    dxfIn.DxfInFile(dxfPath, db, btr.Id);
                }

                tr.Commit();
            }

            // 保存合并后的DWG到输出目录
            doc.SaveAs(Path.Combine(Environment.GetEnvironmentVariable("LOCALAPPDATA"), "Autodesk", "DesignAutomation", "Output", "merged.dwg"), DwgVersion.Current);
        }
    }
}

2. 打包脚本为AppBundle

将编译好的.NET程序集(.dll文件)打包成ZIP包,作为Design Automation的AppBundle上传。

3. 创建Design Automation活动

配置活动参数:

  • 输入参数:原DWG文件(来自Forge存储桶)、DXF标记文件(来自Forge存储桶)
  • 输出参数:合并后的DWG文件(存回Forge存储桶)
  • 命令行:指定AutoCAD执行自定义命令,示例:/i "$(args[inputDWG].path)" /c "MergeMarkups"

4. 在.NET Core中触发工作项

通过Forge SDK发送工作项请求,指定输入输出文件的存储桶路径,示例代码片段:

var workItem = new WorkItem()
{
    ActivityId = "你的活动ID",
    Arguments = new Dictionary<string, IArgument>()
    {
        { "inputDWG", new XrefTreeArgument() { Url = "原DWG的存储桶URL", Headers = new Dictionary<string, string>() { { "Authorization", $"Bearer {accessToken}" } } } },
        { "markupDXF", new XrefTreeArgument() { Url = "DXF标记的存储桶URL", Headers = new Dictionary<string, string>() { { "Authorization", $"Bearer {accessToken}" } } } },
        { "outputDWG", new XrefTreeArgument() { Url = "输出DWG的存储桶URL", Headers = new Dictionary<string, string>() { { "Authorization", $"Bearer {accessToken}" } }, Verb = Verb.Put } }
    }
};

var workitemResponse = await designAutomationClient.CreateWorkItemAsync(workItem);

5. 轮询工作项状态

检查工作项状态,当状态变为Success时,合并后的DWG已成功保存到指定存储桶。

关键注意事项

  • 确保DXF标记的坐标系统与原DWG一致,避免导入后位置偏移
  • 选用与原DWG版本兼容的Design Automation AutoCAD引擎
  • 配置好存储桶文件的读写权限,保证Design Automation能正常访问

内容的提问来源于stack exchange,提问作者Plarent Haxhidauti

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 14:50:16