文章目录
- 1、前言
- 2、在UG NX中修改Feature的颜色操作
- 3、采用NXOpen(C++)实现
- 3.1 创建修改特征的方法
- 3.2 调用ModifyFeatureColor方法
- 3.3 测试结果
1、前言
在UG NX中,改变NXObject和Feature的操作是不相同的,所以其二次开发的代码也不一样,我们这篇文章介绍一下修改特征的颜色,在下一篇文章中介绍一下修改NXObject对象的颜色。
2、在UG NX中修改Feature的颜色操作
以下面的长方体为例,长方体是一个特征。
在过滤器中设置为:“无选择过滤器”,默认情况下是选择的特征;
也可以将过滤器设置为:“特征”
这样,在视图区选择一个对象,点击右键,弹出右键菜单:
选择“指派特征颜色”,弹出如下的对话框:
设置“指定颜色”,在“面颜色”的选择框中点击,弹出“对象颜色”的调色板
在调色板中选择需要的颜色,则特征修改为指定的颜色,如下图所示:
则指派特征颜色成功。
3、采用NXOpen(C++)实现
3.1 创建修改特征的方法
/// <summary>/// 修改特征颜色/// </summary>/// <param name="feature"></param>/// <param name="color"></param>void UFModel::ModifyFeatureColor(Features::Feature* feature, NXOpen::NXColor* color){NXOpen::Features::ColorFeatureBuilder* colorFeatureBuilder1;colorFeatureBuilder1 = workPart->Features()->CreateColorFeatureBuilder();colorFeatureBuilder1->SetSpecifyColor(NXOpen::Features::ColorFeatureBuilder::OperationTypeNoColor);std::vector<NXOpen::Features::Feature*> objects1(1); objects1[0] = feature;bool added1;added1 = colorFeatureBuilder1->SelectFeature()->Add(objects1);colorFeatureBuilder1->SetSpecifyColor(NXOpen::Features::ColorFeatureBuilder::OperationTypeSpecifyColor);colorFeatureBuilder1->SetColor(color);NXOpen::NXObject* nXObject1;nXObject1 = colorFeatureBuilder1->Commit(); colorFeatureBuilder1->Destroy();}
3.2 调用ModifyFeatureColor方法
在do_it()中添加调用的代码
void UFModel::do_it(){ std::vector< NXOpen::TaggedObject* > any_objs = select_any_objects(); NXObject* nXObject = dynamic_cast<NXOpen::NXObject*>(any_objs[0]);Body* body(dynamic_cast<NXOpen::Body*>(workPart->Bodies()->FindObject(nXObject->JournalIdentifier())));NXOpen::Features::Feature* feature = body->GetFeatures()[0];NXOpen::NXColor* color(workPart->Colors()->Find("Medium Orange"));ModifyFeatureColor(feature,color);}
3.3 测试结果
原始模型为:
调用dll:
选择特征:
结果为: