1、通过NXObject偏置基准平面
/// <summary>
/// 通过NXObject偏置基准平面
/// </summary>
/// <param name="orgin_face"></param>
/// <param name="offset_dist"></param>
/// <param name="dplane"></param>
public void CreateDatumPlaneByObjectAndOffsetDistance(NXObject orgin_face, double offset_dist, out DatumPlane dplane)
{
NXOpen.Features.DatumPlaneBuilder datumPlaneBuilder1;
datumPlaneBuilder1 = workPart.Features.CreateDatumPlaneBuilder(null);
Plane plane1;
plane1 = datumPlaneBuilder1.GetPlane();
plane1.SetUpdateOption(NXOpen.SmartObject.UpdateOption.WithinModeling);
plane1.SetMethod(NXOpen.PlaneTypes.MethodType.Coincident);
NXObject[] geom2 = new NXObject[1];
geom2[0] = orgin_face;
plane1.SetGeometry(geom2);
plane1.SetAlternate(NXOpen.PlaneTypes.AlternateType.One);
plane1.Evaluate();
//plane1.SetOffsetFlip(false);
plane1.SetOffsetExpression("0");
plane1.Evaluate();
plane1.SetOffsetExpression(offset_dist.ToString());
plane1.Evaluate();
NXOpen.Features.Feature feature1;
feature1 = datumPlaneBuilder1.CommitFeature();
NXOpen.Features.DatumPlaneFeature datumPlaneFeature1 = (NXOpen.Features.DatumPlaneFeature)feature1;
dplane = datumPlaneFeature1.DatumPlane;
datumPlaneBuilder1.Destroy();
}
2、通过Face偏置基准平面
/// <summary>
/// 通过Face偏置基准平面
/// </summary>
/// <param name="orgin_face"></param>
/// <param name="offset_dist"></param>
public void CreateDatumPlaneByObjectAndOffsetDistance(Face orgin_face, double offset_dist, out DatumPlane dplane)
{
NXOpen.Features.DatumPlaneBuilder datumPlaneBuilder1;
datumPlaneBuilder1 = workPart.Features.CreateDatumPlaneBuilder(null);
Plane plane1;
plane1 = datumPlaneBuilder1.GetPlane();
Section section1;
section1 = workPart.Sections.CreateSection(0.02413, 0.0254, 0.5);
Unit unit1 = (Unit)workPart.UnitCollection.FindObject("MilliMeter");
Expression expression1;
expression1 = workPart.Expressions.CreateSystemExpressionWithUnits("0", unit1);
Section section2;
section2 = workPart.Sections.CreateSection(0.02413, 0.0254, 0.5);
Expression expression2;
expression2 = workPart.Expressions.CreateSystemExpressionWithUnits("0", unit1);
plane1.SetUpdateOption(NXOpen.SmartObject.UpdateOption.WithinModeling);
NXObject[] geom1 = new NXObject[0];
plane1.SetGeometry(geom1);
plane1.SetMethod(NXOpen.PlaneTypes.MethodType.Coincident);
plane1.SetMethod(NXOpen.PlaneTypes.MethodType.Coincident);
NXObject[] geom2 = new NXObject[1];
geom2[0] = orgin_face;
plane1.SetGeometry(geom2);
plane1.SetAlternate(NXOpen.PlaneTypes.AlternateType.One);
plane1.Evaluate();
plane1.SetOffsetFlip(false);
plane1.SetOffsetExpression("0");
plane1.Evaluate();
plane1.SetOffsetFlip(false);
plane1.SetOffsetExpression(offset_dist.ToString());
plane1.Evaluate();
bool flip1;
flip1 = plane1.Flip;
NXOpen.Features.Feature feature1;
feature1 = datumPlaneBuilder1.CommitFeature();
NXOpen.Features.DatumPlaneFeature datumPlaneFeature1 = (NXOpen.Features.DatumPlaneFeature)feature1;
dplane = datumPlaneFeature1.DatumPlane;
dplane.SetReverseSection(false);
datumPlaneBuilder1.Destroy();
try
{
// Expression is still in use.
workPart.Expressions.Delete(expression2);
}
catch (NXException ex)
{
ex.AssertErrorCode(1050029);
}
section2.Destroy();
try
{
// Expression is still in use.
workPart.Expressions.Delete(expression1);
}
catch (NXException ex)
{
ex.AssertErrorCode(1050029);
}
section1.Destroy();
}