CAD实体与AS元素之间的访问
程序员文章站
2022-03-14 15:55:20
...
// convert this id from “AdvanceSteel” id to “Acad” id
一:通过ID交换的实现:
1:AS---->>>CAD
// get the "representation" id - the id that AutoCAD understands as being the object drawn on the screen
ASObjectId reprId = DatabaseManager.GetReprId(beam);
ObjectId acadIdBeam = new ObjectId(reprId.AsOldId());
2:CAD---->>>AS
ObjectId[] ids = acSSet.GetObjectIds();
//Iterate through the selected objects, and check if we have a straight beam
foreach (ObjectId id in ids)
{
//Get the beam filer object
ASObjectId idDbObject = DatabaseManager.GetFilerObjectId(new ASObjectId(id.OldIdPtr), false);
FilerObject obj = DatabaseManager.Open(idDbObject);
}
二:cad----->>as转换
通过提取CAD实体的信息重新生成AS元素
polyline = acTrans.GetObject(acEnt.ObjectId, OpenMode.ForWrite) as Polyline;//cad实体polyline
index = 0;
CircularArc3d arc3D = polyline.GetArcSegmentAt(index);//获取多段线中的弧0,1,2,3...
Point3d point3D = polyline.GetPoint3dAt(index);//获取多段线的顶点坐标0,1,2,3...
double bulg = polyline.GetBulgeAt(index);//获取多段线中的曲度值0,1,2,3...
MessageBox.Show("\n 多段线半径:" + arc3D.Radius);
MessageBox.Show("\n 多段线拐点数目:" + polyline.NumberOfVertices);
MessageBox.Show("\n 多段线顶点坐标:" + point3D.X + " " + point3D.Y + " " + point3D.Z);
MessageBox.Show("\n 多段线曲度1:" + bulg);
MessageBox.Show("\n 多段线曲度2:" + polyline.GetBulgeAt(2));
推荐阅读
-
ThinkPHP中URL路径访问与模块控制器之间的关系
-
C#实现XML与实体类之间相互转换的方法(序列化与反序列化)
-
荐读|属性与可直接访问的数据成员之间应该如何选
-
js ifram 字窗口与父窗口之间的dom访问
-
ThinkPHP中URL路径访问与模块控制器之间的关系
-
datatable与实体类之间相互转化的几种方法
-
小白前端开发笔记-(行内元素、块级元素、行内块元素、之间的区别与特点)
-
DataTable与结构不同实体类之间的转换
-
闭包的原理与经典应用场景,访问器属性,类与对象的创建与成员引用,数组与对象的解构过程与经典案例,JS引入到浏览器中的的方法及获取DOM元素的两个API
-
C#实现XML与实体类之间相互转换的方法(序列化与反序列化)