重庆网站seo设计,好玩的网页游戏链接,景德镇市建设局网站,it运维工资多少运行环境Visual Studio 2022 c# cad2016
一、XData#xff08;扩展数据#xff09;特定代码值
XData#xff08;扩展数据#xff09;特定代码值 XData通过一系列DXF组码#xff08;DxfCode#xff09;存储不同类型的数据#xff0c;包括但不限于ASCII字符串、已注册应… 运行环境Visual Studio 2022 c# cad2016
一、XData扩展数据特定代码值
XData扩展数据特定代码值 XData通过一系列DXF组码DxfCode存储不同类型的数据包括但不限于ASCII字符串、已注册应用程序名称、控制字符串、图层信息、二进制数据块、坐标值、方向向量、实数、距离、比例和整数等。
ExtendedDataAsciiString1000表示一个ASCII格式的字符串。
ExtendedDataRegAppName1001指向已注册应用程序的名称用于识别或解释相关联的XData。
ExtendedDataControlString 1002控制字符串通常用作分隔符或其他特殊标记用途。
ExtendedDataLayerName 1003图层名称信息。
ExtendedDataBinaryChunk 1004二进制数据块用于存储非文本格式数据。
ExtendedDataHandle1005句柄指向数据库中的其他对象。坐标相关ExtendedDataXCoordinate 1010
ExtendedDataYCoordinate 1020
ExtendedDataZCoordinate1030分别表示笛卡尔坐标系下的X、Y、Z坐标值。
ExtendedDataWorldXCoordinate1011, ExtendedDataWorldYCoordinate 1021, ExtendedDataWorldZCoordinate 1031世界坐标系下的绝对坐标X、Y、Z。
ExtendedDataWorldXDisp, ExtendedDataWorldYDisp, ExtendedDataWorldZDisp世界坐标系下的位移量。
ExtendedDataWorldXDir, ExtendedDataWorldYDir, ExtendedDataWorldZDir世界坐标系下的方向向量。其他数值类型ExtendedDataReal1040实数类型的数值。
ExtendedDataDist 1041距离数值精确的距离测量结果。
ExtendedDataScale1042比例数值例如缩放因子。
整数类型
ExtendedDataInteger16 107016位整数。
ExtendedDataInteger32107132位整数。ExtendedDataLong1072有时也用于表示32位整数具体取决于上下文。
还有更多其它组码用来表示颜色、点样式、线型等图形属性以及各种布尔值、角度、日期时间等数据类型。
二、新建注册应用程序的名称
当使用XData扩展数据存储自定义信息时包含一个DXF组码为ExtendedDataRegAppName1001的数据确保其他软件组件能够根据这个标识来解析相应的数据格式。 public static void CreateRegApp(this Document doc, string appName){try{using (var documentLock doc.LockDocument()){using (Transaction trans doc.Database.TransactionManager.StartTransaction()){RegAppTable table (RegAppTable)trans.GetObject(doc.Database.RegAppTableId, OpenMode.ForWrite, false);if (!table.Has(appName)){RegAppTableRecord regAppRec new RegAppTableRecord();regAppRec.Name appName;table.Add(regAppRec);trans.AddNewlyCreatedDBObject(regAppRec, true);}trans.Commit();}}}catch (Exception ex){throw ex;}}
三、向选定实体添加扩展数据XData
选定的AutoCAD实体上添加包含已注册应用程序标识以及特定ASCII文本信息的扩展数据。 using (Transaction transaction db.TransactionManager.StartTransaction()){Entity ent01 transaction.GetObject(outerId, OpenMode.ForWrite) as Entity;ResultBuffer rb new ResultBuffer();rb.Add(new TypedValue((int)DxfCode.ExtendedDataRegAppName, ACAD));rb.Add(new TypedValue((int)DxfCode.ExtendedDataAsciiString, 作者John Doe));ent01.XData rb;// 构造 ResultBuffer 对象来存储扩展数据transaction.Commit();ed.WriteMessage(\n成功向选中实体添加了 XData。);} 四、检查是否成功添加了扩展数据XData 编写代码检查 您可以再次通过.NET API读取刚刚设置过XData的实体并查看其XData属性来验证数据是否已成功添加。 using (Transaction transaction db.TransactionManager.StartTransaction()){Entity ent01 transaction.GetObject(outerId, OpenMode.ForRead) as Entity;// 检查实体是否存在扩展数据if (ent01.XData ! null){ResultBuffer rb ent01.XData; // 获取实体的扩展数据// 遍历ResultBuffer以查看数据foreach (TypedValue tv in rb){switch ((DxfCode)tv.TypeCode){case DxfCode.ExtendedDataRegAppName:string regAppName tv.ToString();break;case DxfCode.ExtendedDataAsciiString:string asciiData tv.ToString();ed.WriteMessage(\n找到的ASCII字符串 asciiData);break;// 其他类型的DXF组码...}}}else{ed.WriteMessage(\n实体没有扩展数据);}// 无需在这里提交事务因为我们只是读取数据}
五、总结
一、XData扩展数据特定代码值 XData通过一系列DXF组码DxfCode存储不同类型的数据包括但不限于ASCII字符串、已注册应用程序名称、控制字符串、图层信息、二进制数据块、坐标值、方向向量、实数、距离、比例和整数等。
二、新建注册应用程序的名称 为了使其他软件组件能够识别并解析自定义的XData格式可以创建一个已注册的应用程序。提供的C#方法CreateRegApp会检查文档中的RegAppTable是否存在指定名称的应用程序如果不存在则创建新的RegAppTableRecord并添加到表中。
三、向选定实体添加扩展数据XData 通过.NET API可以为选定的AutoCAD实体添加包含已注册应用程序标识和特定ASCII文本信息的XData。示例代码中创建了一个ResultBuffer对象并向其中添加了指向“ACAD”注册应用程序和一个ASCII字符串的TypedValue然后将该ResultBuffer设置为实体的XData属性。
四、检查是否成功添加了扩展数据XData 验证是否成功添加XData的方法是再次读取实体的XData属性。如果实体具有非空的XData属性则遍历其内容并根据DXF组码解析出已添加的数据例如在示例中输出找到的ASCII字符串。由于只是读取数据因此无需提交事务。 //祝大家好运
//感谢大家的点赞收藏转发关注