您的位置:首页 > 其它

创建曲线偏置根据指定矢量

2017-06-04 23:04 417 查看
public int apply_cb()
{
int errorCode = 0;
try
{
//---- Enter your callback code here -----
TaggedObject[] curves = edge_select0.GetSelectedObjects();
Vector3d vec = vector0.Vector;
double distance = double0.Value;
//Session theSession = Session.GetSession();
Part workPart = theSession.Parts.Work;

NXOpen.Features.OffsetCurveBuilder offsetCurveBuilder1 = workPart.Features.CreateOffsetCurveBuilder(null);
Direction direction1 = workPart.Directions.CreateDirection(new Point3d(0, 0, 0), vec, SmartObject.UpdateOption.WithinModeling);
//设置曲线偏置方向
offsetCurveBuilder1.AxialOffsetDirection = direction1;
//判断选择类型
List<SelectionIntentRule> eList = new List<SelectionIntentRule>();
NXObject seed = null;
foreach (var cur in curves)
{
if (cur is NXOpen.Edge)
{
NXOpen.EdgeDumbRule edgeDumbRule1 = workPart.ScRuleFactory.CreateRuleEdgeDumb(new Edge[1] { (Edge)cur });
eList.Add(edgeDumbRule1);
seed = (NXObject)cur;
}
else if (cur is NXOpen.Curve)
{
NXOpen.CurveDumbRule curveDumbRule1 = workPart.ScRuleFactory.CreateRuleCurveDumb(new Curve[1] { (Curve)cur });
eList.Add(curveDumbRule1);
seed = (NXObject)cur;
}

}
//为偏置曲线添加规则
offsetCurveBuilder1.CurvesToOffset.AddToSection(eList.ToArray(), seed, null, null, new Point3d(0, 0, 0), Section.Mode.Create, false);
offsetCurveBuilder1.Tolerance = 0.001;
offsetCurveBuilder1.Offset3dDistance.RightHandSide = distance.ToString();
//设置曲线偏置的类型
offsetCurveBuilder1.Type = OffsetCurveBuilder.Types.Axial3d;
//offsetCurveBuilder1.Type = OffsetCurveBuilder.Types.Distance;
offsetCurveBuilder1.Commit();
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: