购买与咨询 NX 二次开发视频教程,请联系微信号:13890821008 QQ号:85585969
通过对 NX菜单--插入--曲线--文本功能进行二次开发,实现对零件、电极等实体定制刻字功能 
刻字功能实现原理:
1:先用鼠标选取平面,获得选择点的坐标和面的tag_t标识
选择点可以通过C++的UI控件 Point3d pickPoint = selection0->PickPoint() 获得选择点的坐标值。
选择的面tag_t通过 Face *iface->Tag() 获得。
2,自定义一个函数,来获得选择平面的法向方向和X、Y的向量值,可以定义一个vector<double>来返回,后面刻字定义放置平面的时候需要用到,函数原型在下面会列出。
3,通过NXopen C++录制手动菜单--插入--曲线--文本功能进行创建文本,可以得到以下核心的代码部分,只需要对其中 Point3d origin放置原点的位置,和Vector3d xDirection与Vector3d yDirection两个方向的向量值进行传递即可快速创建文本,核心代码如下:
Part *workPart(theSession->Parts()->Work());
Part *displayPart(theSession->Parts()->Display());
Features::Text *nullFeatures_Text(NULL);
Features::TextBuilder *textBuilder1;
textBuilder1 = workPart->Features()->CreateTextBuilder(nullFeatures_Text);
textBuilder1->FrameOnPath()->AnchorPosition()->Expression()->SetRightHandSide("50");
textBuilder1->SetScript(Features::TextBuilder::ScriptOptionsWestern);
textBuilder1->PlanarFrame()->SetAnchorLocation(GeometricUtilities::RectangularFrameBuilder::AnchorLocationTypeBottomCenter);
textBuilder1->PlanarFrame()->Length()->SetRightHandSide("5");
//设置字体的高度
textBuilder1->PlanarFrame()->Height()->SetRightHandSide("2");
//设置长宽比例
textBuilder1->PlanarFrame()->SetWScale(100.0);
textBuilder1->PlanarFrame()->Shear()->SetRightHandSide("0");
textBuilder1->FrameOnPath()->AnchorPosition()->Expression()->SetRightHandSide("50");
textBuilder1->FrameOnPath()->Offset()->SetRightHandSide("0");
textBuilder1->FrameOnPath()->Length()->SetRightHandSide("1");
textBuilder1->FrameOnPath()->Height()->SetRightHandSide("2");
//设置字体
textBuilder1->SelectFont("Arial", Features::TextBuilder::ScriptOptionsWestern);
//设置要刻的文本
textBuilder1->SetTextString("NX90");
//获取鼠标选择的坐标点Point3d pickPoint = selection0->PickPoint()
Point3d origin2(pickPoint.X, pickPoint.Y,pickPoint.Z);
//通过自定义函数GetxyDirection来获得返回的X、y的向量值
vector<double> Directi= GetxyDirection(objs);
Vector3d xDirection1(Directi[0], Directi[1], Directi[2]);
Vector3d yDirection1(Directi[3], Directi[4], Directi[5]);
Xform *xform1;
xform1 = workPart->Xforms()->CreateXform(origin2, xDirection1, yDirection1, SmartObject::UpdateOptionWithinModeling, 1.0);
CartesianCoordinateSystem *cartesianCoordinateSystem1;
cartesianCoordinateSystem1 = workPart->CoordinateSystems()->CreateCoordinateSystem(xform1, SmartObject::UpdateOptionWithinModeling);
textBuilder1->PlanarFrame()->SetCoordinateSystem(cartesianCoordinateSystem1);
textBuilder1->PlanarFrame()->UpdateOnCoordinateSystem()
NXObject *nXObject1;
nXObject1 = textBuilder1->Commit();
textBuilder1->Destroy();
4,结合UI界面的定制,可以让用户自由选择字体样式、修改字体大小、字体方向、刻字深度等功能!

5,通过对创建好的文本进行拉伸和布尔求差,即可实现刻字功能。
以下是自定义的函数来获得选择面的X和Y的向量值,通过vector<double>来返回一个数组。
vector<double> GetxyDirection(tag_t object_tag)
{

●●●请先
登陆 或
注册 后查看●●●
}
如需学习UG二次开发,可以联系站长手把手教,使用UFun+NXopen C++的方式全面系统性的学习,学到完全理解开发原理并能完全熟悉相关函数,并能独立开发各种工具为止,具体可联系站长QQ:85585969