c#中getobjectsnappoints函数的用法 - 精华帖集合
www.dimcax.com
c#中getobjectsnappoints函数的用法
本程序运用于对象捕捉,运行时,拾取一个圆或圆弧、椭圆,能得到圆心(当然,不用这个方法也能得到)。圆心捕捉也可更改为中点捕捉、象限点捕捉等……
using system;
using autodesk.autocad.applicationservices;
using autodesk.autocad.runtime;
using autodesk.autocad.databaseservices;
using autodesk.autocad.editorinput;
using autodesk.autocad.geometry;
namespace cs对象捕捉
{
/// <summary>
/// testclass的说明。
/// </summary>
public class testclass
{
[commandmethod("test")]
public void test()
{
database db = hostapplicationservices.workingdatabase;
editor ed = application.documentmanager.mdiactivedocument.editor;
promptentityoptions opt = new promptentityoptions("\n请选择圆、圆弧或椭圆");
opt.setrejectmessage("\n您选择的对象不存在圆心,请重新选择!");
opt.addallowedclass(typeof(circle), true);
opt.addallowedclass(typeof(arc), true);
opt.addallowedclass(typeof(ellipse), true);
promptentityresult res = ed.getentity(opt);
if (res.status == promptstatus.ok)
{
using (transaction trans = db.transactionmanager.starttransaction())
{
entity ent = (entity)trans.getobject(res.objectid, openmode.forread);
point3d pickpt = res.pickedpoint;
point3dcollection snappts = new point3dcollection();
integercollection geomids = new integercollection();
geomids.add(0);
ent.getobjectsnappoints(objectsnapmodes.modecenter, 0, pickpt,
pickpt, matrix3d.identity, snappts, geomids);
ed.writemessage("\n您点取的点是:" + pickpt.tostring());
for (int i = 0; i < snappts.count; i++)
{
ed.writemessage("\n您捕捉到的点是:" + snappts[i].tostring());
}
trans.commit();
}
}
}
}
}
复制代码
能不能对上边的程序一一解剖。看里面都有那些函数和名词?
向同志们学习
学问必须合乎自己的兴趣,方才可以得益。