autocad Ribbon创建的一种新思路

news/2025/3/9 2:57:24/文章来源:https://www.cnblogs.com/myzw/p/18689574

之前开发的功能相对简单,

一个RibbonTab就把相关的功能展示出来了。

目前着手准备开发的功能,

需要多个RibbonTab,

且不想显示AutoCAD或Civil 3D自身的RibbonTab,

曾经想模拟3d3s的样子来切换RibbonTab,

但发现3d3s是将AutoCAD原生的Cuix和自己的RibbonTab结合到一起,

对于纯的AutoCAD,

这样做没什么问题,

但对于Civil 3D、map 3D或者Architecture,

这样做就有问题了,

加载3d3s后显示的是AutoCAD与3d3s的RibbonTab,

.....

后来发现软件原生的RibbonTab与自己定制RibbonTab的切换,

完全可以通过切换工作空间来实现。

加载到AutoCAD的情况

 

加载到Civil 3D的情况

 

对于数量不多的RibbonButton,

使用代码直接创建,

代码量不多,

编写和修改问题都不大,

但当RibbonButton数量很多时,

编写和修改代码就很困难了,

于是想借助Cuix文件来实现。

如果直接加载Cuix文件,

这些自定义的RibbonTab将会出现在所有的工作空间中,

所以不能采用简单的方式直接加载Cuix文件,

于是就有了这篇文章的新思路:

——读取Cuix文件“动态”创建RibbonTab。

读取Cuix文件使用的API是Autodesk.AutoCAD.Customization命名空间下的,

“动态”创建使用的API则是Autodesk.Windows和Autodesk.AutoCAD.Ribbon下的。

——中心思想就是将Autodesk.AutoCAD.Customization下的对象转换为Autodesk.Windows下的对象。

下面是代码片段:

using cuix = Autodesk.AutoCAD.Customization;
using Autodesk.Windows;CustomizationSection cs = new CustomizationSection(Path.GetDirectoryName(Uri.UnescapeDataString(new UriBuilder(Assembly.GetExecutingAssembly().CodeBase).Path))+ "\\工业总图三维设计.cuix", true);Autodesk.Windows.RibbonControl ribbonCtrol = ComponentManager.Ribbon;if (ribbonCtrol != null){foreach (cuix.RibbonTabSource rts in cs.MenuGroup.RibbonRoot.RibbonTabSources){RibbonTab rtab = ribbonCtrol.FindTab(rts.ElementID);if (rtab == null){rtab = new RibbonTab();rtab.Title = rts.Name;rtab.Id = rts.ElementID;ribbonCtrol.Tabs.Add(rtab);CreatePanels(rtab, rts);}

 

这样做的好处是:

当重启AutoCAD后,

自己的RibbonTab不再出现,

不会残留在主Cuix文件中。

 

当然,

工作空间也是在代码中动态创建的,

在AutoCAD正常退出的过程中,

也会将其删除。

 

 

目前完成的代码中只涉及到了简单的RibbonCommandButton、RibbonSplitButton相对简单的按钮,

没有涉及到RibbonTextBox等复杂的按钮。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/874747.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Solon Cloud Gateway 开发:导引

Solon Cloud Gateway 是 Solon Cloud 体系提供的分布式网关实现(轻量级实现)。Solon Cloud Gateway 是 Solon Cloud 体系提供的分布式网关实现(轻量级实现)。 分布式网关的特点(相对于本地网关):提供服务路由能力 提供各种拦截支持1、分布式网关推荐 建议使用专业的分布…

Mac安装Prometheus + Grafana

一、安装Prometheus 1、下载安装 brew install prometheus2、安装路径 /opt/homebrew/Cellar/prometheus/3.1.0 3、修改配置文件 默认配置文件路径:/opt/homebrew/etc/prometheus.yml global:scrape_interval: 15sscrape_configs:- job_name: "prometheus"static_co…

Python基础6——装饰器(续) 递归 模块

1.函数1.1 参数当默认参数的值为可变类型时慎用# 不推荐使用以下代码 def func(data, value=[]):pass可以将默认参数的值改为None# 推荐使用以下代码 def func(data, value=None):if not value:value = []案例def func(data, value=[]):value.append(data)return valuev1 = fun…

C# Winform 在 Pancel 上绘制矩形

在C#的WinForms应用程序中,Panel控件本身不直接支持绘图功能,因为它不是一个绘图控件。不过,你可以通过在Panel上覆盖(override)OnPaint方法或者使用Graphics对象来在Panel上绘制图形。下面是如何实现这两种方法的示例: 方法1:覆盖OnPaint方法 可以通过重写Panel的OnPai…

SpringBoot使用SSE流,打tar包发版后出现问题

SpringBoot使用SSE流,打tar包发版后出现问题 以下纯个人实践,如有问题,还望指正~ 出现的问题 出现原因:本地调试SSE推送数据没有问题,但是通过打包为tar包发版之后,出现了以下报错: 主要问题就是: java.lang.IllegalArgumentException: Async support must be enabled …

【每日一题】20250124

读书就是这样好,无论心不在焉,板着长脸,只要考试及格,就是一个及格的人。【每日一题】 1.(20分) \(\hspace{0.6cm}\)如图所示,质量 \(M=2 \; \mathrm{kg}\) 的滑块套在光滑的水平轨道上,质量 \(m=1 \; \mathrm{kg}\) 的小球通过长 \(L=0.5 \; \mathrm{m}\) 的轻质细杆与…

Golang sync.pool源码解析

sync.Pool 是 Go 中用于对象复用的工具,可减少频繁创建和销毁对象的开销,从而优化内存使用和降低 GC 压力。本文通过分析其用法、真实案例及源码结构,详细解读了 sync.Pool 的读写流程及其背后的高效设计思想,为性能优化提供了实用参考。Golang sync.pool源码解析 - sync.p…

从靶场到实战:双一流高校多个高危漏洞

本文结合其它用户案例分析讲解挖掘某双一流站点的过程,包含日志泄露漏洞深入利用失败,到不弱的弱口令字典进入后台,再到最后偶遇一个貌似只在靶场遇到过的高危漏洞。本文结合其它用户案例分析讲解挖掘某双一流站点的过程,包含日志泄露漏洞深入利用失败,到不弱的弱口令字典…

Nginx 架构和安装

1.1 Nginx 概述 1.1.1 Nginx 介绍 Nginx:engine X ,2002年开发,分为社区版和商业版(nginx plus ) 2019年3月11日 F5 Networks 6.7亿美元的价格收购 Nginx是免费的、开源的、高性能的HTTP和反向代理服务器、邮件代理服务器、以及TCP/UDP代理服务器 解决C10K问题(10K Connect…

Linux命令大全-快速查询手册

访问地址: 线上访问:https://git.io/linux 开源社区:https://github.com/jaywcjlove/linux-command 简要介绍: Linux 命令大全搜索工具,内容包含 Linux 命令手册、详解、学习、搜集,中文解释,支持背景切换。主要功能: 当前仓库搜集了 580 多个 Linux 命令,是一个非盈利…

IPTVnator - 最方便的开源 IPTV 播放器

IPTVnator 是一款视频播放器应用程序,提供对 IPTV 播放列表播放(m3u、m3u8)的支持。该应用程序允许用户使用远程 URL 或从本地文件系统上传文件来导入播放列表。此外,它还支持 XMLTV 格式的 EPG 信息,可以通过 URL 提供。该应用程序是一个使用 Electron(目前正在迁移到 T…

中电金信首次通过数据管理能力成熟度(DCMM)四级认证

日前,中国电子信息行业联合会发布《关于公布获得数据管理能力成熟度等级证书单位的通知(第十四批)》,中电金信正式通过数据管理能力成熟度(DCMM)等级认定——量化管理级(4级)。DCMM即数据管理能力成熟度评估模型(Data management Capability Maturity Model),是我国首…