zoukankan      html  css  js  c++  java
  • 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);

    怡宁塑胶模具设计
  • 相关阅读:
    Java开发环境搭建(一)
    Android随笔之——Android广播机制Broadcast详解
    Ubuntu 14.04 LTS中怎样安装fcitx中文输入法
    Jenkins:容器化微服务持续集成-高配版
    Jenkins:容器化微服务持续集成-低配版
    JVM(1):JVM与Java体系结构
    RocketMQ:集群搭建
    RocketMQ:单机搭建
    Spring Cloud OAuth2:分布式认证授权
    Spring Security OAuth2:SSO单点登录
  • 原文地址:https://www.cnblogs.com/hqsalanhuang/p/14217089.html
Copyright © 2011-2022 走看看