コード例 #1
0
ファイル: CModelViews.cs プロジェクト: waztdotnet/Api2
        private Inventor.Point GetEdgePointAtParam(Inventor.EdgeUse EdgeUse, double Pt)
        {
            Inventor.TransientGeometry TransientGeometry = mInvApplication.TransientGeometry;
            Inventor.CurveEvaluator    CurveEvaluator;
            double[] Param = new double[0];
            double[] Pnt   = new double[3];
            Param[0]       = Pt;
            CurveEvaluator = EdgeUse.Edge.Evaluator;
            CurveEvaluator.GetPointAtParam(ref Param, ref Pnt);

            return(TransientGeometry.CreatePoint(Pnt[0], Pnt[1], Pnt[2]));
        }
コード例 #2
0
ファイル: CModelViews.cs プロジェクト: waztdotnet/Api2
 private Inventor.UnitVector GetTangentAtParam(Inventor.EdgeUse EdgeUse, double Pt)
 {
     Inventor.TransientGeometry TransientGeometry = mInvApplication.TransientGeometry;
     Inventor.CurveEvaluator    CurveEvaluator;
     double[] Param = new double[0];
     double[] v     = new double[3];
     Param[0]       = Pt;
     CurveEvaluator = EdgeUse.Edge.Evaluator;
     CurveEvaluator.GetPointAtParam(ref Param, ref v);
     if (EdgeUse.IsOpposedToEdge)
     {
         return(TransientGeometry.CreateUnitVector(-v[0], -v[1], -v[2]));
     }
     else
     {
         return(TransientGeometry.CreateUnitVector(v[0], v[1], v[2]));
     }
 }
コード例 #3
0
        /// <summary>
        ///  select an edge a dump its first deriv and tangent
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void Button3_Click(object sender, EventArgs e)
        {
            if (((mApp.ActiveDocument != null)))
            {
                if ((mApp.ActiveDocument.DocumentType == DocumentTypeEnum.kPartDocumentObject))
                {
                    PartDocument oDoc = mApp.ActiveDocument as PartDocument;

                    if ((oDoc.SelectSet.Count == 1))
                    {
                        if (((oDoc.SelectSet[1]) is Edge))
                        {
                            Edge oEdge = oDoc.SelectSet[1] as Edge;

                            CurveEvaluator oCurveEval = oEdge.Evaluator;

                            double MinParam = 0;
                            double MaxParam = 0;

                            oCurveEval.GetParamExtents(out MinParam, out MaxParam);

                            double length = 0;
                            oCurveEval.GetLengthAtParam(MinParam, MaxParam, out length);

                            double MidParam = 0;
                            oCurveEval.GetParamAtLength(MinParam, length * 0.5, out MidParam);

                            double[] Params = { MidParam };

                            double[] Points = new double[3 * Params.Length];
                            oCurveEval.GetPointAtParam(ref Params, ref Points);

                            double[] Directions = new double[3 * Params.Length];
                            double[] Curvatures = new double[Params.Length];
                            oCurveEval.GetCurvature(ref Params, ref Directions, ref Curvatures);

                            double[] Tangents = new double[3 * Params.Length];
                            oCurveEval.GetTangent(ref Params, ref Tangents);

                            double[] FirstDeriv = new double[3 * Params.Length];
                            oCurveEval.GetFirstDerivatives(ref Params, ref FirstDeriv);


                            string strResult = "Curve Properties: \n\n";

                            strResult += " - Length: " + length.ToString("F2") + "\n\n";

                            strResult += " - Middle point: [" + Points[0].ToString("F2") + ", " + Points[1].ToString("F2") + ", " + Points[2].ToString("F2") + "]" + "\n\n";

                            strResult += " - Curvature: " + Curvatures[0].ToString("F2") + "\n\n";

                            strResult += " - Tangent: [" + Tangents[0].ToString("F2") + ", " + Tangents[1].ToString("F2") + ", " + Tangents[2].ToString("F2") + "]" + "\n\n";

                            strResult += " - First derivative: [" + FirstDeriv[0].ToString("F2") + ", " + FirstDeriv[1].ToString("F2") + ", " + FirstDeriv[2].ToString("F2") + "]" + "\n\n";

                            System.Windows.Forms.MessageBox.Show(strResult, "Curve Evaluator");

                            return;
                        }
                        else
                        {
                            System.Windows.Forms.MessageBox.Show("Selected entity must be an Edge", "Curve Evaluator");
                            return;
                        }
                    }
                    else
                    {
                        System.Windows.Forms.MessageBox.Show("A single Edge must be selected first", "Curve Evaluator");
                        return;
                    }
                }
            }
        }