NXOpen::Features::Feature* MyClass::CreateCylinderFeature(double CylinderDiameter, double CylinderHeight, double OriginPoint[3], double Direction[3], NXOpen::Part* workPart)
{
char Diameterchar[256];
sprintf(Diameterchar, "%f", CylinderDiameter);
char Heightchar[256];
sprintf(Heightchar, "%f", CylinderHeight);
NXOpen::Features::Feature* nullNXOpen_Features_Feature(NULL);
NXOpen::Features::CylinderBuilder* cylinderBuilder1;
cylinderBuilder1 = workPart->Features()->CreateCylinderBuilder(nullNXOpen_Features_Feature);
cylinderBuilder1->BooleanOption()->SetType(NXOpen::GeometricUtilities::BooleanOperation::BooleanTypeCreate);
cylinderBuilder1->SetType(NXOpen::Features::CylinderBuilder::Types::TypesAxisDiameterAndHeight);
NXOpen::Point3d AxisOriginPoint(OriginPoint[0], OriginPoint[1], OriginPoint[2]);
NXOpen::Vector3d AxisDirection(Direction[0], Direction[1], Direction[2]);
NXOpen::Axis* axis1;
axis1 = workPart->Axes()->CreateAxis(AxisOriginPoint, AxisDirection, NXOpen::SmartObject::UpdateOptionWithinModeling);
cylinderBuilder1->SetAxis(axis1);
cylinderBuilder1->Diameter()->SetFormula(Diameterchar);
cylinderBuilder1->Height()->SetFormula(Heightchar);
NXOpen::Features::Feature* cyfeature;
cyfeature = cylinderBuilder1->CommitFeature();
cylinderBuilder1->Destroy();
return cyfeature;
}
NXOpen::NXObject* MyClass::CreatRectangularPattern(std::vector<NXOpen::Features::Feature*> objects1,NXOpen::Part* workPart, NXOpen::Direction* directionx, double number_in_x, double distance_x,NXOpen::Direction* directiony, double number_in_y,double distance_y)
{
NXOpen::Features::Feature* nullNXOpen_Features_Feature(NULL);
NXOpen::Features::PatternFeatureBuilder* patternFeatureBuilder1;
patternFeatureBuilder1 = workPart->Features()->CreatePatternFeatureBuilder(nullNXOpen_Features_Feature);
patternFeatureBuilder1->SetPatternMethod(NXOpen::Features::PatternFeatureBuilder::PatternMethodOptionsSimple);
patternFeatureBuilder1->PatternService()->SetPatternType(NXOpen::GeometricUtilities::PatternDefinition::PatternEnumLinear);
bool added1;
added1 = patternFeatureBuilder1->FeatureList()->Add(objects1);
char numberx[256];
sprintf(numberx, "%f", number_in_x);
char xdistance[256];
sprintf(xdistance, "%f", distance_x);
char numbery[256];
sprintf(numbery, "%f", number_in_y);
char ydistance[256];
sprintf(ydistance, "%f", distance_y);
patternFeatureBuilder1->PatternService()->RectangularDefinition()->SetXDirection(directionx);
patternFeatureBuilder1->PatternService()->RectangularDefinition()->XSpacing()->NCopies()->SetFormula(numberx);
patternFeatureBuilder1->PatternService()->RectangularDefinition()->XSpacing()->PitchDistance()->SetFormula(xdistance);
patternFeatureBuilder1->PatternService()->RectangularDefinition()->SetUseYDirectionToggle(true);
patternFeatureBuilder1->PatternService()->RectangularDefinition()->SetYDirection(directiony);
patternFeatureBuilder1->PatternService()->RectangularDefinition()->YSpacing()->NCopies()->SetFormula(numbery);
patternFeatureBuilder1->PatternService()->RectangularDefinition()->YSpacing()->PitchDistance()->SetFormula(ydistance);
NXOpen::NXObject* nXObject1;
nXObject1 = patternFeatureBuilder1->Commit();
std::vector<NXOpen::NXObject*> objects2;
objects2 = patternFeatureBuilder1->GetCommittedObjects();
return nXObject1;
}
NXOpen::Session* theSession = NXOpen::Session::GetSession();
NXOpen::Part* workPart(theSession->Parts()->Work());
NXOpen::Part* displayPart(theSession->Parts()->Display());
double CylinderDiameter = 10.0;
double CylinderHeight = 50.0;
double OriginPoint[3] = { 0.0,0.0,0.0 };
double Direction[3] = { 0.0,0.0,1.0 };
NXOpen::Features::Feature* cyfeature;
cyfeature = CreateCylinderFeature(CylinderDiameter, CylinderHeight, OriginPoint, Direction, workPart);
NXOpen::Body* CYbody(dynamic_cast<NXOpen::Body*>(workPart->Bodies()->FindObject(cyfeature->JournalIdentifier())));
NXOpen::Point3d originx(0.0, 0.0, 0.0);
NXOpen::Vector3d vectorx(1.0, 0.0, 0.0);
NXOpen::Direction* directionx;
directionx = workPart->Directions()->CreateDirection(originx, vectorx, NXOpen::SmartObject::UpdateOptionWithinModeling);
NXOpen::Point3d originy(0.0, 0.0, 0.0);
NXOpen::Vector3d vectory(0.0, 1.0, 0.0);
NXOpen::Direction* directiony;
directiony = workPart->Directions()->CreateDirection(originy, vectory, NXOpen::SmartObject::UpdateOptionWithinModeling);
std::vector<NXOpen::Features::Feature*> objects1(1);
objects1[0] = cyfeature;
double number_in_x = 20;
double distance_x = 40;
double number_in_y = 20;
double distance_y = 40;
NXOpen::NXObject* nXObject1;
nXObject1 = CreatRectangularPattern(objects1,workPart, directionx, number_in_x, distance_x, directiony, number_in_y, distance_y);