PLM之家精品课程培训

PLM之家精品课程培训

联系电话:18301858168   |   QQ咨询:939801026
NX二次开发培训

NX二次开发培训

UFUN/NXOpen C++和实战案例

适合初级入门或想深入了解二次开发的工程师,本培训结合ufun,NXOpen C++,大量的实例及官方内部的开发技术。
公众号二维码

关注公众号

点击扫描二维码免费在线高清教程

课程详情
Catia二次开发培训

Catia二次开发培训

市场需求大,掌握核心技术前景广阔

Catia二次开发的市场需求大,人才稀缺。掌握开发技能潜力巨大,随着经验积累将在汽车、航空等领域有所作为。
B站二维码

在线原创B站视频

点击关注工业软件传道士主页

课程详情
Teamcenter培训

Teamcenter培训

全方位培训,从基础应用到高级开发全覆盖

涵盖用户应用基础培训、管理员基础培训、管理员高级培训及二次开发培训等全方位内容,由多年经验讲师打造。
QQ群二维码

加入同行交流

点击扫描二维码加入QQ群

课程详情
×

PLM之家plmhome公众号

课程涵盖: PLM之家所有原创视频

×

关注B站视频

所有高清视频一览无余,全部在线播放学习

×

加入PLM之家QQ群

同行交流,疑问解答,更多互助

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

[已解决] 关于NXOpen中的量测角度功能开发~~

  [复制链接]

2014-6-27 12:40:38 4632 3

eda 发表于 2014-6-25 14:31:47 |阅读模式

eda 楼主

2014-6-25 14:31:47

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

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

x
利用JA录制的内容,    Session *theSession = Session::GetSession();
! C/ J0 ^: f$ }1 }7 X0 ]& E8 m1 B# Y" q5 P    Part *workPart(theSession->arts()->Work());
7 |! z9 a7 P8 K: |, u& V. f    Part *displayPart(theSession->arts()->Display());
7 A' {' e' Y+ e    // ----------------------------------------------& u% h4 {6 T- C# r2 {0 q
    //   Menu: Analysis->Measure Angle...3 `' @% t+ t, d3 Y- N# E
    // ----------------------------------------------) b! P5 A" `3 A$ ~3 P$ k1 O- D( T
    Session::UndoMarkId markId1;: j9 `* e, E2 k6 Z
    markId1 = theSession->SetUndoMark(Session::MarkVisibilityVisible, "Start");
5 s5 z$ U  O4 W0 J: Z7 T
9 ~: e0 r! [& K    NXObject *nullNXObject(NULL);$ R* ]1 `; g% I$ d, P# p8 b
    MeasureAngleBuilder *measureAngleBuilder1;3 h0 F; g& y; F* T+ S
    measureAngleBuilder1 = workPart->MeasureManager()->CreateMeasureAngleBuilder(nullNXObject);4 m9 G+ w" L3 Y& e
3 K: ~  M: n" R4 o: @9 z
    theSession->SetUndoMarkName(markId1, NXString("Measure Angle \345\260\215\350\251\261\346\226\271\345\241\212", NXString::UTF8));0 d$ F- ^& c# d  c. x. J

