036集——查询CAD图元属性字段信息:窗体显示(CAD—C#二次开发入门)

news2024/11/16 14:07:41

提取CAD图元所有属性字段,通过窗体显示,效果如下:(curve改为entity)

 代码如下:

   public void 属性查询()       
   {
           List<Curve> ents = Z.db.SelectEntities<Curve>();
       if (ents is null ||ents.Count ==0)
       {
           Z.ed.WriteMessage("未选择!\n");
           return;
       }
       object obj = ents[0];
           string str = "";
           str += "对象全部属性:  >\n";
           str += "类型:    " + obj.GetType() + "\n";
           PropertyInfo[] pis = obj.GetType().GetProperties(BindingFlags.Public | BindingFlags.Instance);
           foreach (var pi in pis)
           {
               try { str += pi.Name + " :    " + pi.GetValue(obj, null).ToString() + "\n"; }
               catch { str += pi.Name + "     " + "Null" + "\n"; }
           }
           //MessageBox.Show(str);
           TextForm f = new TextForm();
           f.richTextBox1.Text = str;
           Autodesk.AutoCAD.ApplicationServices.Application.ShowModalDialog(f);
   }

  public class Class1
  {
    private bool ev = false;
    [CommandMethod("netloadx")]
        public void Netloadx()
        {
            //IL_0017: Unknown result type (might be due to invalid IL or missing references)
            //IL_001d: Expected O, but got Unknown
            //IL_0036: Unknown result type (might be due to invalid IL or missing references)
            //IL_003c: Invalid comparison between Unknown and I4
            Editor editor = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument.Editor;
            string text = "山水qq443440204";
            OpenFileDialog val = new OpenFileDialog();
            ((FileDialog)val).Filter = "dll文件(*.dll)|*.dll";
            ((FileDialog)val).Title = "打开dll文件";
            if ((int)((CommonDialog)val).ShowDialog() != 1)
            {
                return;
            }

            text = ((FileDialog)val).FileName;
            AssemblyDependent assemblyDependent = new AssemblyDependent(text);
            bool flag = true;
            AssemblyDependent.LoadDllMessage[] array = assemblyDependent.Load().ToArray();
            foreach (AssemblyDependent.LoadDllMessage loadDllMessage in array)
            {
                if (!loadDllMessage.LoadYes)
                {
                    editor.WriteMessage("\n" + loadDllMessage.Path + "失败!");
                    flag = false;
                }
            }

            if (flag)
            {
                editor.WriteMessage("\n加载成功!\n");
            }
        }
        [CommandMethod("ww")]
        public void ww()
        {
          var doc = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument;
          var db = doc.Database;
          var ed = doc.Editor;
          var ad = new AssemblyDependent(@"G:\Csharp\李小科CSharp\AcTools\bin\Debug\AcTools.dll");  //写上你dll的路径
          var msg= ad.Load();

          bool allyes = true;
          foreach (var item in msg)
          {
            if (!item.LoadYes)
            {
              ed.WriteMessage("\n**" + item.Path +"**重复版本号,无需再次加载!" + System.Environment.NewLine);
              allyes = false;
            }
          }
          if (allyes)
          {
            ed.WriteMessage( "\n加载成功!\n");
          }
          if (!ev) { System.AppDomain.CurrentDomain.AssemblyResolve += RunTimeCurrentDomain.DefaultAssemblyResolve; ev = true; }
     
    }

        [CommandMethod("sxcx")]
        public void 属性查询()
        {
            List<Entity> ents = SelectEntities<Entity>();
            if (ents is null || ents.Count == 0)
            {
                Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument.Editor.WriteMessage("未选择!\n");
                return;
            }
            object obj = ents[0];
            string str = "";
            str += "对象全部属性:  >\n";
            str += "类型:    " + obj.GetType() + "\n";
            PropertyInfo[] pis = obj.GetType().GetProperties(BindingFlags.Public | BindingFlags.Instance);
            foreach (var pi in pis)
            {
                try { str += pi.Name + " :    " + pi.GetValue(obj, null).ToString() + "\n"; }
                catch { str += pi.Name + "     " + "Null" + "\n"; }
            }
            str += "\n";
            //MessageBox.Show(str);
            TextForm f = new TextForm();
            f.richTextBox1.Text = str;
            Autodesk.AutoCAD.ApplicationServices.Application.ShowModalDialog(f);
        }
        public  List<T> SelectEntities<T>() where T : Entity
        {
            List<T> result = new List<T>();
            Editor editor = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument.Editor;
            var pso = new PromptSelectionOptions();
            pso.MessageForAdding = "\n请选择:";
            PromptSelectionResult psr = editor.GetSelection(pso);
            if (psr.Status == PromptStatus.OK)
            {
                ObjectId[] objectids = psr.Value.GetObjectIds();
                Database database = HostApplicationServices.WorkingDatabase;
                using (Transaction tran = database.TransactionManager.StartTransaction())
                {
                    foreach (var item in objectids)
                    {
                        Entity entity = item.GetObject(OpenMode.ForRead) as Entity;
                        if (entity is T)
                        {
                            result.Add(entity as T);
                        }

                    }
                }
            }
            return result;
        }

    }

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

反转链表

反转链表 给你单链表的头节点 head &#xff0c;请你反转链表&#xff0c;并返回反转后的链表。 示例 1&#xff1a; 输入&#xff1a;head [1,2,3,4,5] 输出&#xff1a;[5,4,3,2,1]示例 2&#xff1a; 输入&#xff1a;head [1,2] 输出&#xff1a;[2,1]示例 3&#xff1…

使用 Ansys Mechanical 中的“螺栓工具”插件导出螺栓反作用力

概括&#xff1a; 对于处理复杂组件和结构的工程师和分析师来说&#xff0c;提高在 Ansys Mechanical 中提取多个螺栓反作用力表格的效率至关重要。在有限元分析 (FEA) 中&#xff0c;准确确定螺栓上的反作用力对于评估机械连接的完整性和性能至关重要。但是&#xff0c;手动提…

《FreeRTOS任务基础知识以及任务创建相关函数》

目录 1.FreeRTOS多任务系统与传统单片机单任务系统的区别 2.FreeRTOS中的任务&#xff08;Task&#xff09;介绍 2.1 任务特性 2.2 FreeRTOS中的任务状态 2.3 FreeRTOS中的任务优先级 2.4 在任务函数中退出 2.5 任务控制块和任务堆栈 2.5.1 任务控制块 2.5.2 任务堆栈…

【HAProxy09】企业级反向代理HAProxy高级功能之压缩功能与后端服务器健康性监测

HAProxy 高级功能 介绍 HAProxy 高级配置及实用案例 压缩功能 对响应给客户端的报文进行压缩&#xff0c;以节省网络带宽&#xff0c;但是会占用部分CPU性能 建议在后端服务器开启压缩功能&#xff0c;而非在HAProxy上开启压缩 注意&#xff1a;默认Ubuntu的包安装nginx开…

Gin 框架入门(GO)-1

解决安装包失败问题&#xff08;*&#xff09; go env -w GO111MODULEon go env -w GOPROXYhttps://goproxy.cn,direct 1 介绍 Gin 是一个 Go (Golang) 编写的轻量级 http web 框架&#xff0c;运行速度非常快&#xff0c;Gin 最擅长的就是 Api 接口的高并发。 2 Gin 环境搭建…

前端知识点---this的用法 , this动态绑定(Javascript)

文章目录 this动态绑定 , this的用法01. 全局作用域下的 this02. 函数中的 this2.1 普通函数调用2.2 构造函数调用2.3 箭头函数中的 this 03对象方法调用04. 事件处理中的 this05. 动态绑定的方式5.1 call 方法5.2 apply 方法5.3 bind 方法 06类中的 this07. 总结 this动态绑定…

Unity 跳过启动屏/Logo

使用官方API跳过Unity启动页 1.通过Unity的SplashScreen提供的接口 [Preserve]public class SkipSplash{[RuntimeInitializeOnLoadMethod(RuntimeInitializeLoadType.BeforeSplashScreen)]private static void BeforeSplashScreen(){ #if UNITY_WEBGLApplication.focusChanged…

matplotlib2

第六部分&#xff1a;保存与导出图表 在实际的应用场景中&#xff0c;我们不仅需要在程序中展示图表&#xff0c;有时候还需要将这些图表保存为文件&#xff0c;以便在其他地方使用&#xff0c;比如插入文档、报告或网页中。matplotlib 提供了非常方便的保存图表功能。 6.1 保…

Linux卸载金仓KingBaseES数据库

Linux卸载金仓KingBaseES数据库 1、卸载前删除数据库服务2、图形化卸载3、控制台卸载4、静默卸载 1、卸载前删除数据库服务 如果在安装后执行root.sh脚本在系统中注册了数据库服务&#xff0c;需要在卸载前执行rootuninstall.sh脚本删除已注册的数据库服务。具体步骤如下&#…

【C#设计模式(11)——外观模式(Facade Pattern)】

前言 外观模式隐藏了子系统的复杂性&#xff0c;简化了客户端与子系统之间的交互。 代码 public class Facade{private CommunicationModel communicationModel;private AcquisitionModel acquisitionModel;private ToolModel toolModel;public Facade(){communicationModel n…

Spring Boot编程训练系统:数据管理与存储

摘要 随着信息技术在管理上越来越深入而广泛的应用&#xff0c;管理信息系统的实施在技术上已逐步成熟。本文介绍了编程训练系统的开发全过程。通过分析编程训练系统管理的不足&#xff0c;创建了一个计算机管理编程训练系统的方案。文章介绍了编程训练系统的系统分析部分&…

OceanBase 升级过程研究(4.2.1.6-4.2.1.8)

模拟业务 使用benchmark加载10仓数据模拟业务场景 升级方法 使用滚动升级方式来进行OB升级。该方法前提是OB集群必须满足官方规定的高可用架构(如果 Zone 个数小于 3&#xff0c;滚动升级时则无法构成多数派), 滚动升级的原理就是轮流完成每个ZONE的升级工作&#xff0c;由于…

三周精通FastAPI:42 手动运行服务器 - Uvicorn Gunicorn with Uvicorn

官方文档&#xff1a;Server Workers - Gunicorn with Uvicorn - FastAPI 使用 fastapi 运行命令 可以直接使用fastapi run命令来启动FastAPI应用&#xff1a; fastapi run main.py如执行 fastapi run openapi.py启动后显示&#xff1a; INFO Using path openapi.py …

springboot的社区团购系统设计录像

springboot的社区团购系统设计录像 springboot的社区团购系统设计

C++清除所有输出【DEV-C++】所有编辑器通用 | 算法基础NO.1

各位小伙伴们&#xff0c;上一期的保留小数位数教学够用一辈子&#xff0c;有不错的点赞量&#xff0c;可我连一个粉丝铁粉都没有&#xff0c;你愿意做我的第一个铁粉吗&#xff1f;OK废话不多说&#xff0c;开始&#xff01; 温故与知心 可能你也学过&#xff0c;且是工作者…

【Pytorch】Python random 模块

Python random 模块主要用于生成随机数&#xff0c;是常用的一个包&#xff0c;random 模块实现了各种分布的伪随机数生成器。在训练传统机器学习模型或者深度神经网络模型的过程中经常会用到。要使用 random 函数必须先导入&#xff1a; import random1. random() 使用random(…

Android OpenGLES2.0开发(八):Camera预览

严以律己&#xff0c;宽以待人 引言 终于到该章节了&#xff0c;还记得Android OpenGLES2.0开发&#xff08;一&#xff09;&#xff1a;艰难的开始章节说的吗&#xff1f;写这个系列的初衷就是因为每次用到GLSurfaceViewCamera预览时&#xff0c;总是CtrlC、CtrlV从来没有研究…

JMX Exporter源码解读+生产环境最佳实践+解决其抓取指标超时问题

文章目录 背景第一版配置-查询所有MBean第二版配置-配置白名单第三版配置-增加Cache第四版配置-修改jmx_exorter源码禁用默认jvm导出第五版配置-基于第四版excludeObjectNameAttributes第六版配置-修改jmx_exorter源码includeObjectNameAttributes配置基于release-1.0.1分支修改…

前端(3)——快速入门JaveScript

参考&#xff1a; 罗大富 JavaScript 教程 | 菜鸟教程 JavaScript 教程 1. JaveScript JavaScript 简称 JS JavaScript 是一种轻量级、解释型、面向对象的脚本语言。它主要被设计用于在网页上实现动态效果&#xff0c;增加用户与网页的交互性。作为一种客户端脚本语言&#…

人工智能:塑造未来的工作与生活

目录 人工智能技术的应用前景与影响 人工智能的历史与现状 人工智能的应用领域 人工智能的前景与挑战 个人视角&#xff1a;人工智能的应用前景与未来 人工智能在生活中的潜力 面对人工智能带来的挑战 我的观点与建议 结语 人工智能技术的应用前景与影响 随着人工智能…