AE中如何获取曲线的一部分(转)

原文地址:http://yanfeiguo.blog.163.com/blog/static/1743846420080972643685/

AE中可以提取曲线的某一部分,而不改变曲线本身的结构,且提取的部分曲线将和源曲线具有相同的类型的属性。改功能的实现主要通过ICurve或IPolyline接口的GetSubcurve方法实现。下面对该方法做详细说明:

          在使用GetSubcurve方法前需要的已知条件为:
         (1)要提取部分曲线的源曲线;
         (2)从源曲线的起始点(FromPoint)到要提取的曲线部分的起始点和终止点的曲线长度,分布对应GetSubCurve方法的fromDistance参数和toDistance参数。由于在曲线上更容易得到的是点对象,因此可先获取要提取的曲线部分的始末点(这些点也应该是在曲线上的点),然后调用ICurve或IPolyline接口的QueryPointAndDistance方法获取距离值。其中,将要提取曲线部分的起始点作为QueryPointAndDistance方法的输入点参数(inPoint),则QueryPointAndDistance方法的输出点(outPoint)将与输入点相同,DistanceAlongCurve为源曲线的起始点(FromPoint)到要提取曲线部分的起始点的曲线长度;然后将要提取曲线部分的终止点作为QueryPointAndDistance方法的输入点参数(inPoint),再调用一次QueryPointAndDistance方法,获取的DistanceAlongCurve为源曲线的起始点(FromPoint)到要提取曲线部分的终止点的曲线长度。
           下面对GetSubcurve方法的参数做详细说明:
           (1)fromDistance: byval方式,double类型,表示从源曲线起始点(FromPoint)到要提取曲线的起始点的曲线长度;
           (2)toDistance:byval方式,double类型,表示从源曲线起始点(FromPoint)到要提取曲线的终止点的曲线长度;
           (3)asRatio:byval方式,bool类型,表示上面两个参数给定的长度是以绝对距离的方式给出还是以占曲线总长度的比例的方式给出;
           (4)ourSubcurve:out方式,ICurve类型,表示要提取的曲线部分,具有与源曲线相同的属性和类型。

       代码示例(C#):
          下面的示例用曲线上的一点将曲线分为两部分,分别提取曲线的这两部分:
           IPolyline i_poly = ... ; //源曲线
           //源曲线起始点(FromPoint)到将曲线分为两部份的点的曲线长度
           //通过QueryPointAndDistance方法获取
           double distAlongCurveFrom = ...;
           ICurve SplitResultPart1;     //曲线前一部分
           ICurve SplitResultPart2;     //曲线后一部分
           //获取曲线前一部分
           i_poly.GetSubcurve(0, distAlongCurveFrom, false, out SplitResultPart1);
           //获取曲线后一部分
           i_poly.GetSubcurve(0, distAlongCurveFrom, false, out SplitResultPart2);

原文地址:https://www.cnblogs.com/daidaigua/p/2849204.html