按点和方向创建草图,并添加草图曲线
#include <NXOpen\Session.hxx>
#include <NXOpen\PartCollection.hxx>
#include <NXOpen\WCS.HXX>
#include <NXOpen\CartesianCoordinateSystem.hxx>
#include <NXOpen\NXMatrix.hxx>
#include <NXOpen\SketchCollection.hxx>
#include <NXOpen\SketchInPlaceBuilder.hxx>
#include <NXOpen\Plane.hxx>
#include <NXOpen\ScalarCollection.hxx>
#include <NXOpen\PointCollection.hxx>
#include <NXOpen\Point.hxx>
#include <NXOpen\DirectionCollection.hxx>
#include <NXOpen\Direction.hxx>
//创建草图
//iPoint:关联曲线上的点
//iCurve:关联曲线
//iCurves:要添加到草图的曲线
NXObject* CreateSketch(Point3d iPoint, tag_t iCurve, vector<tag_t> iCurves)
{
if(iCurve==NULL_TAG || iCurves.size()==0)
return NULL;
Part* workPart = Session::GetSession()->Parts()->Work();
Matrix3x3 Mtx = workPart->WCS()->CoordinateSystem()->Orientation()->Element();
Session::GetSession()->BeginTaskEnvironment();
SketchInPlaceBuilder* sketchBuilder = workPart->Sketches()CreateNewSketchInPlaceBuilder(NULL);
sketchBuilder->SetPlaneOption(Sketch::PlaneOptionNewPlane);//设置平面方法
//创建新平面
sketchBuilder->Plane()->SetMethod(PlaneTypes::MethodTypePointDir);//创建平面的方式
Scalar* scalar1 = workPart->Scalars()->CreateScalar(0.0,Scalar::DimensionalityTypeNone,SmartObject::UpdateOptionWithinModeling);
Curve* vCurve = dynamic_cast(Curve*)(NXObjecyManager::Get(iCurve));
Point* origin = workPart->Points()->CreatePoint(vCurve, scalar1,SmartObject::UpdateOptionWithinModeling);
Vector3d vecZ(Mtx.Zx, Mtx.Zy,Mtx.Zz);
Direction* direction1 = workPart->Directions()->CreateDirection(iPoint, vecZ,SmartObject::UpdateOptionWithinModeling);
vector<NXObject*> geom1(2);
geom1[0] = origin;
geom1[1] = direction1;
sketchBuilder->Plane()->SetGeometry(geom1);
//设置草图原点
sketchBuilder->SetSketchOrigin(origin);
NXObject* nxobject1 = sketchBuilder->Commit();
sketchBuilder->Destroy();
Session::GetSession()->EndTaskEnvironment();
//添加草图曲线
Sketch* sketch1 = dynamic_cast<Sketch*>(nxobject1);
sketch1->Activate(Sketch::ViewReorientFalse);//激活草图
for(int i=0; i < iCurves.size();i++)
sketch1->AddGeometry(dynamic_cast<Curve*>(NXObjecyManager::Get(iCurves[i])));
sketch1->Deactivate(Sketch::ViewReorientFalse, Sketch::UpdateLevelModel);//完成草图
return nxobject1;
}

1051

被折叠的 条评论
为什么被折叠?



