一条开放边去切一个闭合的多段线
一条开放边去切一个闭合的多段线,找到交点了,如何知道一个交点交在闭合多段线的哪两个点之间??没人回答哎!!
用GetParameterAtPoint判断
int i =(int)pl.GetParameterAtPoint(pt); 回复 sailorcwx 的帖子
这个交点不是原来闭合多段线上的点啊,我只是想知道交点的前后是多段线上的那个点。 不明白你的意思
你求得的交点不是多段线上的点,那是什么点 回复 sailorcwx 的帖子
不是多段线上原有的点...比如这个多段线有29个点,交点在26和27点之间。那我怎样获得26,27这两个点? 一条开放边去切一个闭合的多段线,找到交点了,
这个交点肯定在多段线上面了,要不怎么叫交点
GetParameterAtPoint是获取曲线上某一点的参数值
多段线的参数值的特点是,节点的参数是递增的整数 本帖最后由 sailorcwx 于 2010-12-14 15:40 编辑
public void test()
{
Editor ed=Application.DocumentManager.MdiActiveDocument.Editor;
PromptEntityOptions peo = new PromptEntityOptions("\n选择多段线");
PromptEntityResult per = ed.GetEntity(peo);
if (per.Status != PromptStatus.OK)
return;
ObjectId plid = per.ObjectId;
using (Transaction tr = HostApplicationServices.WorkingDatabase.TransactionManager.StartTransaction())
{
Polyline pl = tr.GetObject(plid, OpenMode.ForRead) as Polyline;
while (true)
{
PromptPointOptions ppo = new PromptPointOptions("\n选择多段线上的点");
ppo.AllowNone = true;
PromptPointResult ppr = ed.GetPoint(ppo);
if (ppr.Status != PromptStatus.OK)
return;
Point3d pt = ppr.Value;
int i =(int)pl.GetParameterAtPoint(pt);
ed.WriteMessage("\n选择点介于{0}和{1}顶点之间",Convert.ToString(i+1),Convert.ToString(i+2));
}
}
}
页:
[1]