/// <summary>
/// 创建点与直线的垂直直线
/// </summary>
/// <param name="line"></param>
/// <param name="param"></param>
/// <param name="degree"></param>
/// <param name="newLine"></param>
public static void createLineBasedPointAndPerpendicular(Line line, double param, string degree, out Line newLine)
{
newLine = null;
try
{
NXOpen.Session theSession = NXOpen.Session.GetSession();
NXOpen.Part workPart = theSession.Parts.Work;
NXOpen.Part displayPart = theSession.Parts.Display;
// ----------------------------------------------
// 菜单:插入(S)->曲线(C)->直线和圆弧(A)->直线(点-垂直)(U)...
// ----------------------------------------------
NXOpen.Features.AssociativeLine nullNXOpen_Features_AssociativeLine = null;
NXOpen.Features.AssociativeLineBuilder associativeLineBuilder1;
associativeLineBuilder1 = workPart.BaseFeatures.CreateAssociativeLineBuilder(nullNXOpen_Features_AssociativeLine);
NXOpen.Point3d origin1 = new NXOpen.Point3d(0.0, 0.0, 0.0);
NXOpen.Vector3d normal1 = new NXOpen.Vector3d(0.0, 0.0, 1.0);
NXOpen.Plane plane1;
plane1 = workPart.Planes.CreatePlane(origin1, normal1, NXOpen.SmartObject.UpdateOption.WithinModeling);
NXOpen.Unit unit1;
unit1 = associativeLineBuilder1.Limits.StartLimit.Distance.Units;
NXOpen.Expression expression1;
expression1 = workPart.Expressions.CreateSystemExpressionWithUnits("0", unit1);
NXOpen.Expression expression2;
expression2 = workPart.Expressions.CreateSystemExpressionWithUnits("0", unit1);
associativeLineBuilder1.Limits.StartLimit.Distance.RightHandSide = "10";
associativeLineBuilder1.Limits.StartLimit.LimitOption = NXOpen.GeometricUtilities.CurveExtendData.LimitOptions.AtPoint;
associativeLineBuilder1.Limits.StartLimit.Distance.RightHandSide = "0";
associativeLineBuilder1.Limits.EndLimit.LimitOption = NXOpen.GeometricUtilities.CurveExtendData.LimitOptions.AtPoint;
associativeLineBuilder1.Limits.EndLimit.Distance.RightHandSide = "0";
associativeLineBuilder1.StartPointOptions = NXOpen.Features.AssociativeLineBuilder.StartOption.Point;
associativeLineBuilder1.Limits.FullCircle = false;
NXOpen.Scalar scalar1;
scalar1 = workPart.Scalars.CreateScalar(param, NXOpen.Scalar.DimensionalityType.None, NXOpen.SmartObject.UpdateOption.WithinModeling);
NXOpen.Line line1 = line;
NXOpen.Point point1;
point1 = workPart.Points.CreatePoint(line1, scalar1, NXOpen.SmartObject.UpdateOption.WithinModeling);
associativeLineBuilder1.StartPoint.Value = point1;
associativeLineBuilder1.EndPointOptions = NXOpen.Features.AssociativeLineBuilder.EndOption.AtAngle;
associativeLineBuilder1.Limits.EndLimit.LimitOption = NXOpen.GeometricUtilities.CurveExtendData.LimitOptions.Value;
associativeLineBuilder1.Limits.FullCircle = false;
associativeLineBuilder1.EndAngle.RightHandSide = degree;
associativeLineBuilder1.Limits.StartLimit.Distance.RightHandSide = "0";
associativeLineBuilder1.EndAtAngle.Value = line1;
associativeLineBuilder1.EndAtAngle.Value = null;
associativeLineBuilder1.Limits.FullCircle = false;
associativeLineBuilder1.Limits.StartLimit.Distance.RightHandSide = "-30";
associativeLineBuilder1.EndAtAngle.Value = line1;
associativeLineBuilder1.Limits.EndLimit.Distance.RightHandSide = "30";
associativeLineBuilder1.Associative = true;
NXOpen.NXObject nXObject1;
nXObject1 = associativeLineBuilder1.Commit();
AssociativeLine associativeLine = (AssociativeLine)nXObject1;
NXObject[] associativeLines = associativeLine.GetEntities();
newLine = (Line)associativeLines[0];
associativeLineBuilder1.Destroy();
}
catch (Exception e)
{
MessageBox.Show(e.ToString());
}
}
NX二次开发-C#-建模-创建直线上某点的垂线
猜你喜欢
转载自blog.csdn.net/yang19861007/article/details/112243687
今日推荐
周排行