c# - 来自 c# 的 AutoCAD 运行命令
问题描述
我想在 c# 中执行 autoCAD 命令。单击按钮后,我想将“JUSTIFYTEXT MC”命令应用于所选对象。目前我的代码可以在命令中执行,但将执行一个新的 AutoCAD 窗口。我想知道如何在当前运行的 CAD 窗口中运行该命令。
我的代码
AcadApplication acad = new AcadApplication();
acad.Visible = true;
acad.WindowState = AcWindowState.acMin;
acad.ActiveDocument.SendCommand("JUSTIFYTEXT MC ");
解决方案
我通过创建一个由自动加载器加载的包并创建一个Web Api
.
捆绑包:https ://adndevblog.typepad.com/autocad/2013/01/autodesk-autoloader-white-paper.html
捆绑包是一个文件夹,例如C:\ProgramData\Autodesk\ApplicationPlugins
,它具有特定的结构、Autodesk
捆绑包支持的产品、平台 (Win32
以及Win64
捆绑包的起点在哪里。此配置应PackageContents.xml
位于根目录中的 a 中。
PackageContents.xml
与包含所有 dll 等处于同一级别的内容文件夹。
这些 dll 可以在PackageContents.xml
正确配置和使用界面时在启动时加载IExtensionApplication
。
在扩展IExtensionApplication
接口的类中,您可以创建一种Web Api
或其他类型的通信,例如SignalR
何时Initialize()
调用。将连接字符串保存到文件并从您的其他应用程序中读取它。
您现在应该能够通过该实例中AutoCAD
托管的本地 Web api 与正在运行的实例进行通信AutoCAD
。
希望简短的解释有所帮助。
推荐阅读
- javascript - 反应应用。无法在尚未安装的组件上调用 setState
- docker - 使用 Docker Centos 7.5 映像运行 GitLab CI 管道时 ChromeHeadless 超时
- udp - 基于 DDS 的通信是否需要多播?
- angular - 如何在 Angular 6 解析器中捕获错误?
- asterisk - Asterisk 记录空文件
- javascript - 添加项目以淘汰视图模型,不更新视图
- javascript - 为什么 VS Code 的 JavaScript 语法高亮在使用 'var' 时会有所不同?
- c# - Akka.net 期刊阅读器丢失事件
- ios - 从 azure hub 向特定用户列表发送推送通知
- javascript - 如何查找 nrwl 模块的“找不到模块”的原因?