文章目录
- 1、前言
- 2、UG NX中根据菜单来创建基准坐标系
- 2.1 打开UG NX
- 2.2 打开基准坐标系创建界面
- 2.3 根据两个轴和原点创建基准坐标系
- 3、采用NXOpen方法来创建基准坐标系
- 3.1 创建创建基准坐标系的方法
- 3.2 在do_it方法中添加调用代码
- 3.3 生成dll,并用NXOpen执行来测试
- 3.4 创建的结果
- 4、结论
1、前言
在UG NX三维建模过程中,创建基准坐标系是很重要的。基准坐标系是对于其他模型建模的一个参考,在UG NX中菜单中是由创建基准坐标系功能的,UG NX二次开发的创建基准坐标系的方法有两种,其可以通过UFun函数创建,也能通过NXOpen方法来实现,这篇介绍一下根据NXOpen方法来创建基准坐标系,下一篇介绍一下采用UFun函数来实现。有需要了解和讨论的可以私信博主,欢迎讨论。
2、UG NX中根据菜单来创建基准坐标系
2.1 打开UG NX
2.2 打开基准坐标系创建界面
菜单->插入->基准->基准坐标系,如下图所示。
2.3 根据两个轴和原点创建基准坐标系
3、采用NXOpen方法来创建基准坐标系
3.1 创建创建基准坐标系的方法
其所需要的头文件为:
#include <uf_defs.h>
#include <NXOpen/NXException.hxx>
#include <NXOpen/Session.hxx>
#include <NXOpen/BasePart.hxx>
#include <NXOpen/Builder.hxx>
#include <NXOpen/CartesianCoordinateSystem.hxx>
#include <NXOpen/CoordinateSystemCollection.hxx>
#include <NXOpen/Direction.hxx>
#include <NXOpen/DirectionCollection.hxx>
#include <NXOpen/Expression.hxx>
#include <NXOpen/ExpressionCollection.hxx>
#include <NXOpen/Features_DatumCsysBuilder.hxx>
#include <NXOpen/Features_FeatureCollection.hxx>
#include <NXOpen/MeasureManager.hxx>
#include <NXOpen/NXObject.hxx>
#include <NXOpen/Part.hxx>
#include <NXOpen/PartCollection.hxx>
#include <NXOpen/Plane.hxx>
#include <NXOpen/PlaneCollection.hxx>
#include <NXOpen/Point.hxx>
#include <NXOpen/PointCollection.hxx>
#include <NXOpen/PreviewBuilder.hxx>
#include <NXOpen/Scalar.hxx>
#include <NXOpen/ScalarCollection.hxx>
#include <NXOpen/Session.hxx>
#include <NXOpen/SmartObject.hxx>
#include <NXOpen/Unit.hxx>
#include <NXOpen/UnitCollection.hxx>
#include <NXOpen/Xform.hxx>
#include <NXOpen/XformCollection.hxx>
首先声明一个方法
void CreateCsys(Point3d point3D,Vector3d vector3D1,Vector3d vector3D2);
在定义此方法时的代码为:
void UFModel::CreateCsys(Point3d point3D, Vector3d vector3D1, Vector3d vector3D2)
{
NXOpen::Session::UndoMarkId markId1;
markId1 = theSession->SetUndoMark(NXOpen::Session::MarkVisibilityVisible, NXOpen::NXString("\350\265\267\347\202\271", NXOpen::NXString::UTF8));
NXOpen::Features::Feature* nullNXOpen_Features_Feature(NULL);
NXOpen::Features::DatumCsysBuilder* datumCsysBuilder1;
datumCsysBuilder1 = workPart->Features()->CreateDatumCsysBuilder(nullNXOpen_Features_Feature);
NXOpen::Point* point3;
point3 = workPart->Points()->CreatePoint(point3D);
NXOpen::Point3d origin1(0.0, 0.0, 0.0);
NXOpen::Direction* direction1;
direction1 = workPart->Directions()->CreateDirection(origin1, vector3D1, NXOpen::SmartObject::UpdateOptionWithinModeling);
NXOpen::Direction* direction2;
direction2 = workPart->Directions()->CreateDirection(origin1, vector3D2, NXOpen::SmartObject::UpdateOptionWithinModeling);
NXOpen::Xform* xform1;
xform1 = workPart->Xforms()->CreateXform(point3, direction1, direction2, NXOpen::SmartObject::UpdateOptionWithinModeling, 1.0);
NXOpen::CartesianCoordinateSystem* cartesianCoordinateSystem1;
cartesianCoordinateSystem1 = workPart->CoordinateSystems()->CreateCoordinateSystem(xform1, NXOpen::SmartObject::UpdateOptionWithinModeling);
datumCsysBuilder1->SetCsys(cartesianCoordinateSystem1);
NXOpen::NXObject* nXObject1;
nXObject1 = datumCsysBuilder1->Commit();
datumCsysBuilder1->Destroy();
}
3.2 在do_it方法中添加调用代码
void UFModel::do_it()
{
Point3d point3D1(500,500,500);
Vector3d vector3D1(0, 1, 0);
Vector3d vector3D2(1, 0, 0);
CreateCsys(point3D1,vector3D1,vector3D2);
3.3 生成dll,并用NXOpen执行来测试
3.4 创建的结果
4、结论
如果想用其他的方式来创建基准坐标系,可以修改以上代码,添加或者修改相应位置来创建。