C# CAD2016 cass10宗地Xdata数据写入

一、 查看cass10写入信息

C# Cad2016二次开发获取XData信息(二)

一共有81条数据
XData value: QHDM
XData value: 121321
XData value: SOUTH
XData value: 300000
XData value: 141121JC10720
XData value: 权利人
XData value: 0702
XData value: YBDJH
XData value: 预编号
XData value: TUFU
XData value: 3035.25-410.00
XData value: SJZGBM
XData value:
XData value: PZTDYT
XData value: 0101 水田
XData value: QLRZJLX
XData value: 1 身份证
XData value: QLRZJBH
XData value: 权利人身份证号码
XData value: FRDBXM
XData value: 法人代表名字
XData value: FRDBZJLX
XData value: 1 身份证
XData value: FRDBZMS
XData value: 法人身份证
XData value: FRDBDH
XData value: 法人电话
XData value: DLRXM
XData value: 代理人姓名
XData value: DLRZJLX
XData value: 1 身份证
XData value: DLRSFZ
XData value: 代理人身份证
XData value: DLRDH
XData value: 代理人电话
XData value: QSLYZM
XData value: 权属来源
XData value: TXDZ
XData value: 通信地址
XData value: BDDJ
XData value: 0
XData value: TDZL
XData value: 土地坐落
XData value: SBDJ
XData value: 0
XData value: DONGZHI
XData value: 东至
XData value: NANZHI
XData value: 南至
XData value: XIZHI
XData value: 西至
XData value: BEIZHI
XData value: 北至
XData value: SBJZWQS
XData value: 申报建筑物权属
XData value: TDZH
XData value: 土地证号
XData value: AREA
XData value: 579.5341
XData value: BLAREA
XData value: 80.9471
XData value: JZMD
XData value: 0.1397
XData value: JZMJ
XData value: 80.9471
XData value: RJL
XData value: 0.1397
XData value: DWXZ
XData value: 01 国有
XData value: QSXZ
XData value: 10 国有土地所有权
XData value: SYQLX
XData value: 11 划拨
XData value: GMJJHYFLDM
XData value: 01 农业
XData value: TDDJ
XData value: 101 综合一级
XData value: QSRQ
XData value: 20240214
XData value: ZZRQ
XData value: 20240214

二、准备电子表格数据对应81条数据进行填充(我采用csv)不需要考虑office版本问题

三、基础代码走起选择方式(批量导入)

这段C#代码定义了一个AutoCAD自定义命令(函数)zdimport,该命令属于名为“cad自定义面板集.jzd”的命名空间下的内部类zd导出。这个命令的主要功能是让用户从"宗地"图层中选择LWPOLYLINE对象,并可能对所选实体进行某种处理。

具体步骤如下:

  1. 获取当前AutoCAD应用的活动文档、数据库和编辑器对象,以便后续进行数据操作和用户交互。
  2. 创建一个选择过滤器,限制用户只能在"宗地"图层上选择LWPOLYLINE类型的对象。
  3. 使用编辑器提示用户按照设定的过滤规则进行实体选择,并获取用户选择的结果。
  4. 检查用户是否成功选择了至少一个实体。如果选择状态为PromptStatus.OK,则表示用户已成功选择实体。
  5. 开始一个新的事务以确保对AutoCAD数据库的操作具有原子性和一致性。
  6. 遍历用户所选的所有LWPOLYLINE对象的ID,但在给出的代码片段中,具体的处理逻辑被省略了(用注释符//...代替)。开发者可能需要在此处填充处理这些选定多段线的实际代码,例如读取其属性、修改它们或执行其他与业务需求相关的操作。

若要实现特定功能,可以在foreach (ObjectId outerId in outerSelRes.Value.GetObjectIds())循环内添加代码,例如读取并导出多段线的数据信息等。

    internal class zd导入
    {
        public static void zdimport()
        {
            // 获取当前AutoCAD应用中的活动文档、数据库和编辑器对象
            Document doc = Application.DocumentManager.MdiActiveDocument;
            Database db = doc.Database;
            Editor ed = doc.Editor;

            // 创建一个选择过滤器,限制用户只能选择"宗地"图层上的LWPOLYLINE对象作为外部边界
            SelectionFilter outerFilter = new SelectionFilter(new TypedValue[] {
                new TypedValue((int)DxfCode.Start, "LWPOLYLINE"),
                new TypedValue((int)DxfCode.LayerName, "宗地")
             });
            // 提示用户根据上述规则进行实体选择,并获取选择结果
            PromptSelectionResult outerSelRes = ed.GetSelection(outerFilter);
            // 检查用户是否成功选择了实体
            if (outerSelRes.Status == PromptStatus.OK)
            {

            }
        }
    }
}

