本人编程小白,本文对实际操作中自己遇见一些问题做些整理,欢迎指正。
1. 首先关于Polyline中有很多方法有此单词Parameter,翻译为参数,却不知其真实含义,经过测试了解后说明如下:
以方法GetParameterAtPoint为例,获取指定点的参数,其意为该点到该段线所占的比例。
如下图,左边是起点,多段线共3段,在顶点处分别为0,1,2,3
2. 关于方法GetParameterAtPoint(pt),因为指定的点pt是通过其他计算得来,所以实际使用中经常莫名出错,猜测可能是点并不在线上,可能有微小误差。尝试采用GetClosestPointTo方法先获取其最近的在线上的点,目前初步测试可行。如下
public static double GetPolParAtPt(this Polyline pol,Point3d pt)
{
//对多义线和指定点,返回其参数值
//官方函数实际使用中经常莫名出错,考虑可能因为点不在线上造成此问题
//所以尝试此方法解决
double mypar = new double();
Point3d pttenm = pol.GetClosestPointTo(pt,false);
mypar = pol.GetParameterAtPoint(pttenm);
return mypar;
}