コード例 #1
0
        public void SnapInfoCurve(ObjectSnapContext context, ObjectSnapInfo result)
        {
            var cv = context.PickedObject as Curve;

            if (cv == null)
            {
                return;
            }

            double startParam = cv.StartParam;
            double endParam   = cv.EndParam;

            if (startParam == endParam)
            {
                return;
            }

            double param = startParam + ((endParam - startParam) * 0.25);
            var    pt    = cv.GetPointAtParameter(param);

            result.SnapPoints.Add(pt);

            param = startParam + ((endParam - startParam) * 0.75);
            pt    = cv.GetPointAtParameter(param);
            result.SnapPoints.Add(pt);

            if (cv.Closed)
            {
                pt = cv.StartPoint;
                result.SnapPoints.Add(pt);
            }
        }
コード例 #2
0
        public void SnapInfoPolyline(ObjectSnapContext context, ObjectSnapInfo result)
        {
            var pl = context.PickedObject as Polyline;

            if (pl == null)
            {
                return;
            }

            double plStartParam = pl.StartParam;
            double plEndParam   = pl.EndParam;

            double startParam = plStartParam;
            double endParam   = startParam + 1.0;

            while (endParam <= plEndParam)
            {
                double param = startParam + ((endParam - startParam) * 0.25);
                var    pt    = pl.GetPointAtParameter(param);
                result.SnapPoints.Add(pt);

                param = startParam + ((endParam - startParam) * 0.75);
                pt    = pl.GetPointAtParameter(param);
                result.SnapPoints.Add(pt);

                startParam = endParam;
                endParam  += 1.0;
            }
        }
コード例 #3
0
ファイル: Class1.cs プロジェクト: lanicon/EnesyCAD
        public void SnapInfoPolyline(
            ObjectSnapContext context,
            ObjectSnapInfo result)
        {
            // For polylines

            var pl = context.PickedObject as Polyline;

            if (pl == null)
            {
                return;
            }

            // Get the overall start and end parameters

            double plStartParam = pl.StartParam;
            double plEndParam   = pl.EndParam;

            // Get the local

            double startParam = plStartParam;
            double endParam   = startParam + 1.0;

            while (endParam <= plEndParam)
            {
                // Calculate the snap point per vertex...

                // Add osnap at first quarter

                double param =
                    startParam + ((endParam - startParam) * 0.25);
                var pt = pl.GetPointAtParameter(param);

                result.SnapPoints.Add(pt);

                // Add osnap at third quarter

                param =
                    startParam + ((endParam - startParam) * 0.75);
                pt = pl.GetPointAtParameter(param);

                result.SnapPoints.Add(pt);

                startParam = endParam;
                endParam  += 1.0;
            }
        }
コード例 #4
0
ファイル: Command.cs プロジェクト: coordinate/MyLearnning
        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)));
        }
コード例 #5
0
ファイル: Class1.cs プロジェクト: lanicon/EnesyCAD
        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);
            }
        }
コード例 #6
0
ファイル: Class1.cs プロジェクト: lanicon/EnesyCAD
 public void SnapInfoEntity(
     ObjectSnapContext context,
     ObjectSnapInfo result)
 {
     // Nothing here
 }