目录

NX二次开发,创建基准平面

目录

NX二次开发,创建基准平面

通过点与方向创建基准平面

//通过点与方向创建基准平面
NXObject* CreateDatumOlane(Point3d iPoint, Vector3d iVec, NXObject* iDatumPlane)
{
	Session* theSession = Session::GetSession();
	Part* workPart = theSession->Parts()->Work();

	Features::DatumPlaneFeature* datumPlaneFeature1 = NULL;
	if(iDatumPlane != NULL)
		datumPlaneFeature1 = dynamic_cast<Features::DatumPlaneFeature*>(iDatumPlane );

	Features::DatumPlaneBuilder* datumPlaneBuilder1 = workPart->Features()->CreateDatumPlaneBuilder(datumPlaneFeature1 );
	Point* point1 = workPart->Points()->CreatePoint(iPoint);
	Direction* direction1 = workPart->Directions()->CreateDirection(iPoint, iVec, SmartObject::UpdateOption::UpdateOptionWithinModeling);
	datumPlaneBuilder1->SetPointAndDirection(point1, direction1);

	NXObject* vObject = datumPlaneBuilder1->CommitFeature();
	datumPlaneBuilder1->Destroy();

	return vObject;
}

//通过面与偏置距离创建基准平面
NXObject* CreateDatumOlane(Face* iFace, double iDis, NXObject* iDatumPlane)
{
	Session* theSession = Session::GetSession();
	Part* workPart = theSession->Parts()->Work();

	Features::DatumPlaneFeature* datumPlaneFeature1 = NULL;
	if(iDatumPlane != NULL)
		datumPlaneFeature1 = dynamic_cast<Features::DatumPlaneFeature*>(iDatumPlane );

	Features::DatumPlaneBuilder* datumPlaneBuilder1 = workPart->Features()->CreateDatumPlaneBuilder(datumPlaneFeature1 );

	Plane* plane1 = datumPlaneBuilder1->GetPlane();
	plane1->SetUpdateOption(SmartObject::UpdateOptionWithinModeling);
	plane1->SetMethod(PlaneTypes::MethodTypeDistance);//创建平面模式
	//目标面
	vector<NXObject*> geom1(1);
	geom1[0] = iFace;
	plane1->SetGeometry(geom1);

	plane1->SetFlip(true);//方向反转
	plane1->SetReverseSide(true);//平面反向
	plane1->SetAlternate(PlaneTypes::AlternateTypeOne);
	plane1->SetExpression("25");
	plane1->Evaluate();

	NXObject* vObject = datumPlaneBuilder1->CommitFeature();
	datumPlaneBuilder1->Destroy();

	return vObject;
}