博客不写就荒废了,技术不整理提炼就乱套了,都是一个意思。把博客文章变成全文显示了,方便看,反正都是看,何必多点那一下呢。
原来一直找UF的函数,找啊找的,平台也一直是VC6.0。在NX6.0正版环境下搞的二次开发程序竟然不能debug,打上个MP补丁或者在NX4下才能debug,这修bug吃力的。一问别人,都不在VC6下开发了,都转向VS平台了。尽顾着论文,落伍了。使用NX6+VS2008组合做开发方便的很,赞啊。把前一阵CAM过程用VC++验证了一下,很方便的说,把开发的重心都转移了,使得二次开发更偏向CAD技术工程师而非软件工程师,对于公司的产品而言,易于公司软件产品架构,并依托NX平台更好的考虑产品功能的完善。
VS工具下开发备注:a)
NX6的UGOpen文件夹中带VS的向导文件,是为VS2005的。在VS2008中使用的话修改一下VSWIZARD的版本号即可。例子都可以在VS2005/2008中直接打开,注释说明都很详细,照做就是。b)
在VS2008中设置NXOpen库位置。
通用操作可以借助自动化手段完成,使得二次开发更多的关注如何设计优化刀路等问题上,具体过程如下:
1.
获取当前Session:Session
*theSession = Session::GetSession();2.
创建文件或者打开的文件,可使用Session的方法或者直接使用UF_PART_ask_display_part()等;3.
创建CAM环境:
1)进入CAM模块,即创建CAMSession:theSession->CreateCamSession();
2)初始化CAM,创建CAMSetup:CAM::CAMSetup *cAMSetup =
workPart->CreateCamSetup("mill_planar");4.
创建刀具,程序、机床、方法(四个GROUP),以刀具为例(使用UF_CAM_create_tool方法也可以创建刀具):
1)取默认的刀具group的父group:
CAM::NCGroup
*nCGroupP(dynamic_cast(cAMSetup->CAMGroupCollection()->FindObject("GENERIC_MACHINE")));
2)调用CAMGroupCollection的CreateTool方法创建刀具:
CAM::NCGroup *nCGroupTool=
cAMSetup->CAMGroupCollection()->CreateTool(nCGroupP,
"mill_planar",
"MILL", CAM::NCGroupCollection::UseDefaultNameFalse,
"jorbinMIll");
3)修改刀具参数,根据刀具的类型由对应的ToolBuilder修改刀具参数(这和UF函数和NXOpen混合开放思路一样,UF函数易于创建对象,NXOpen的Builder易于修改对象参数):
CAM::Tool *Milltool(dynamic_cast(nCGroupTool));
CAM::MillToolBuilder *millToolBuilder =
cAMSetup->CAMGroupCollection()->CreateMillToolBuilder(Milltool);
millToolBuilder->TlHeightBuilder()->SetValue(100.0);
millToolBuilder->TlDiameterBuilder()->SetValue(44.0);
NXObject *nXObject =
millToolBuilder->Commit();
millToolBuilder->Destroy();5.
创建操作:
1)
创建操作:
CAM::Operation *operation =
cAMSetup->CAMOperationCollection()->Create(nCGroup1,
nCGroup2, nCGroup3, nCGroup4, "mill_planar", "FACE_MILLING_AREA",
CAM::OperationCollection::UseDefaultNameFalse,
"FACE_MILLING_AREA_JORBIN_GAO");
2)修改参数,和修改刀具参数类似,通过对应的Builder完成:
CAM::FaceMillingBuilder *faceMillingBuilder =
cAMSetup->CAMOperationCollection()->CreateFaceMillingBuilder(operation);
faceMillingBuilder->FeedsBuilder()->FeedPerToothBuilder()->SetValue(10.0);
NXObject *nXOpObject =
faceMillingBuilder->Commit();
faceMillingBuilder->Destroy(); 注意:1)操作过程通过设置适度的SetUndoMark()和DeleteUndoMark()保证程序的健壮性。 2)dynamic_cast强制转换运算符将一个基类的指针或者引用转换为其子类的指针或者引用,其使用方法为:dynamic(object)。
3)对上述代码有不清楚的请参阅NXOpen的文档或者自己录制Journal比较查看。
加载中,请稍候......