C#通过ObjectID获得该实体对象、获取多线段各顶点坐标
本帖最后由 7.兮♂贝 于 2013-7-30 16:11 编辑下面的实例实现内容:提示用户选择一个多线段实体,然后读取该多线段实体的属性、获取多线段顶点坐标
//需要访问Database的操作 需首先将该文档进行锁定,操作完成后,在最后进行释放
DocumentLock dlock = Application.DocumentManager.MdiActiveDocument.LockDocument();
Editor ed = Application.DocumentManager.MdiActiveDocument.Editor;
Database db=HostApplicationServices.WorkingDatabase;
try
{
using (Transaction tran = db.TransactionManager.StartTransaction())
{
//选择多线段实体
PromptEntityOptions EntityOpts = new PromptEntityOptions("请选择一个多线段实体:");
PromptEntityResult EntityResult = ed.GetEntity(EntityOpts);
//判断是否选择成功
if (EntityResult.Status == PromptStatus.OK)
{
//实体类型,可以进行判断是不是Polyline //Entity ent =(Entity)tran.GetObject(EntityResult.ObjectId, OpenMode.ForRead);
//Application.ShowAlertDialog(ent.GetType().ToString());
//得到该实体
Polyline pline = (Polyline)tran.GetObject(EntityResult.ObjectId, OpenMode.ForRead);
//多线段是否闭合 pline.Closed
//多线段起始点 pline.StartPoint
//多线段结束点 pline.EndPoint
//多线段的顶点数
int VNumber=pline.NumberOfVertices;
Point2d pnt;
//多线段各顶点坐标
for(int i=0;i<VNumber;i++)
{
pnt=pline.GetPoint2dAt(i);
ed.WriteMessage("\n"+pnt.ToString());
}
}
tran.Commit();
}
}
catch(Autodesk.AutoCAD.Runtime.Exception e)
{
Application.ShowAlertDialog(e.Message);
}
dlock.Dispose();
分享了...希望对后来者有用处!
代码有些小问题,你要判断pline不为null
这个没什么难度,最基础的
string isclosed = pline.Closed.ToString();//多线段是否闭合
这句干什么?
tran.Commit();
这句不需要,里面没有修改实体 liuxu042 发表于 2013-7-30 13:00 static/image/common/back.gif
代码有些小问题,你要判断pline不为null
这个没什么难度,最基础的
非常感谢,受教了... 开始学习。 学习,谢谢分享!
页:
[1]