( @5 o3 E6 o  ~% n% j- }  n    measureAngleBuilder1->SetObjtype1(MeasureAngleBuilder::ObjectTypeVector);2 J( j6 A. X/ a  [: U
# D3 T( c9 C7 E, {' E) X
    Unit *unit1(dynamic_cast<Unit *>(workPart->UniTCollection()->FindObject("MilliMeter")));# K4 A6 ?& \9 h  U/ }. t
    Expression *expression1;
5 `- }1 Y- N: O$ x) |4 h    expression1 = workPart->Expressions()->CreateSystemExpressionWithUnits("0", unit1);
. r5 l' K& c" o7 y( r
' L' L( b( s& {+ {    Line *line1(dynamic_cast<Line *>(workPart->Lines()->FindObject("HANDLE R-12231")));9 G2 j4 }7 f. ~7 @' ~0 C. X
    Direction *direction1;
% F2 F& m# |) i" [" y    direction1 = workPart->Directions()->CreateDirection(line1, SenseReverse, SmartObject::UpdateOptionAfterModeling);2 `; x9 F+ i0 y/ F# `
8 n5 e+ [4 _, V" F
    measureAngleBuilder1->SetVector1(direction1);: A! M  P* @6 S% {; f6 W

1 T! j* O0 B5 o$ T# V6 P7 r    measureAngleBuilder1->SetObjtype2(MeasureAngleBuilder::ObjectTypeVector);
  c  i+ n/ n" a0 t% T. O/ O6 U. y0 {, x, w4 }# j2 p
    Expression *expression2;
7 W6 G/ e% v4 E8 }( A/ |    expression2 = workPart->Expressions()->CreateSystemExpressionWithUnits("0", unit1);& h1 w9 E( j1 Z. `

" T/ u1 j/ |0 e- H    Point3d origin1(0.0, 0.0, 0.0);
8 l% i, ], }) e" ^. O# k    Vector3d vector1(1.0, 0.0, 0.0);
8 i; e5 [4 m) L( `# f# o* c5 s    Direction *direction2;
( l+ m! w, K8 R! {, ?" P, n( y2 \    direction2 = workPart->Directions()->CreateDirection(origin1, vector1, SmartObject::UpdateOptionAfterModeling);+ ?2 e0 ^# V8 A, B- C

/ [- ~% }8 N" j% r) \7 K* Y    measureAngleBuilder1->SetVector2(direction2);3 D0 O* b% f, Y/ d5 Z

* D  j& Y+ M1 _; w$ J    measureAngleBuilder1->SetAnnotationMode(MeasureBuilder::AnnotationTypeShowDimension);
8 t$ Q1 g3 E8 t8 V: C/ T
' U- J) ]9 V' b3 {1 q    Session::UndoMarkId markId2;& \' y% [0 D2 N( I
    markId2 = theSession->SetUndoMark(Session::MarkVisibilityInvisible, "Measure Angle");( c' W$ e9 I9 i$ `1 J" ^, k2 W

. }6 y8 P$ R; E, u    theSession->DeleteUndoMark(markId2, NULL);
' C0 a( E# {1 m# m7 i
  ]5 r% q; p0 X' n    theSession->SetUndoMarkName(markId1, "Measure Angle");0 W5 u; l" X7 y1 s' M

3 E* J, O5 B& B, ^8 v    measureAngleBuilder1->Destroy();5 v1 v2 Q+ L) x, ?4 l# `

1 g5 X( w, }' R9 [    workPart->Expressions()->Delete(expression1);. e/ H4 I4 _/ f; F, Z4 D& B
# ]! V$ N+ x7 [: J, T$ Z
    workPart->Expressions()->Delete(expression2);
9 D) A/ W# V- R) V5 S4 \9 V. g* Q( A' i1 g1 i# n4 j  j
    Session::UndoMarkId markId3;
* y; ?) o4 a7 l; e    markId3 = theSession->SetUndoMark(Session::MarkVisibilityVisible, "Start");
% u- J: B) o: t& Z+ q1 P5 J% `
, A7 v- t' y9 M$ H4 D    MeasureAngleBuilder *measureAngleBuilder2;1 N0 `: k% ?- [$ Y' L( @
    measureAngleBuilder2 = workPart->MeasureManager()->CreateMeasureAngleBuilder(nullNXObject);
0 `$ D2 V7 _. G( G6 E' r
( t# h/ b+ V! R: @# y    measureAngleBuilder2->SetAnnotationMode(MeasureBuilder::AnnotationTypeShowDimension);2 x0 U( U5 [0 d

3 b' H( e. q/ d  ?    measureAngleBuilder2->SetObjtype1(MeasureAngleBuilder::ObjectTypeVector);3 ^8 ?- c6 C3 g, S1 d. U
! J0 ]! ?$ t2 q$ n, W+ V  F
    measureAngleBuilder2->SetObjtype2(MeasureAngleBuilder::ObjectTypeVector);
2 c: T6 Z7 k9 _3 D+ ^& f! A
4 j4 |3 {* K* y) O    theSession->SetUndoMarkName(markId3, NXString("Measure Angle \345\260\215\350\251\261\346\226\271\345\241\212", NXString::UTF8));
' B: G# A( a4 W+ N+ b8 X; B
$ R0 v' P0 X8 x% e    Point3d origin2(0.0, 0.0, 0.0);
! U$ i2 |+ q% Z* p0 F    Vector3d vector2(1.0, 0.0, 0.0);: J, M. t9 S, P! X# W& y; N! L& k
    Direction *direction3;. b/ P7 ~* V/ \3 h6 x
    direction3 = workPart->Directions()->CreateDirection(origin2, vector2, SmartObject::UpdateOptionAfterModeling);
- S3 B  n# t8 X8 [5 W) J2 W3 z- q: G/ C$ d
    measureAngleBuilder2->SetVector2(direction3);
. d1 T; Z* B' y7 N" r( a" U
4 D& @* Q: o: v! |    // ----------------------------------------------% J3 A3 h; B, u/ x+ S8 o
    //   Dialog Begin Measure Angle, X9 D  L/ X  e8 l
    // ----------------------------------------------
6 b$ x+ }& I6 B6 [    Expression *expression3;
0 C% P0 E" b3 ~# @    expression3 = workPart->Expressions()->CreateSystemExpressionWithUnits("0", unit1);3 s$ [3 o" |' a7 f) l+ R, w. i
# F5 t. O7 S7 O
    measureAngleBuilder2->Destroy();3 K: R% a$ i/ T2 g3 B# C: {% ?

" }2 ~( h. ?  l0 I* Z/ S0 O; @+ }+ P- ~    workPart->Expressions()->Delete(expression3);
  C+ `0 x2 G: E
8 k2 R2 J: \. F7 Q+ C$ u. F  m# X% S    theSession->UndoToMark(markId3, NULL);6 c3 m  Z2 M6 t6 y4 s7 w
2 t) j+ Q  _' ]5 S; F5 R/ O! r
    theSession->DeleteUndoMark(markId3, NULL);
% p! H; G6 l  ?- D) W" k& Y" d1 r- A! ~$ y: X. H) g
    // ----------------------------------------------- [: D$ o* v" H: l. o/ |" @" O) ^: q
    //   Menu: Tools->Journal->Stop Recording: g' w7 g5 ~$ ]! D
    // ----------------------------------------------
7 b( y: o( O* _) A' {9 {
- Y. x0 }- m" Q7 k5 A- |3 ?" u/ t9 Z2 z4 R" F8 ~' e6 L

7 L; \8 ~* P2 s1 w' N: }
5 L- l5 E8 I. I% N于VS中写入了以下内容2 R5 O9 A) g- w; h. A
+ E8 e5 ~( {( @5 E: h* f
Session *theSession = Session::GetSession();
; f+ z/ f' c: Q& @/ T, l" }                Part *workPart(theSession->arts()->Work());
' _$ a! \- h  @  e0 l$ f$ z                Part *displayPart(theSession->arts()->Display());) ?& l- m3 }% H6 g, a
                ListingWindow *lw = theSession->ListingWindow();! [4 X2 F& S0 D' ]$ I& L% \

& j: G. L  ~" C                NXObject *nullNXObject(NULL);9 s7 g7 F; K- c
                MeasureAngleBuilder *measureAngleBuilder1;
: R% L. D. e/ {+ L; H3 X, V4 \: o                measureAngleBuilder1 = workPart->MeasureManager()->CreateMeasureAngleBuilder(nullNXObject);
: O0 L! k* H( ^5 ^. u4 Y/ Z! c" N+ M
                measureAngleBuilder1->SetAnnotationMode(MeasureBuilder::AnnotationTypeShowDimension);9 b5 \7 T- a" h+ v# m( N/ n

: ]/ K9 T, M. m$ M                measureAngleBuilder1->SetObjtype2(MeasureAngleBuilder::ObjectTypeVector);) Z: h. W1 x& t% @3 G9 B; i+ u

" c) i: I- |. z" F+ p% K                Point3d origin1(0.0, 0.0, 0.0);# c- w. H4 T: M2 G, |/ R
                Vector3d vector1(1.0, 0.0, 0.0);
, @; q6 E1 S, X                Direction *direction1;# L/ F! n/ b/ @/ G( B
                direction1 = workPart->Directions()->CreateDirection(origin1, vector1, SmartObject::UpdateOptionAfterModeling);
4 a* \4 N* [6 s1 h
3 _" i  C8 W) ^6 S7 Q                measureAngleBuilder1->SetVector2(direction1);' s4 i" b0 M" C4 B$ a3 y

0 c& d5 r5 D, B( p                measureAngleBuilder1->SetObjtype1(MeasureAngleBuilder::ObjectTypeVector);. {2 K7 C$ D  ]: t- P

" o- A- k# k" O% f3 L# D                BlockStyler:ropertyList *vectorProperty = vector0->GetProperties();7 @# ^" b) Q; U6 c
                Vector3d vec = vectorProperty->GetVector("Vector");4 E. ?; U% Y7 |+ L8 D1 v
                delete vectorProperty;, G, r; O. o  T
                vectorProperty = NULL;. P0 s& H. }: Y# K1 g, h, a- l
3 a/ l. }0 o: T; s! h  E
                Direction *direction2 = dynamic_cast< Direction*>(vectorProperty);
. }6 o& ^1 [1 v8 m
0 ]. y3 k0 b2 I- J( h4 {                measureAngleBuilder1->SetVector1(direction2);& w: C! n/ v+ G8 G2 M+ i

4 _( I3 p6 X) ~运行后无报错,但却无法得知正确量测出来的角度数值,以上内容不知那里有误,请大侠们指点8 s, D9 o' h/ G6 H) f, y9 r

# V  X7 J! O8 ~# D  ]
8 O( F* W0 z0 z! C* i$ m7 [/ v3 Z1 T( m8 x6 E: m$ W
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 www.diantuankj.com/ doTeam.tech
回复

使用道具 举报

全部回复3

花在人间 发表于 2014-6-25 22:28:12

花在人间 沙发

2014-6-25 22:28:12

获取属性用"SelectedObjects",教学视频里有类似的
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 www.diantuankj.com/ doTeam.tech
回复 支持 反对

使用道具 举报

admin 发表于 2014-6-26 09:13:09

admin 板凳

2014-6-26 09:13:09

这明显是错的
  g, Q$ A3 E& `  Direction *direction2 = dynamic_cast< Direction*>(vectorProperty);
: D4 c* v# g' Y4 Y+ J: X# B7 L% p- C: Z) C8 A: s+ V) z: ^
看论坛视频吧
2 v4 c0 h$ H) Z: r/ @" k# P
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 www.diantuankj.com/ doTeam.tech
回复 支持 反对

使用道具 举报

eda 发表于 2014-6-27 12:40:38

eda 地板

2014-6-27 12:40:38

感谢,测试中~~~
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了