UG NX二次开发(C++)-建模-修改NXObject或者Feature的颜色(一)
文章目录
- 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:
选择特征:
结果为: