使用 API v3 和 .Net 将 DWG 转换为 DXF

Posted

技术标签:

【中文标题】使用 API v3 和 .Net 将 DWG 转换为 DXF【英文标题】:Convert DWG to DXF using API v3 and .Net 【发布时间】:2020-10-12 20:30:25 【问题描述】:

我的要求是将 DWG 转换为 DXF ,需要快速帮助来了解使用 Design API v3 和 .net c# 的过程,并且我想使用本地计算机中的所有 DWG 文件,并且输出也应该在本地进行。任何地方都没有参考,我对设计自动化 API 完全陌生。

`

 var workItemStatus = await api.CreateWorkItemAsync(new WorkItem()
            
                ActivityId = myActivity,
                Arguments = new Dictionary<string, IArgument>()
                
                     "input", new XrefTreeArgument()  Url = UploadUrl  ,
                     "params", new XrefTreeArgument()  Url = $"data:application/json, JsonConvert.SerializeObject(new CrxApp.Parameters  ExtractBlockNames = true, ExtractLayerNames = true )"  ,
                     "result", new XrefTreeArgument()  Verb=Verb.Put, Url = DownloadUrl  
                
            );

`

【问题讨论】:

欢迎堆栈溢出。请阅读how to ask。你不明白哪一部分?你被困在哪里了?你试过什么? 请看:Why is “Can someone help me?” not an actual question? 这里为什么需要涉及.net api?您可以只使用保存到 DXF 的脚本。是否要进行更多处理? 是的,我需要更多处理,如果您知道脚本,请告诉我。 是的,我需要更多处理,例如从某个位置提取文件,然后在 DXF 之后需要进一步转换为 GEOJson ,如果您知道脚本,请告诉我。 【参考方案1】:

还想了解从 DWG 转换为 DXF 的参数,我有 没有安装 AutoCAD。前任。 “参数”,新的 XrefTreeArgument()

    发送图纸输入url DXFOUT 发送 dxf 输出 url。

.NET 核心中的示例活动规范

private async Task<string> SetupActivityAsync(string myApp = null)
    
        Console.WriteLine("Setting up activity...");
        var myActivity = $"Owner.ActivityName+Label";
        var actResponse = await this.api.ActivitiesApi.GetActivityAsync(myActivity, throwOnError: false);
        /*
         * The default or basic CommandLine syntax, for this application we don't need bundle.
         *     CommandLine = new List<string>()
                
                    $"$(engine.path)\\accoreconsole.exe /i $(args[inputFile].path) /al $(appbundles[PackageName].path) /s $(settings[script].path)"
                ,
         */

        var activity = new Activity()
        
           
            CommandLine = new List<string>()
                
                    $"$(engine.path)\\accoreconsole.exe /i $(args[inputFile].path) /s $(settings[script].path)"
                ,
            Engine = TargetEngine,
            Settings = new Dictionary<string, ISetting>()
                
                     "script", new StringSetting()  Value = "DXFOUT\nresult.dxf\n\n"  
                ,
            Parameters = new Dictionary<string, Parameter>()
                
                     "inputFile", new Parameter()  Verb= Verb.Get, LocalName = "$(HostDwg)",  Required = true  ,                       
                     "outputFile", new Parameter()  Verb= Verb.Put,  LocalName = "result.dxf", Required= true 
                ,
            Id = ActivityName
        ;
        if(myApp != null)
        
            activity.Appbundles = new List<string>()
                
                    myApp
                ;
        
        if (actResponse.HttpResponse.StatusCode == HttpStatusCode.NotFound)
        
            Console.WriteLine($"Creating activity myActivity...");
            await api.CreateActivityAsync(activity, Label);
            return myActivity;
        
        await actResponse.HttpResponse.EnsureSuccessStatusCodeAsync();
        Console.WriteLine("\tFound existing activity...");
        if (!Equals(activity, actResponse.Content))
        
            Console.WriteLine($"\tUpdating activity myActivity...");
            await api.UpdateActivityAsync(activity, Label);
        
        return myActivity;

        
    

【讨论】:

谢谢马杜卡。在我可以提供本地文件夹和文件名的位置下方: "inputFile", new Parameter() Verb= Verb.Get, LocalName = "$(HostDwg)", Required = true , "outputFile" , new Parameter() Verb= Verb.Put, LocalName = "result.dxf", Required= true 我需要在这里做些什么吗? : "script", new StringSetting() Value = "DXFOUT\nresult.dxf\n\n" 这是我尝试过的错误:1. 我通过 SubmitWorkItemAsync 传递了输入和输出 2. SetupActivityAsync 与您的代码一致,但出现错误 -- System.Net.Http.HttpRequestException: '服务器返回不成功状态码 400(Bad Request)。更多错误详情:"inputFile":["Required parameter 'inputFile' has no matching argument. (Parameter 'inputFile')"] @prasantamohanty - 我已经为你创建了完整的样本,玩玩吧。 github.com/MadhukarMoogala/acadio-snippets/blob/v3/… github.com/MadhukarMoogala/acadio-snippets/tree/v3/NETCore/… >服务器返回不成功状态码 400(错误请求)这是因为您的参数在活动规范和工作项规范之间不匹配。

以上是关于使用 API v3 和 .Net 将 DWG 转换为 DXF的主要内容,如果未能解决你的问题,请参考以下文章

Google Drive API v3-将文档转换为pdf

DWG转换成PDF这样转,DWG转为PDF的步骤

将 Autodesk .dwg 和 .dwf 文件转换为 three.js json 格式

一款不错的DWG转PDF格式转换器

怎么才能DWG转PDF格式转换器

使用 AutoDesk Forge 将 IDW 转换为 DWG