PLM之家精品课程培训,联系电话:18301858168 QQ: 939801026

  • NX二次开培训

    NX二次开培训

    适合初级入门或想深入了解二次开发的工程师,本培训结合ufun,NXOpen C++,大量的实例及官方内部的开发技术对于老鸟也值得借鉴!.

    NX CAM二次开发培训报名 NX二次开发基础培训报名
  • PLM之家Catia CAA二次开发培训

    Catia二次开发培训

    Catia二次开发的市场大,这方面开发人才少,难度大。所以只要你掌握了开发,那么潜力巨大,随着时间的积累,你必将有所用武之地!

  • PLM之Teamcenter最佳学习方案

    Teamcenter培训

    用户应用基础培训,管理员基础培训,管理员高级培训,二次开发培训应有尽有,只要你感兴趣肯学习,专业多年经验大师级打造!

  • PLM之Tecnomatix制造领域培训

    Tecnomatix培训

    想了解制造领域数字化吗?想了解工厂,生产线设计吗?数字化双胞胎,工业4.0吗?我们的课程虚位以待!

PLM之家PLMHome-国产软件践行者

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

[复制链接]

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

admin 发表于 2018-8-23 08:19:35 |阅读模式

admin 楼主

2018-8-23 08:19:35

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

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

x
8 c8 F* R# g; S' y# n  p
6 k' H) f0 R$ `% @$ {
NX二次开发源码分享: NXOpen C++获取面的面积和周长# M- T) B2 T# G0 h* Q( D$ j/ `. {
6 ~& B- {/ x; d9 X# z. Q4 [" v
( W, Q+ ]8 U: J
; k2 |: O9 g, L" E# @+ t

$ p9 T( V! R3 I1 P, x$ `3 v; f
- }7 r% z8 I. h- _: X[mw_shl_code=cpp,true]double MyClass::MeasureFaceArea(TaggedObject* face_tag)
1 j: T: Q6 h) s/ b{
& H$ ~6 s, Q8 Z7 F) m- x' T    char str[256];5 q) f: {0 s1 f5 z  b  \
        
1 y  U6 R9 o, @. G) {    Unit *unit1(dynamic_cast<Unit *>(workPart->UniTCollection()->FindObject("SquareMilliMeter")));
0 S' H6 z/ w( Y, ?    Unit *unit2(dynamic_cast<Unit *>(workPart->UnitCollection()->FindObject("MilliMeter")));
9 ~( x" y& u% |
' s0 J2 \' P: ?4 S- _: t    //FaceCollector issue is fixed in NX90 z- L) y$ z0 t% P3 R0 s$ F
    NXObject *nullNXObject(NULL);& H$ `* E' i6 A# G
    MeasureFaceBuilder *measureFaceBuilder1;
' p) m4 X  p% N7 O4 }1 ]  Y' s. H    measureFaceBuilder1 = workPart->MeasureManager()->CreateMeasureFaceBuilder(nullNXObject);6 l* o9 \6 M( ^
        
! k" }* q5 x" _+ @6 a    Face *face1 = dynamic_cast<Face *>(face_tag);5 G  t/ a9 M) W( U
    vector<Face *> faces1(1);
" Q: _: A3 g& |4 [; I) X- P    faces1[0] = face1;5 `: v. l, V, D0 S* T5 z, G
    FaceDumbRule *faceDumbRule1;
) P- V) W  P. |/ ?! u- j; z$ W    faceDumbRule1 = workPart->ScRuleFactory()->CreateRuleFaceDumb(faces1);1 v% y3 P' G9 k3 i2 }3 ]2 u7 h1 m
    4 H/ w7 J% s6 o  t7 t6 S: p
    std::vector<SelectionIntentRule *> rules1(1);
/ y+ A& ~9 B% K4 g2 W: y& `    rules1[0] = faceDumbRule1;; ^9 z1 ]4 v4 V1 P: G/ ~4 V, h4 N
    measureFaceBuilder1->FaceCollector()->ReplaceRules(rules1, false);3 R6 V% F/ s6 X
    NXOpen::NXObject *nxObjct1 = measureFaceBuilder1->Commit();
- @$ w4 d3 I8 K% ~( _! Z9 O" @1 A2 R) s
    NXOpen::ScCollector *scCollector1 = measureFaceBuilder1->FaceCollector();
) M2 E4 Q7 b/ }, f$ X/ J+ g, E/ V0 ]7 T4 @/ i; F" f0 M0 v* E
    MeasureFaces *measureFaces1;
5 O; v- \" Y' k4 L& p6 S    measureFaces1 = workPart->MeasureManager()->NewFaceProperties(unit1, unit2, 0.99, scCollector1);; G6 T% w8 O8 O+ U
+ {* _# w( k! l; j
    double face_area = measureFaces1->Area();3 ~2 H' ?4 o! _, p5 d
    sprintf_s(str, sizeof(str), "Selected Face Area: = %f",face_area);
9 P  {- y! t' s+ w  u# m( _    print(str);
( A5 A% p5 j; h9 v7 u, D- @   
/ ~* u0 B5 Z9 A2 h/ ]* J, f7 H4 v    double face_perimeter = measureFaces1->Perimeter();- H1 t6 ^! z5 e/ E# H; \# c
    sprintf_s(str, sizeof(str), "Selected Face Perimeter: = %f",face_perimeter);
$ g7 V$ f& D2 U- b8 d% l    print(str);( m8 p, ~7 E1 X

- {0 P/ X# |5 T, R3 V) @8 B    delete measureFaces1;     v4 b9 K" B/ m2 r# p9 A
    delete faceDumbRule1;6 ^2 s0 a; a9 e8 Y) [
    measureFaceBuilder1->Destroy();
/ r6 q  Y& `+ u    return face_area;
3 c& `0 |$ V2 W: `% }" R1 [4 r}% S% P! s- ]7 _- R* b+ q
[/mw_shl_code]* c: T8 k$ |  V! A' ~$ p
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 www.diantuankj.com/ doTeam.tech
回复

使用道具 举报

全部回复1

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
回复 支持 反对

使用道具 举报

发表回复

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

返回列表 本版积分规则

  • 发布新帖

  • 在线客服

  • 微信

  • 客户端

  • 返回顶部

  • x
    温馨提示

    本网站(plmhome.com)为PLM之家工业软件学习官网站

    展示的视频材料全部免费,需要高清和特殊技术支持请联系 QQ: 939801026

    PLM之家NX CAM二次开发专题模块培训报名开始啦

    我知道了