四、 需要从cad上 获取对应信息,宗地预编号,权利人名字这两个基础信息( 宗地线范围内包含信息)

 通过SelectWindowPolygon获取到权利人图层和预编号图层的文本信息并把信息写入到宗地xdata对应信息

using (Transaction tr = db.TransactionManager.StartTransaction())// 开始事务处理以确保数据一致性
{
    foreach (ObjectId outerId in outerSelRes.Value.GetObjectIds())// 遍历所有被选中的外部多段线
    {
        Polyline outerPolyline = (Polyline)tr.GetObject(outerId, OpenMode.ForRead);
        // 确保所选多段线是闭合的且至少有一个顶点
        if (outerPolyline.Closed && outerPolyline.NumberOfVertices > 0)
        {
            // 创建并填充一个表示外部多段线边界坐标的点集合
            Point3dCollection outerPoints = new Point3dCollection();
            for (int i = 0; i < outerPolyline.NumberOfVertices; i++)
            {
                Point3d point = outerPolyline.GetPoint3dAt(i);              
                outerPoints.Add(point);
            }
           
            // 创建一个窗口选择过滤器,用于选择位于外部多段线内的所有实体
            SelectionFilter innerFilter = new SelectionFilter(new TypedValue[] {
                new TypedValue((int)DxfCode.Start, "TEXT"),
                new TypedValue((int)DxfCode.LayerName, "权利人"),
                 new TypedValue((int)DxfCode.LayerName, "预编号")
                 });
            // 使用多边形窗口选择方式让用户选择位于外部多段线内的实体
            PromptSelectionResult innerSelRes = ed.SelectWindowPolygon(outerPoints, innerFilter);
            // 检查用户是否成功在内部区域进行了实体选择
            if (innerSelRes.Status == PromptStatus.OK)
            {
                SelectionSet innerSelectionSet = innerSelRes.Value;
                foreach (ObjectId id2 in innerSelectionSet.GetObjectIds())
                {
                    DBText text = tr.GetObject(id2, OpenMode.ForRead) as DBText;
                    if (text != null)
                    {
                        // 获取图层名称
                        string layerName = text.Layer;
                        //文本信息
                        string textContent = text.TextString;
                        // 获取文本坐标
                        double xPos = text.Position.X;
                        double yPos = text.Position.Y;

                    }
                }
            }
        }
    }
}

 //有需要cad二次开发可以私信进行联系
//感谢大家的点赞,收藏,转发,关注   

相关推荐

  1. c# cass10 获取内所有算房产的房屋建筑面积

    2024-02-23 14:58:04       51 阅读
  2. CAD VBA 导出cass扩展数据到excel

    2024-02-23 14:58:04       73 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-02-23 14:58:04       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-02-23 14:58:04       100 阅读
  3. 在Django里面运行非项目文件

    2024-02-23 14:58:04       82 阅读
  4. Python语言-面向对象

    2024-02-23 14:58:04       91 阅读

热门阅读

  1. Jenkins

    2024-02-23 14:58:04       44 阅读
  2. c语言中的大小写字母转换怎么转?

    2024-02-23 14:58:04       51 阅读
  3. QDialog_trial_1

    2024-02-23 14:58:04       42 阅读
  4. 读书笔记:《看电影学金融》

    2024-02-23 14:58:04       39 阅读
  5. Python编程:从入门到实践(第二版)

    2024-02-23 14:58:04       43 阅读
  6. 如何用爬虫软件导出抖店商家的联系方式

    2024-02-23 14:58:04       86 阅读
  7. 在线最小公倍数计算器

    2024-02-23 14:58:04       50 阅读
  8. 前端大屏触摸签名实现

    2024-02-23 14:58:04       45 阅读