C#CAD二次开发读取CAD表格数据

 Document doc = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument;
            Database data = doc.Database;
            Editor ed = doc.Editor;
            AcadApplication AcadApp = (AcadApplication)System.Runtime.InteropServices.Marshal.GetActiveObject("AutoCAD.Application");
            AcadDocument AcadDoc = AcadApp.ActiveDocument;
            System.Data.DataTable dt = new System.Data.DataTable();

            using (Transaction trans = data.TransactionManager.StartTransaction())
            {
                object returnObj, pickPoint;
                string pickPrompt = "请选择Excel数据对象或者CAD表格对象:";
                try
                {
                    AcadDoc.Utility.GetEntity(out returnObj, out pickPoint, pickPrompt);
                }
                catch (System.Exception)
                {
                    ed.WriteMessage("未选择对象,命令结束!");
                    return;
                }
                
                AcadObject returnCADObj = (AcadObject)returnObj;
                AcRowType acRowType = new AcRowType();

                if (returnCADObj.ObjectName == "AcDbTable")
                {
                    AcadTable cadTable = (AcadTable)returnCADObj;
                    if ((cadTable.Columns > 0) && (cadTable.Rows > 0))
                    {
                        dt.Columns.Clear();
                        #region  为DataTable添加列标题
                        int title_row = 0;
                        for (int j = 0; j < cadTable.Rows; j++)
                        {
                            acRowType = cadTable.GetRowType(j);

                            //如果获取的行标题
                            if (acRowType.ToString() == "acTitleRow")
                            {
                                title_row = j + 1;
                                break;
                            }
                        }
                        for (int i = 0; i < cadTable.Columns; i++)
                        {
                            dt.Columns.Add(cadTable.GetText(title_row, i));
                        }
                        #endregion

                        #region  为DataTable添加数据
                        int rowIndex = 0;
                        for (int i = 0; i < cadTable.Rows; i++)
                        {
                            acRowType = cadTable.GetRowType(i);
                            //如果获取的行不是数据行(而是表头或者标题或者位置类型)
                            if (acRowType.ToString() != "acDataRow")
                                continue;
                            dt.Rows.Add();
                            for (int j = 0; j < cadTable.Columns; j++)
                            {
                                dt.Rows[rowIndex][j] = cadTable.GetText(i, j);
                            }
                            rowIndex += 1;
                        }
                        #endregion
                    }
                    else
                        ed.WriteMessage("选择错误,请重新选择!");
	      }

                
  • 4
    点赞
  • 38
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
C# CAD二次开发中,获取多边形的角度可以使用尺寸标注类中的转角标注(rotateddimension)。通过选择多边形的边界线,然后使用代码中的GetSelection方法获取选中的尺寸标注对象。在循环中,可以通过RotatedDimension对象的Measurement属性获取每个角度的数值。以下是一个获取多边形角度的示例代码: ``` public void GetPolygonAngles() { Database db = HostApplicationServices.WorkingDatabase; Document doc = Application.DocumentManager.MdiActiveDocument; Editor ed = doc.Editor; using (Transaction trans = db.TransactionManager.StartTransaction()) { var selectedDimensions = from dim in db.GetSelection<RotatedDimension>() where dim.ColorIndex >= 0 select dim; foreach (RotatedDimension dimension in selectedDimensions) { double angle = dimension.Measurement; Application.ShowAlertDialog("角度: " + angle.ToString()); } trans.Commit(); } } ``` 这段代码将获取选中的转角标注对象,并循环输出每个转角标注的角度。请注意,你需要在你的项目中引用相应的命名空间和CAD开发库。123 #### 引用[.reference_title] - *1* *2* [cad二次开发c#学习记录4——导出图纸标注的尺寸](https://blog.csdn.net/weixin_48897477/article/details/127777400)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}} ] [.reference_item] - *3* [cad二次开发C#学习记录5——导出属性块信息](https://blog.csdn.net/weixin_48897477/article/details/128601490)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值