C#+Visual Studio 2022为AutoCAD 2022开发插件并显示在Ribbon选项卡

1.插件功能开发

(1)建立C#类库项目,添加必要引用,都是autocad二次开发相关的,要注意对引用的库修改其"复制文件"属性为false

(2)项目调试使用"属性"打开"启用外部程序",指定为机器上autocad2022的acad.exe所在路径。

(3)建立一个新类,开发功能。

CommandMethod("CheckArea",CommandFlags.UsePickSet)\] //指令名称 public void CheckArea() { // 获取当前文档和数据库 Document doc =Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument; Database db = HostApplicationServices.WorkingDatabase; Editor ed = doc.Editor; //插件功能代码 } 2.Ribbon选显卡功能开发 在类里面添加一个方法: \[CommandMethod("RibbonDemo")

public void RibbonDemo()

{

// 获取程序集的加载路径

string currentDLLLocation = Path.GetDirectoryName(this.GetType().Assembly.Location) + "\\";

// 获取cad的Ribbon界面

RibbonControl ribbonCtrl = ComponentManager.Ribbon;

// 添加选项卡

RibbonTab tab = new RibbonTab();

tab.Title = "老旧小区插建房屋日照测算";

tab.Id = "Acad.RibbonId1";

tab.IsActive = true;

ribbonCtrl.Tabs.Add(tab);

// 给选项卡添加面板

RibbonPanelSource panelSource = new RibbonPanelSource();

panelSource.Title = "日照测算";

RibbonPanel ribbonPanel = new RibbonPanel();

ribbonPanel.Source = panelSource;

tab.Panels.Add(ribbonPanel);

// 命令按钮

RibbonButton pLineBtn = new RibbonButton();

string imgFileNameLineBtn = string.Format("{0}\\{1}\\{2}.png", currentDLLLocation, "Images", "big");

Uri uriLineBtn = new Uri(imgFileNameLineBtn);

BitmapImage bitmapImgeLineBtn = new BitmapImage(uriLineBtn);

// 按钮图片 16 * 16

pLineBtn.Image = bitmapImgeLineBtn;

// 按钮图片 32 * 32

pLineBtn.LargeImage = bitmapImgeLineBtn;

pLineBtn.ShowImage = true;

pLineBtn.Size = RibbonItemSize.Large;

pLineBtn.Orientation = System.Windows.Controls.Orientation.Vertical;

pLineBtn.Text = "面积测算";

pLineBtn.ShowText = true;

//添加提示对象

RibbonToolTip toolTipLine = new RibbonToolTip();

toolTipLine.Title = "日照测算";

toolTipLine.Content = "根据选定的区域测算插建日照房数量和面积是否达标";

toolTipLine.Command = "CHECKAREA";

toolTipLine.ExpandedContent = "CheckArea命令是一个自定义插件,其根据选定的区域测算插建日照房数量和面积是否达标。";

string imgToolTipFileNameLineBtn = string.Format("{0}\\{1}\\{2}.png", currentDLLLocation, "Images", "big");

Uri toolTipUriLineBtn = new Uri(imgToolTipFileNameLineBtn);

BitmapImage toolTipBitmapImgeLineBtn = new BitmapImage(toolTipUriLineBtn);

toolTipLine.ExpandedImage = toolTipBitmapImgeLineBtn;

pLineBtn.ToolTip = toolTipLine;

// 给按钮关联命令

pLineBtn.CommandHandler = new RibbonCommandHandler();

pLineBtn.CommandParameter = "CheckArea" + " ";

// 添加直线命令按钮

panelSource.Items.Add(pLineBtn);

}

3.配置插件自启动

在"C:\Program Files\Autodesk\ApplicationPlugins"目录下创建文件夹 " RibbonUI.bundle ",将生成的 debug 文件夹(包含Image)拷贝入 " RibbonUI.bundle " ,在此文件夹中,新建PackageContents.xml,填入以下代码

<?xml version="1.0" encoding="utf-8" ?>

<ApplicationPackage SchemaVersion="1.0" AppVersion="1.0"

ProductCode="{xxx}"

Name="ribbon测试插件"

>

<CompanyDetails

Name="****"

Email="****"

/>

<RuntimeRequirements OS="Win32|Win64" Platform="AutoCAD*" />

<Components>

<ComponentEntry ModuleName="./debug/XXXX.dll">

<Commands>

<Command Local="RibbonDemo" Global="RibbonDemo" StartupCommand="True"/>

</Commands>

</ComponentEntry>

</Components>

</ApplicationPackage>

参考链接:https://blog.csdn.net/wang2543311/article/details/124477198

相关推荐
与光同尘 大道至简3 小时前
ESP32 小智 AI 机器人入门教程从原理到实现(自己云端部署)
人工智能·python·单片机·机器人·github·人机交互·visual studio
不绝1914 小时前
C#核心:多态
开发语言·c#
橙露5 小时前
C#在视觉检测中的优势:工业智能化转型的利器
开发语言·c#·视觉检测
爱说实话6 小时前
C# DependencyObject类、Visual类、UIElement类
开发语言·c#
TDengine (老段)7 小时前
TDengine C# 语言连接器进阶指南
大数据·数据库·人工智能·物联网·c#·时序数据库·tdengine
a***59267 小时前
C++跨平台开发:挑战与实战指南
c++·c#
Yupureki8 小时前
《算法竞赛从入门到国奖》算法基础:入门篇-离散化
c语言·数据结构·c++·算法·visual studio
leo__5208 小时前
基于C#实现软件注册码注册机制
开发语言·c#·哈希算法
cjp5609 小时前
019.C#管道服务,两软件间用json数据交互
开发语言·c#·json
我的炸串拌饼店18 小时前
火山方舟API C#服务类设计解析
c#·调用火山方舟api