• NXOpen测量方位器Z方向到面的投影距离


    C++

    //得到面的TAG
    PropertyList *selection0Props = selection0->GetProperties();
    std::vector<NXOpen::TaggedObject*> theselection = selection0Props->GetTaggedObjectVector("SelectedObjects");
    delete selection0Props;
    selection0Props = NULL;
    tag_t faceTAG = theselection[0]->Tag();

    //测量manip0原点到面的距离
    NXObject *nullNXObject(NULL);
    MeasureDistanceBuilder *measureDistanceBuilder1;
    measureDistanceBuilder1 = workPart->MeasureManager()->CreateMeasureDistanceBuilder(nullNXObject);
    measureDistanceBuilder1->SetMtype(MeasureDistanceBuilder::MeasureTypeMinimum);//创建,类型为最近距离

    Point3d p1 = manip0->Origin();//获取manip0原点
    Vector3d manip0X = manip0->XAxis(); //获取方位器的X方向
    Vector3d manip0Y = manip0->YAxis(); //获取方位器的Y方向

    double ufun_X[3] = { manip0X.X, manip0X.Y, manip0X.Z }; //方位器X轴Vector3d类型转double型
    double ufun_Y[3] = { manip0Y.X, manip0Y.Y, manip0Y.Z }; //方位器Y轴Vector3d类型转double型
    double ufun_Z[3]; //定义ufun_Z轴
    UF_VEC3_cross( ufun_X, ufun_Y, ufun_Z ); //通过叉乘求Z轴
    Vector3d manip0Z ( ufun_Z[0], ufun_Z[1], ufun_Z[2] ); //Z轴double型转Vector3d


    NXOpen::Point3d Point1XYZ(p1.X,p1.Y,p1.Z);//创建点
    NXOpen::Point *p2 = workPart->Points()->CreatePoint(Point1XYZ);//Point3d转Point
    measureDistanceBuilder1->Object1()->SetValue(p2);//设置第一个对像
    Face *face1(dynamic_cast<Face *>(NXOpen::NXObjectManager::Get(theselection[0]->Tag())));
    measureDistanceBuilder1->Object2()->SetValue(face1);

    NXOpen::MeasureDistance *measureDistance1;
    Direction *direction1;
    direction1 = workPart->Directions()->CreateDirection(p1, manip0Z, SmartObject::UpdateOptionAfterModeling);
    measureDistance1 = workPart->MeasureManager()->NewDistance(NULL,p2, face1, direction1, MeasureManager::ProjectionTypeMinimum);//创建距离
    Distance = measureDistance1->Value();//获得距离
    delete measureDistance1;//释放measureDistance1
    measureDistanceBuilder1->Destroy();//释放measureDistanceBuilder1

    char msg[256];
    sprintf_s(msg, "%f", Distance);
    theSession->ListingWindow()->Open();
    theSession->ListingWindow()->WriteLine(msg);

    怡宁塑胶模具设计
  • 相关阅读:
    一份简单的自我评述
    从诞总那儿得到的一些感悟
    2021秋软件工项目选题
    LeNet 网络进行猫狗大战
    不平行的直线
    切长条
    纪念品分组
    奇♂妙拆分
    Qt 一些日期格式转换不精确
    windbg 查看崩溃日志
  • 原文地址:https://www.cnblogs.com/hqsalanhuang/p/14217089.html
Copyright © 2020-2023  润新知