无法使用 .Net 和 True View (AcCtrl) 将 .dwg 转换为 .pdf
Not able to Convert .dwg to .pdf using .Net and True View (AcCtrl)
我想做的是:
我有一个 Asp Mvc 网站。我需要在其中创建一个执行以下操作的函数:
- 将 .dwg (AutoCad) 文件转换为 .pdf 文件
- 将 .dwg 文件转换为 .dwf 文件
我从我当时认为的更简单的任务开始,将 .dwg 转换为 .pdf。经过一番研究后,我发现一种方法(无需购买第三方许可证)是在服务器上安装 TrueView 并使用它(或者实际上是 AcCtrl.dll)来转换文件。好吧,我这样做了。我安装了 True View 程序并添加了对 AcCtrl 组件 (ACCTRLLib) 的引用。然后我在我正在处理的 class 文件中添加了对 Dll 的引用:
using ACCTRLLib;
到目前为止一切顺利。之后,我按照 post 上的说明进行操作:PDF conversion using dwg true viewer in VB6
首先,这是我的代码:
public static void ConvertFile()
{
IAcCtrl contrl = new AcCtrl();
contrl.PutSourcePath(@"D:\MMA\Autocat\File1.dwg");
string[] pdfPath = new string[1] { @"D:\MMA\Autocat\File1.dwg" };
contrl.SilentPublish(pdfPath);
}
然后,根据post,我去看看有没有指定路径的registry。我作为注册表的路径如下:
HKEY_CURRENT_USER\Software\Autodesk\DWG TrueView\R13\DWGVIEWR-E001:409\Profiles\<<\Unnamed Profile>>\Dialogs\AcPublishDlg
因此,我在其中创建了一个 'String Value',其中包含 ValueName: Location 和 ValueData: D:\MMA\Autocat\Testing
好的。就是这样了。毕竟我 运行 应用程序并调用了函数。调试器遍历代码并执行所有内容(或至少看起来是这样)但什么也没有发生。我在 D:\MMA\Autocat\Testing 文件夹中没有找到文件。我没有例外,没有任何警告。它只是执行,什么也没有发生。
那么我还尝试了什么。其中一些尝试可能有点天真或愚蠢,但我还是做了,因为我碰巧有点绝望。
我在控制台应用程序中尝试了一切。我不完全确定这种方法是否适合 ASP MVC,所以不幸的是,我用控制台应用程序尝试了相同的代码,得到了相同的结果。
我在位置字符串值中添加了一个文件名。我将 Location ValueData 从 'D:\MMA\Autocat\Testing' 更改为 'D:\MMA\Autocat\Testing\testFile.pdf' 因为我注意到在整个过程中没有任何地方要求转换文件的文件名。
根据我之前结论的想法,我尝试将 'result' 文件的路径提供给 SilentPublish 函数。
string[] pdfPath = new string[1] { @"D:\MMA\Autocat\Testing\testFile.pdf" };
contrl.SilentPublish(pdfPath);
再次无济于事。所以,我的问题,或者更确切地说,问题是:
是否可以这样做,如果是我做错了什么?
如果不是,你能建议一种方法吗?
此外,如果 .dwg 到 .dwf 的转换是可能的(使用相同或不同的方法,我洗耳恭听)
非常感谢
True View 不公开 Autodesk.AutoCAD.PlottingServices 命名空间。您将需要 AutoCAD、RealDWG 或其他第三方的许可副本 API。
我不确定您是否仍然遇到这个问题,但您应该可以使用 Autodesk Forge API 来解决这个问题。可以通过简单的 HTTP 调用从任何语言进行调用。您必须先转换为 SVF,然后再从那里转换为 DXF 和 PDF。
我想做的是:
我有一个 Asp Mvc 网站。我需要在其中创建一个执行以下操作的函数:
- 将 .dwg (AutoCad) 文件转换为 .pdf 文件
- 将 .dwg 文件转换为 .dwf 文件
我从我当时认为的更简单的任务开始,将 .dwg 转换为 .pdf。经过一番研究后,我发现一种方法(无需购买第三方许可证)是在服务器上安装 TrueView 并使用它(或者实际上是 AcCtrl.dll)来转换文件。好吧,我这样做了。我安装了 True View 程序并添加了对 AcCtrl 组件 (ACCTRLLib) 的引用。然后我在我正在处理的 class 文件中添加了对 Dll 的引用:
using ACCTRLLib;
到目前为止一切顺利。之后,我按照 post 上的说明进行操作:PDF conversion using dwg true viewer in VB6
首先,这是我的代码:
public static void ConvertFile()
{
IAcCtrl contrl = new AcCtrl();
contrl.PutSourcePath(@"D:\MMA\Autocat\File1.dwg");
string[] pdfPath = new string[1] { @"D:\MMA\Autocat\File1.dwg" };
contrl.SilentPublish(pdfPath);
}
然后,根据post,我去看看有没有指定路径的registry。我作为注册表的路径如下:
HKEY_CURRENT_USER\Software\Autodesk\DWG TrueView\R13\DWGVIEWR-E001:409\Profiles\<<\Unnamed Profile>>\Dialogs\AcPublishDlg
因此,我在其中创建了一个 'String Value',其中包含 ValueName: Location 和 ValueData: D:\MMA\Autocat\Testing
好的。就是这样了。毕竟我 运行 应用程序并调用了函数。调试器遍历代码并执行所有内容(或至少看起来是这样)但什么也没有发生。我在 D:\MMA\Autocat\Testing 文件夹中没有找到文件。我没有例外,没有任何警告。它只是执行,什么也没有发生。
那么我还尝试了什么。其中一些尝试可能有点天真或愚蠢,但我还是做了,因为我碰巧有点绝望。
我在控制台应用程序中尝试了一切。我不完全确定这种方法是否适合 ASP MVC,所以不幸的是,我用控制台应用程序尝试了相同的代码,得到了相同的结果。
我在位置字符串值中添加了一个文件名。我将 Location ValueData 从 'D:\MMA\Autocat\Testing' 更改为 'D:\MMA\Autocat\Testing\testFile.pdf' 因为我注意到在整个过程中没有任何地方要求转换文件的文件名。
根据我之前结论的想法,我尝试将 'result' 文件的路径提供给 SilentPublish 函数。
string[] pdfPath = new string[1] { @"D:\MMA\Autocat\Testing\testFile.pdf" }; contrl.SilentPublish(pdfPath);
再次无济于事。所以,我的问题,或者更确切地说,问题是:
是否可以这样做,如果是我做错了什么? 如果不是,你能建议一种方法吗? 此外,如果 .dwg 到 .dwf 的转换是可能的(使用相同或不同的方法,我洗耳恭听)
非常感谢
True View 不公开 Autodesk.AutoCAD.PlottingServices 命名空间。您将需要 AutoCAD、RealDWG 或其他第三方的许可副本 API。
我不确定您是否仍然遇到这个问题,但您应该可以使用 Autodesk Forge API 来解决这个问题。可以通过简单的 HTTP 调用从任何语言进行调用。您必须先转换为 SVF,然后再从那里转换为 DXF 和 PDF。