CAD二开(c#)小试牛刀系列1 选择多条线段并将线段长度汇入表格

本文介绍了如何使用CAD2019和VS2022集成,通过图层选择和命令行操作,选取特定图层的直线,计算其长度总和,并将结果显示在CAD表格中的过程。
摘要由CSDN通过智能技术生成

使用工具==CAD2019+VS2022

主要作用==通过图层选择多条直线,将直线的长度进行求和统计,将统计的结果绘制在CAD表格中

代码示例:


        [CommandMethod("Test")]

        public void Test()
        {
            //数据库
            Database db =HostApplicationServices.WorkingDatabase;
            //命令行
            Editor ed = AutoCad.Application.DocumentManager.MdiActiveDocument.Editor;

            //直线
            Line lines = new Line();
            //直线长度集合
            List<double> lineLenth = new List<double>();
            //选择的直线个数
            int nums = lineLenth.Count;
            //选择的直线长度总合
            double allLength = 0;

            //组过滤器
            TypedValue[] values = new TypedValue[]
            {
                //按图层过滤
                  new TypedValue((int)DxfCode.LayerName,"污水管道"),
                  new TypedValue((int)DxfCode.Start,"LINE"),//按类型过滤
            };
            //按过滤器选择
            SelectionFilter filter = new SelectionFilter(values);
            //通过 过滤器 选择实体
            PromptSelectionResult psResult = ed.GetSelection(filter);
            
            //如果选择成功
            if (psResult.Status == PromptStatus.OK)
            {
                //获取实体的id
                ObjectId[] ids = psResult.Value.GetObjectIds();      
                //开启事务
                using(Transaction trans = db.TransactionManager.StartTransaction())
                {
                    
                    foreach (ObjectId item in ids)
                    {         
                        //获取实体对象
                        Entity ents = trans.GetObject(item,OpenMode.ForRead) as Entity;
                        //如果选择的是直线类型
                        if(ents is Line)
                        {
                            //把选择的实体转换为直线
                            lines = ents as Line;
                            //添加到直线长度集合
                            lineLenth.Add(lines.Length);
                        }

                        //选择的不是直线
                        else
                        {
                            wind.MessageBox.Show("选择的不是直线类型");
                        }
                    }
                    //计算直线长度并相加
                    allLength = CalculateSum(lineLenth);
                    //提交事务
                    trans.Commit();
                }

                //表格
                Table tab = new Table();

                PromptPointResult psPoint = ed.GetPoint("选择表格插入位置");
                tab.Position =psPoint.Value;//表格位置
                tab.SetSize(3, 2);//表格行列总数
                tab.Width = 60;//表格的宽度
                //表格内容
                tab.Cells[0, 0].TextString = "统计";
                tab.Cells[1, 0].TextString = "总数";
                tab.Cells[1, 1].TextString = "总长";
                tab.Cells[1, 0].TextString = nums.ToString();
                tab.Cells[1, 1].TextString = allLength.ToString("0.00");
                //将表格绘制到CAD
                Tools.AddToModelSpace(db,tab);
            }

            //没有选择
            else
            {
                wind.MessageBox.Show("选择不能为空");
            }

            

        }//Test

//------------------以上为主要代码^^^^^^^^^^^


//计算直线总和函数
public static double CalculateSum(List<double> lianLenth)
{
    double sums = 0;
    for (int i = 0; i <lianLenth.Count ; i++)
    {
        sums = sums + lianLenth[i];
    }

    return sums;
}

//Tools.AddToModelSpace(db,tab) 这个是添加数据到CAD模型空间的函数,比较简单就写源码了

  • 8
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
CAD是计算机辅助设计(Computer-Aided Design)的缩写。它指的是利用计算机技术辅助进行设计和绘制的过程。CAD技术能够大大提高设计效率和质量,广泛应用于工程、建筑、制造、汽车等领域。 首先,CAD技术可以提高设计效率。相比传统手工绘图,CAD软件可以快速生成各种图形,并具备快速编辑和修改功能。设计师可以通过CAD软件实现快速的草图、布局和模型设计,极大地缩短了设计周期。 其次,CAD技术能够提升设计质量。CAD软件拥有丰富的工具和功能,可以进行精确的尺寸测量、角度计算和几何分析。设计师可以更加准确地进行设计和模拟,在设计过程中探索各种可能性,并及时发现和解决问题,从而提高设计的准确性和可靠性。 此外,CAD技术还具有可视化和三维模拟功能。设计师可以在CAD软件中创建三维模型,通过旋转和缩放等操作观察设计效果。这不仅帮助设计师更好地理解和展示设计概念,还能够提前发现设计上的问题,减少后期的修改和调整。 最后,CAD技术也提供了便捷的设计数据交流和共享方式。设计师可以通过CAD软件生成标准格式的设计图纸和文件,方便与团队成员、客户和供应商进行沟通和协作。这大大提高了设计信息的传递效率和准确性。 总之,CAD技术通过提高设计效率和质量,实现了数字化设计和制造的转型。这对于提升产品竞争力、缩短产品开发周期和降低成本具有重要意义。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值