public void CurveSnap(ObjectSnapContext context, ObjectSnapInfo result) { Curve curve = (Curve)context.PickedObject; //当前捕捉到的曲线对象 Point3dCollection snaps = result.SnapPoints; //获取对象的捕捉点集合 if (curve.Closed) { return; //如果为闭合曲线,则返回 } double startParam = curve.StartParam; //曲线的起点参数 double endParam = curve.EndParam; //曲线的终点参数 //将与曲线起点的距离为1/3曲线长度的点作为捕捉点 snaps.Add(curve.GetPointAtParameter(startParam + ((endParam - startParam) / 3))); //将与曲线起点的距离为2/3曲线长度的点作为捕捉点 snaps.Add(curve.GetPointAtParameter(startParam + ((endParam - startParam) * 2 / 3))); }
public void SnapInfoCurve( ObjectSnapContext context, ObjectSnapInfo result ) { // For any curve var cv = context.PickedObject as Curve; if (cv == null) { return; } double startParam = cv.StartParam; double endParam = cv.EndParam; // Added a check to avoid zero-length curve problems if (startParam == endParam) { return; } // Add osnap at first quarter double param = startParam + ((endParam - startParam) * 0.25); var pt = cv.GetPointAtParameter(param); result.SnapPoints.Add(pt); // Add osnap at third quarter param = startParam + ((endParam - startParam) * 0.75); pt = cv.GetPointAtParameter(param); result.SnapPoints.Add(pt); if (cv.Closed) { pt = cv.StartPoint; result.SnapPoints.Add(pt); } }
public void SnapInfoEntity( ObjectSnapContext context, ObjectSnapInfo result) { // Nothing here }