ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

CAD二次开发 学习笔记(4)

2022-04-30 12:32:24  阅读:196  来源: 互联网

标签:app 笔记 Application dialog 二次开发 line void CAD


 

CAD二次开发 学习笔记(4)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

CAD事件测试-更改系统变量,并触发事件(弹出一个警告对话框,并显示更改内容)

 /// <summary>
        /// 将事件处理程序注册(添加)到事件
        /// </summary>
        [CommandMethod("AddAppEvent")]
        public void AddAppEvent()
        {
            Application.SystemVariableChanged += SystemVariableChangedHandler;
        }
        /// <summary>
        /// 取消事件处理程序的注册(移除)
        /// </summary>
        [CommandMethod("RemoveAppEvent")]
        public void RemoveAppEvent()
        {
            Application.SystemVariableChanged -= SystemVariableChangedHandler;
        }
        /// <summary>
        /// 定义事件处理程序
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void SystemVariableChangedHandler(object sender, SystemVariableChangedEventArgs e)
        {
            Application.ShowAlertDialog($"\n改变了系统变量:{e.Name}\n改变后的值为:{Application.GetSystemVariable(e.Name)}");
        }

运行结果

通过选择一个dwg文件,来启动CAD,并与CAD相关联

/// <summary>
        /// 通过选择dwg文件,启动CAD,以便与CAD进行关联
        /// </summary>
        private void StartCAD()
        {
            try
            {
                app = System.Runtime.InteropServices.Marshal.GetActiveObject("AutoCAD.Applicaton") as AcadApplication;
                doc = app.ActiveDocument;
            }
            catch (Exception)
            {
                OpenFileDialog dialog = new OpenFileDialog();
                dialog.Filter = "CAD文件(*.dwg)|*.dwg|CAD图形文件(*.dxf)|*.dxf";
                dialog.ShowDialog();
                dialog.Title = "打开CAD文件";
                string path = dialog.FileName;
                if (path == "")
                {
                    MessageBox.Show("选择文件无效!", "文件无效!");
                    Application.Exit();
                }
                app = new AcadApplication();
                if (File.Exists(path))
                    doc = app.Documents.Open(path, null, null);
            }
            app.Visible = true;

            Microsoft.VisualBasic.Interaction.AppActivate(app.Caption);

        }

通过WinForm程序,获取选择集对象,并显示直线对象的坐标信息到WinForm窗体控件

        AcadApplication app;
        AcadDocument doc;
        /// <summary>
        /// 通过手动选择获取选择集,从而获取直线坐标
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void button_GetLineCoords_Click(object sender, EventArgs e)
        {
            Microsoft.VisualBasic.Interaction.AppActivate(app.Caption);
            AcadSelectionSet ss = doc.SelectionSets.Add("NewSelectionSet001");
            Int16[] filterType = new Int16[] { 0 };
            object[] filterData = new object[] { "*" };
            ss.SelectOnScreen(filterType, filterData);
            if (ss == null) return;

            int count = 1;
            foreach (AcadObject item in ss)
            {
                if (item.ObjectName == "AcDbLine")
                {
                    AcadLine line = (AcadLine)item;
                    listBox1.Items.Add($"第{count}条直线坐标");
                    listBox1.Items.Add($"起点坐标X:{line.StartPoint[0]},Y:{line.StartPoint[1]},Z:{line.StartPoint[2]}");
                    listBox1.Items.Add($"终点坐标X:{line.EndPoint[0]},Y:{line.EndPoint[1]},Z:{line.EndPoint[2]}");
                    count++;
                }

            }
            listBox1.Items.Add($"共选择{ss.Count}个对象,其中直线{count - 1}条");
            doc.SelectionSets.Item("NewSelectionSet001").Delete();
            Microsoft.VisualBasic.Interaction.AppActivate(this.Text);

        }

运行结果

标签:app,笔记,Application,dialog,二次开发,line,void,CAD
来源: https://www.cnblogs.com/zhangdezhang/p/16209883.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有