以点为例,测量两点之间的最小距离
//1、模板文件添加头文件*
#include <NXOpen/PointCollection.hxx>
#include <NXOpen/Features_PointFeatureBuilder.hxx>
#include <NXOpen/Features_BaseFeatureCollection.hxx>
#include <NXOpen/Unit.hxx>
#include <NXOpen/UnitCollection.hxx>
#include <NXOpen/GenericMeasure.hxx>
#include <NXOpen/Measure.hxx>
#include <NXOpen/MeasureDistance.hxx>
#include <NXOpen/MeasureDistanceBuilder.hxx>
#include <NXOpen/MeasureManager.hxx>
#include <NXOpen/Point.hxx>
#include <uf_vec.h>
//**2、函数声明**
NXOpen::Point* pointcreat(double PTcoordinates[3], NXOpen::Part* part);
//**3、函数定义**
NXOpen::Point* MyClass::pointcreat(double PTcoordinates[3], NXOpen::Part* part)
{
NXOpen::Point3d coordinates(PTcoordinates[0], PTcoordinates[1], PTcoordinates[2]);
NXOpen::Point* point;
point = part->Points()->CreatePoint(coordinates);
return point;
}
//**4、主程序**
NXOpen::Session* theSession = NXOpen::Session::GetSession();
NXOpen::Part* part1(theSession->Parts()->Work());
NXOpen::Part* displayPart(theSession->Parts()->Display());
//NXOPEN NewDistance方法测量两点距离
double PTcoordinates1[3] = { 0.0,0.0,0.0 };
NXOpen::Point* point1 = pointcreat(PTcoordinates1, part1);
double PTcoordinates2[3] = { 10.0,10.0,10.0 };
NXOpen::Point* point2 = pointcreat(PTcoordinates2, part1);
NXOpen::Unit* unit1(dynamic_cast<NXOpen::Unit*>(workPart->UnitCollection()->FindObject("MilliMeter")));
NXOpen::MeasureDistance* measureDistance1;
measureDistance1 = workPart->MeasureManager()->NewDistance(unit1, NXOpen::MeasureManager::MeasureTypeMinimum, point1, point2);
double distance1 = measureDistance1->Value();
char msg[256];
sprintf(msg, "距离1:%f", distance1);
theSession->ListingWindow()->WriteLine(msg);
//open c UF_VEC3_distance方法测量两点距离
double distance2;
UF_VEC3_distance(PTcoordinates1, PTcoordinates2, &distance2);
sprintf(msg, "距离2:%f", distance2);
theSession->ListingWindow()->WriteLine(msg);