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 4634 3

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

eda 楼主

2014-6-25 14:31:47

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

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

x
利用JA录制的内容,    Session *theSession = Session::GetSession();/ s" a" H* s  T
    Part *workPart(theSession->arts()->Work());
# a0 U6 N. U* }( y    Part *displayPart(theSession->arts()->Display());8 E, z) f- i" x0 u  }$ y  h
    // ----------------------------------------------
+ i+ @/ [- n- P) G" P    //   Menu: Analysis->Measure Angle...
% i6 D  l' S  w3 ]    // ----------------------------------------------
- p( [  ?9 n+ h8 O7 L: w# }3 ?) l4 ]9 d    Session::UndoMarkId markId1;4 M- S6 }' j# T$ `# m
    markId1 = theSession->SetUndoMark(Session::MarkVisibilityVisible, "Start");+ I  p% p8 d' C4 E- i( K
& G8 U$ V/ M/ c1 ]8 l% ~3 Y# [
    NXObject *nullNXObject(NULL);3 _) X* u! ?% Z) H9 [  `6 Y; R
    MeasureAngleBuilder *measureAngleBuilder1;- Y7 U$ ?0 _/ a" `/ ^' T
    measureAngleBuilder1 = workPart->MeasureManager()->CreateMeasureAngleBuilder(nullNXObject);
% H1 l- L! y. Y1 G6 V" L4 C* l* d' {4 ]( j* Z5 x/ l8 h
    theSession->SetUndoMarkName(markId1, NXString("Measure Angle \345\260\215\350\251\261\346\226\271\345\241\212", NXString::UTF8));
5 u2 o3 y/ S$ w# K7 M. O) G6 p) r9 n
3 W' Y- I# P/ _& C1 g5 h" p+ T    measureAngleBuilder1->SetObjtype1(MeasureAngleBuilder::ObjectTypeVector);9 _& J) V% U! g; K  Q

2 {/ J  O3 ~/ [* K    Unit *unit1(dynamic_cast<Unit *>(workPart->UniTCollection()->FindObject("MilliMeter")));! {( k0 H9 y; _2 O5 E3 y9 e! R9 x
    Expression *expression1;3 V7 ?& Z( c2 i" G2 D- {4 w  V# E
    expression1 = workPart->Expressions()->CreateSystemExpressionWithUnits("0", unit1);
0 U+ S, g. f+ D1 S+ N, |2 V& F" v6 k- r& O) ^  E
    Line *line1(dynamic_cast<Line *>(workPart->Lines()->FindObject("HANDLE R-12231")));
. {) H9 \4 p+ v) f* m! Z    Direction *direction1;
! \7 a2 W1 _5 e( |- v- Q. B4 a    direction1 = workPart->Directions()->CreateDirection(line1, SenseReverse, SmartObject::UpdateOptionAfterModeling);8 G$ I0 n4 ~+ n/ n& X" v4 t

2 Q4 p/ l% X$ @" I! @* j8 k* L& y    measureAngleBuilder1->SetVector1(direction1);
* B9 k+ {5 d( y5 c* b
( ~4 z# K" B3 O    measureAngleBuilder1->SetObjtype2(MeasureAngleBuilder::ObjectTypeVector);, ~: r: \+ F& J& j- B
0 F! U8 `2 T% \2 n$ V/ v9 n1 [
    Expression *expression2;
0 a( a( u0 k3 E2 Z    expression2 = workPart->Expressions()->CreateSystemExpressionWithUnits("0", unit1);
% v, a4 G3 T  h! w- o) |0 N' b$ R$ H
* ~; |4 ?9 q6 Q4 j( G    Point3d origin1(0.0, 0.0, 0.0);* ~% c3 s) E- a0 v0 }, I
    Vector3d vector1(1.0, 0.0, 0.0);
# W; C8 E, l" M( Z% l2 ^    Direction *direction2;
7 G$ ]* ^. |; ^0 S    direction2 = workPart->Directions()->CreateDirection(origin1, vector1, SmartObject::UpdateOptionAfterModeling);7 }4 h" p* H( k1 [

6 m' q* J8 @6 d" C, B1 M    measureAngleBuilder1->SetVector2(direction2);
9 W7 R) @: f. I- {9 c
% `5 G- q+ b* s" B8 Z/ v    measureAngleBuilder1->SetAnnotationMode(MeasureBuilder::AnnotationTypeShowDimension);
+ _. c% m. I# b2 b
. X9 H7 n( ?0 d+ N4 x" p3 g    Session::UndoMarkId markId2;
0 ^+ i) S% w* }, q4 X6 x1 j    markId2 = theSession->SetUndoMark(Session::MarkVisibilityInvisible, "Measure Angle");: T; l$ J+ Q4 `+ K% r# s# M

2 \$ d" Z7 _2 z1 s. n( N# w    theSession->DeleteUndoMark(markId2, NULL);
9 j  v! X5 |, D/ O5 ^  w+ j4 q% B) M  s# `
    theSession->SetUndoMarkName(markId1, "Measure Angle");; ?% e1 O: X: ^

4 |$ W" C8 U, p7 @( ?1 g    measureAngleBuilder1->Destroy();
. {5 t# A/ A& [- J! X, \0 s: R- h! V4 ]* B! `& X. m$ o
    workPart->Expressions()->Delete(expression1);( b! z# J, ~. a' i

0 w8 Z6 P! T3 q) p( `    workPart->Expressions()->Delete(expression2);$ v$ O" }' \6 ]  `
9 x+ \7 c8 G' d6 G% C2 E2 [9 K5 U
    Session::UndoMarkId markId3;
% n2 T# x/ L9 T: B2 X    markId3 = theSession->SetUndoMark(Session::MarkVisibilityVisible, "Start");- I8 {. D7 B" |; M' [9 T9 q, |. `

5 e- U; X5 O7 [" t    MeasureAngleBuilder *measureAngleBuilder2;
- u# g6 S( |; K, K9 d( }  |# L% h    measureAngleBuilder2 = workPart->MeasureManager()->CreateMeasureAngleBuilder(nullNXObject);* Y) p- a! x  ^- b% {7 u3 I3 k
3 Q/ d+ q: J; G! n
    measureAngleBuilder2->SetAnnotationMode(MeasureBuilder::AnnotationTypeShowDimension);9 b: T/ D( G1 H
  ^- }* X# ~+ S! l
    measureAngleBuilder2->SetObjtype1(MeasureAngleBuilder::ObjectTypeVector);. G/ Q: Z1 I, O( C& s2 n

( r* M: u: ]& \# Y/ r: W    measureAngleBuilder2->SetObjtype2(MeasureAngleBuilder::ObjectTypeVector);4 v8 b+ B4 H+ f, i6 ?
! y+ b4 P- {4 v1 e& a
    theSession->SetUndoMarkName(markId3, NXString("Measure Angle \345\260\215\350\251\261\346\226\271\345\241\212", NXString::UTF8));+ l& Z' J) v9 s( c: [. c! e- V5 Q

% h/ \2 x+ M% r; R% @4 e/ V/ w    Point3d origin2(0.0, 0.0, 0.0);
; [4 W7 w3 Q( v( g" R' D" a8 }    Vector3d vector2(1.0, 0.0, 0.0);
, y9 P) i: R; r# ?' J+ [$ A( d    Direction *direction3;& a0 U; q" a  y. k! g* b7 c' X
    direction3 = workPart->Directions()->CreateDirection(origin2, vector2, SmartObject::UpdateOptionAfterModeling);! j: G  J; S: [" q" o/ x& f2 z1 c

0 L5 R5 t' L. S3 ]3 V9 K, D    measureAngleBuilder2->SetVector2(direction3);- ]5 k% N! @0 f9 ?  ^

3 U, x) ]4 s9 C1 O) {( d    // ----------------------------------------------
' Z1 s0 A9 Y. g; B& _    //   Dialog Begin Measure Angle# D9 _  o2 n: T! _/ i7 [: z
    // ----------------------------------------------
+ }: u1 x  |  `% }# _4 W    Expression *expression3;  f+ R$ k( y2 u  c$ o* i' \: W
    expression3 = workPart->Expressions()->CreateSystemExpressionWithUnits("0", unit1);
$ a3 G, D. k( V7 W2 M
+ }8 N  g/ ]; U7 T    measureAngleBuilder2->Destroy();$ p; I3 T+ d9 L# k7 u& J

/ U  s) s6 Z! l# z5 M8 [    workPart->Expressions()->Delete(expression3);6 j. k# ~/ Q& p8 h; E5 G
+ k1 m0 ]& F) {4 c
    theSession->UndoToMark(markId3, NULL);
7 Q5 X8 S& o: i
( z* c" Z; F! W; L: T0 m    theSession->DeleteUndoMark(markId3, NULL);
( |8 I9 q5 w  B8 ]9 C
2 X) V7 ~5 K- ^$ X, F    // ----------------------------------------------
: Q! Q# W1 [8 G    //   Menu: Tools->Journal->Stop Recording
/ Z2 u/ s/ n$ p* }$ ~    // ----------------------------------------------
4 \: X" D" G7 ~$ k  |; Z6 r
5 M# ~* Y: ^0 e8 ?8 @! ^, W$ W7 g- i; i2 i8 Q
+ m1 O# G0 h  H
* ]2 B/ z4 y, T
于VS中写入了以下内容
' E$ _) ^. `8 h9 ~. e
7 \; ~: m+ f4 z& fSession *theSession = Session::GetSession();
2 p1 _7 j. f- [. C                Part *workPart(theSession->arts()->Work());
2 _4 E4 \; }4 l4 z                Part *displayPart(theSession->arts()->Display());2 n* y/ O4 w1 n' _) h. a
                ListingWindow *lw = theSession->ListingWindow();
" J& w9 N1 ?9 r6 y* T8 o  h3 f5 d' x* g/ {3 A; E" _( T- W1 ~$ q
                NXObject *nullNXObject(NULL);/ X- N3 r# e# e% y" K/ M
                MeasureAngleBuilder *measureAngleBuilder1;
# S' A: E: k  |                measureAngleBuilder1 = workPart->MeasureManager()->CreateMeasureAngleBuilder(nullNXObject);9 O# r2 |8 M8 p" L/ G4 _

+ W3 T; H% [6 ?$ k- ~5 E& o: O" b                measureAngleBuilder1->SetAnnotationMode(MeasureBuilder::AnnotationTypeShowDimension);- ]% L+ i9 g% K! s5 T! h) F
9 e6 B9 B& f* J( S$ H9 H" p
                measureAngleBuilder1->SetObjtype2(MeasureAngleBuilder::ObjectTypeVector);, o6 r7 A9 P9 T+ H0 p, Z& s
; m2 P* f* C  f: U: q" o1 v: H" ~
                Point3d origin1(0.0, 0.0, 0.0);% `/ e( \+ H" d9 x
                Vector3d vector1(1.0, 0.0, 0.0);
" _  U  i, i0 ~/ N( E6 E  _  \6 W0 {                Direction *direction1;
( [5 s' y9 C/ w                direction1 = workPart->Directions()->CreateDirection(origin1, vector1, SmartObject::UpdateOptionAfterModeling);0 F7 ~6 N2 p9 n+ f

8 H0 {* z" b& @                measureAngleBuilder1->SetVector2(direction1);
; \5 M7 y9 D% s: G  O- f5 _
6 L9 J. r, q+ l5 x                measureAngleBuilder1->SetObjtype1(MeasureAngleBuilder::ObjectTypeVector);
3 S0 E! a: T# r, N3 H+ Y9 P( e. O% w$ c5 E7 I, i
                BlockStyler:ropertyList *vectorProperty = vector0->GetProperties();; i3 m- t4 X  I
                Vector3d vec = vectorProperty->GetVector("Vector");7 Z* K  [* k$ U; f3 U+ i2 ?
                delete vectorProperty;
9 O0 I+ a6 I* l! b) x                vectorProperty = NULL;
  D4 d8 U9 J8 X5 D1 ?9 L. {8 r9 F2 R. j1 l0 q5 z
                Direction *direction2 = dynamic_cast< Direction*>(vectorProperty);
$ {" n( W9 K. ?/ H! q
0 @; B1 l- z0 U' ?) B& W& N                measureAngleBuilder1->SetVector1(direction2);
0 W+ [5 B' H: Z  E, V! u+ o* W# T/ f, K/ T
运行后无报错,但却无法得知正确量测出来的角度数值,以上内容不知那里有误,请大侠们指点2 }. i1 X+ M: t1 Q. n
! H$ ~* a% M) C2 j
' b1 s" x2 w7 m! j

! L" |' f2 P' Z6 s9 x5 ?& r
上海点团信息科技有限公司,承接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

这明显是错的
7 s# U, W, I7 S* ]  Direction *direction2 = dynamic_cast< Direction*>(vectorProperty);
, J8 F/ b6 A+ N# |/ X
1 b7 Z9 J2 T5 C1 Q# c看论坛视频吧
. {7 X8 v  S- p( z* m
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了