[二次开发源码] NX二次开发源码分享: NXOpen C++获取面的面积和周长

2018-9-11 21:23:07 497 1

[复制链接]
admin 发表于 2018-8-23 08:19:35 | 显示全部楼层 |阅读模式

admin 楼主

2018-8-23 08:19:35

请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!

您需要 登录 才可以下载或查看,没有帐号?发邮件注册

x

3 _/ c# s- G5 F$ n9 K% p! P7 Y
0 d- o  d& y* _$ [NX二次开发源码分享: NXOpen C++获取面的面积和周长
& q& C2 {) N, ]- x' o: E
6 z0 P8 {$ H6 N$ n' s
1 `4 Q2 T$ R$ \+ r: y

- L& C5 n. b3 l* f3 {3 `+ [
' S9 y3 M. Y% w/ R) P

# d. n- s3 R4 x8 u  M/ k* f
[C++] 纯文本查看 复制代码
double MyClass::MeasureFaceArea(TaggedObject* face_tag)
{
    char str[256];
        
    Unit *unit1(dynamic_cast<Unit *>(workPart->UnitCollection()->FindObject("SquareMilliMeter")));
    Unit *unit2(dynamic_cast<Unit *>(workPart->UnitCollection()->FindObject("MilliMeter")));

    //FaceCollector issue is fixed in NX9
    NXObject *nullNXObject(NULL);
    MeasureFaceBuilder *measureFaceBuilder1;
    measureFaceBuilder1 = workPart->MeasureManager()->CreateMeasureFaceBuilder(nullNXObject);
        
    Face *face1 = dynamic_cast<Face *>(face_tag);
    vector<Face *> faces1(1);
    faces1[0] = face1;
    FaceDumbRule *faceDumbRule1;
    faceDumbRule1 = workPart->ScRuleFactory()->CreateRuleFaceDumb(faces1);
    
    std::vector<SelectionIntentRule *> rules1(1);
    rules1[0] = faceDumbRule1;
    measureFaceBuilder1->FaceCollector()->ReplaceRules(rules1, false);
    NXOpen::NXObject *nxObjct1 = measureFaceBuilder1->Commit();

    NXOpen::ScCollector *scCollector1 = measureFaceBuilder1->FaceCollector();

    MeasureFaces *measureFaces1;
    measureFaces1 = workPart->MeasureManager()->NewFaceProperties(unit1, unit2, 0.99, scCollector1);

    double face_area = measureFaces1->Area();
    sprintf_s(str, sizeof(str), "Selected Face Area: = %f",face_area);
    print(str);
    
    double face_perimeter = measureFaces1->Perimeter();
    sprintf_s(str, sizeof(str), "Selected Face Perimeter: = %f",face_perimeter);
    print(str);

    delete measureFaces1;   
    delete faceDumbRule1;
    measureFaceBuilder1->Destroy();
    return face_area;
}
3 }3 \/ i+ M& P$ k; N
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 www.diantuankj.com/ doTeam.tech
回复

使用道具 举报

rkc_555 发表于 2018-9-11 21:23:07 | 显示全部楼层

rkc_555 沙发

2018-9-11 21:23:07

这个方法我试过了,我8.5的版本好像不行,计算的面积为0,可以直接创建measureFaces对象,用另一个重载函数,只要两行代码就能计算出面积
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 www.diantuankj.com/ doTeam.tech
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 发邮件注册

返回列表 本版积分规则

用户组 : 管理员
邮   箱 :xduniverse@qq.com
手   机 :VIP用户可查看[申请]
Q   Q : 点击这里给我发消息
性别 : 就不告诉你
主页 :http://www.plmhome.com
个人介绍 :原西门子NX高级教务员,10多年NX培训,开发咨询,Teamcenter培训实施等

主题2126

帖子3334

积分62593

  • NX版本发布Roadmap 路

    NX版本发布Roadmap 路线图,没有NX13, NX1847将

  • NX1847 和 NX12 相关

    https://www.plm.automation.siemens.com/glob

  • Asp.net站点实现Aras

    1、创建Web站点: 2、添加dll引用: 三

  • NX12.0.2 升级或安装

    NX12.0.2 升级或安装图文教程 (1)下载安装包

  • Aras一个Web站点下创

    创建多个Instance,其实就是创建多个Database,用

  • 发布新帖
  • 在线客服1
  • 在线客服2
  • 微信
  • 客户端
  • 返回顶部
  • NX讨论
    Catia
    TC讨论
    Tecno
    云课堂
    业务合作
    快速回复 返回顶部 返回列表