//绉诲姩澶嶅埗鐢?double oldmtx[9];
Point3d oriPt;
oldmtx[0] = manip0->XAxis().X;
oldmtx[1] = manip0->XAxis().Y;
oldmtx[2] = manip0->XAxis().Z;
oldmtx[3] = manip0->YAxis().X;
oldmtx[4] = manip0->YAxis().Y;
oldmtx[5] = manip0->YAxis().Z;
oriPt = manip0->Origin();
else if (block == manip0)
{
//---------Enter your code here-----------
// MoveObj();//閫夋嫨瀵硅薄绉诲姩
std::vector<NXOpen::TaggedObject*> vecSelection = selection01->GetSelectedObjects();
if (vecSelection.empty())return 0;
int theenumValue = enum03->GetProperties()->GetEnum("Value");//鑾峰彇enum03鏋氫妇鍊硷紙绉诲姩澶嶅埗锛? if (theenumValue == 1)//澶嶅埗涓斿彧澶嶅埗涓€娆? {
if (copyflag == 0)
{
vector<NXObject*>tempObjVec;
for (int i = 0; i < selection01->GetSelectedObjects().size(); i++)
{
tempObjVec.push_back(dynamic_cast<NXObject*>(selection01->GetSelectedObjects()[i]));
}
copyflag = copyComponent(tempObjVec);
}
}
double newOrigin[3] = { manip0->Origin().X, manip0->Origin().Y, manip0->Origin().Z };
double newXdir[3] = { manip0->XAxis().X, manip0->XAxis().Y, manip0->XAxis().Z };
double newYdir[3] = { manip0->YAxis().X, manip0->YAxis().Y, manip0->YAxis().Z };
double oldXdir[3] = { oldmtx[0], oldmtx[1], oldmtx[2] };
double oldYdir[3] = { oldmtx[3], oldmtx[4], oldmtx[5] };
double oldOrigin[3] = { oriPt.X,oriPt.Y,oriPt.Z };
double Mtx0[16];
UF_MTX4_csys_to_csys(oldOrigin, oldXdir, oldYdir, newOrigin, newXdir, newYdir, Mtx0);
double xform[4][4];
UF_VEC3_copy(Mtx0 + 0, xform[0]);
UF_VEC3_copy(Mtx0 + 4, xform[1]);
UF_VEC3_copy(Mtx0 + 8, xform[2]);
UF_VEC3_copy(Mtx0 + 12, xform[3]);
xform[0][3] = Mtx0[3];
xform[1][3] = Mtx0[7];
xform[2][3] = Mtx0[11];
xform[3][3] = Mtx0[15];
UF_ASSEM_level_option_t option; option = UF_ASSEM_use_existing_level;
for (size_t i = 0; i < vecSelection.size(); i++)
{
UF_ASSEM_reposition_part_occurrence(vecSelection[i]->Tag(), xform, option);
}
oriPt = manip0->Origin();
oldmtx[0] = manip0->XAxis().X;
oldmtx[1] = manip0->XAxis().Y;
oldmtx[2] = manip0->XAxis().Z;
oldmtx[3] = manip0->YAxis().X;
oldmtx[4] = manip0->YAxis().Y;
oldmtx[5] = manip0->YAxis().Z;
double Mtx1[16] =
{
1,0,0,0,
0,1,0,0,
0,0,1,0,
0,0,0,1
};
for (size_t i = 0; i < 16; i++)
if (fabs(Mtx1[i] - Mtx0[i]) > 0.01) return 0;
selection01->Focus();
}
【无标题】
最新推荐文章于 2025-05-21 12:04:25 发布