自动刻字功能是建模过程中必须用到的,但是网上没有找到完整的刻字功能实现,所以我花了一些时间写了一套简易程序,希望能给初学者带来一点帮助
先介绍一下建模环境下刻字功能的实现,分三步走(本节主要介绍布尔求差实现):
第一步:打印文本
第二步:拉伸
第三步:布尔求差
/// <summary>
/// 布尔求值
/// </summary>
/// <param name="targetTag">目标体tag</param>
/// <param name="collectTag">待求差tag</param>
/// <param name="oprType">操作类型</param>
public static void BooleanBuilderOpr(Tag targetTag, Tag collectTag, Feature.BooleanType oprType)
{
Part workPart = theSession.Parts.Work;
NXOpen.Features.BooleanFeature nullFeatures_BooleanFeature = null;
NXOpen.Features.BooleanBuilder booleanBuilder1;
booleanBuilder1 = workPart.Features.CreateBooleanBuilderUsingCollector(nullFeatures_BooleanFeature);
ScCollector scCollector1;
scCollector1 = booleanBuilder1.ToolBodyCollector;
booleanBuilder1.Tolerance = 0.001;
booleanBuilder1.Operation = oprType;
Body body1 = (Body)NXOpen.Utilities.NXObjectManager.Get(targetTag);
bool added1;
added1 = booleanBuilder1.Targets.Add(body1);
ScCollector scCollector2;
scCollector2 = workPart.ScCollectors.CreateCollector();
NXOpen.Features.Feature[] features1 = new NXOpen.Features.Feature[1];
NXOpen.Features.Cylinder cylinder1 = (Cylinder)NXOpen.Utilities.NXObjectManager.Get(collectTag);
features1[0] = cylinder1;
BodyFeatureRule bodyFeatureRule1;
bodyFeatureRule1 = workPart.ScRuleFactory.CreateRuleBodyFeature(features1);
SelectionIntentRule[] rules1 = new SelectionIntentRule[1];
rules1[0] = bodyFeatureRule1;
scCollector2.ReplaceRules(rules1, false);
booleanBuilder1.ToolBodyCollector = scCollector2;
NXObject nXObject1;
nXObject1 = booleanBuilder1.Commit();
booleanBuilder1.Destroy();
}
从方法的参数就能发现,求布尔值得三要素:待处理的对象,目标对象,处理方式
运行结果图如下: