public void direct(Entity prev) { if (prev.ent.Type != ObjectTypeEnum.kSketchArcObject) { return; } Arc2d arc = (prev.ent as SketchArc).Geometry; Curve2dEvaluator ev = arc.Evaluator; double[] par = u.getParam(ev, prev.endPt.Geometry); double[] o = { }; ev.GetTangent(ref par, ref o); dir = u.createVector2d(o[0], o[1]); if (prev.t == entTypes.Arc && !(prev as ArcInv).clockwise) { dir.ScaleBy(-1); } }
static public double ParamLen(SketchEntity se) { double min, max, length; Curve2dEvaluator eval = null; if (se.Type == ObjectTypeEnum.kSketchLineObject || se.Type == ObjectTypeEnum.kSketchLineProxyObject) { eval = ((SketchLine)se).Geometry.Evaluator; } else if (se.Type == ObjectTypeEnum.kSketchArcObject || se.Type == ObjectTypeEnum.kSketchArcProxyObject) { eval = ((SketchArc)se).Geometry.Evaluator; } else if (se.Type == ObjectTypeEnum.kSketchSplineObject || se.Type == ObjectTypeEnum.kSketchSplineProxyObject) { eval = ((SketchSpline)se).Geometry.Evaluator; } eval.GetParamExtents(out min, out max); eval.GetLengthAtParam(min, max, out length); return(Math.Round(length, 2)); }
private void GetEdgeData(Inventor.Edge Edge) { Inventor.Curve2dEvaluator Curve2dEvaluator; double MinParam = 0; double MaxParam = 0; // double LengthParam = 0; double[] StartParams = new double[3]; double[] EndParams = new double[3]; double[] mPoints = new double[3]; foreach (Inventor.EdgeUse EdgeUse in Edge.EdgeUses) { StartParams[0] = MinParam; StartParams[1] = 0; StartParams[2] = 0; EndParams[0] = MinParam; EndParams[1] = 0; EndParams[2] = 0; Curve2dEvaluator = EdgeUse.Evaluator; Curve2dEvaluator.GetParamExtents(out MinParam, out MaxParam); Curve2dEvaluator.GetPointAtParam(ref StartParams, ref mPoints); } }