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

[二次开发源码] UG NX二次开发源码分享: NX Open C++ 创建投影曲线 project curves

  [复制链接]

2019-4-25 18:47:55 9053 3

PLM之家NX 发表于 2014-5-5 22:45:05 |阅读模式

PLM之家NX 楼主

2014-5-5 22:45:05

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

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

x

1 c( `/ u, E- g
( t# {1 x' t- x3 A/ v5 R" g5 h# L( Q2 i1 s( n( ~
UG NX二次开发源码分享: NX Open C++ 创建投影曲线 project curves& j9 A4 t/ T( @9 E5 W3 f
0 L2 V: G* H% j7 t% B9 g6 c( Q
此处使用的是 通过面的法向创建投影曲线,可以参考下!
, v6 W. _# ~/ {4 {" b2 V
8 m* e9 U7 r# Q$ N8 p- a. o9 U" Y6 }* w, P; @# b1 Z9 C7 P
) T0 Q! [0 B4 t% c$ ^: I+ R
: L+ W$ ?4 M% h% F6 a  x0 b, h

) w( b6 L6 {* g3 L( W1 k+ i3 R" ~
& s$ n% X0 z- \, [: c& i2 s7 P/ Q2 d% w

NX Open C++ 创建投影曲线 project curves

 NX Open C++ 创建投影曲线 project curves
) |" Y" x  t/ b) V, {6 H$ [

4 x& j2 S( {+ y9 [* N, B% x) l3 b- @, a! b' r3 [0 J# }2 W; Q

  1. - F% X1 O5 d0 r3 b" W6 b1 }7 w
  2. int trimSteels::project_curves(vector<TaggedObject *>inputObjects,Plane *plane1)
    ' P& P* [/ u- F' c- |; J$ I
  3. {
    % U  H" o$ S4 X& k8 C, T
  4.         int errorCode = 0;
    ( ~6 u; l- H! @( j
  5.         try
    ( e+ n& k6 u/ t) H% ]% `1 L$ W7 H9 W
  6.         {# f7 M) J, M7 F) O$ P7 b' D
  7.                 // createProject curves
    + O5 F! J9 m- c

  8. * M6 K7 Z: j! J5 F
  9.                 Features::Feature *nullFeatures_Feature(NULL);
    $ l1 Q( r! v& G1 ]( G1 N1 ]
  10. % i: w5 y9 j% e1 @- _' h
  11.                 Features::ProjecTCurveBuilder *projectCurveBuilder1;
    $ p+ W. n) a% e' N) H

  12. . i5 i! w1 L$ C, V& ~9 L2 `( q. b
  13.                 projectCurveBuilder1 = workPart->Features()->CreateProjectCurveBuilder(nullFeatures_Feature);4 O6 D0 D* ]( T) n# o
  14. ) `% U6 X! A+ }* F- [+ [2 m
  15.                 projectCurveBuilder1->SectionToProject()->SetDistanceTolerance(DISTANCETOLERANCE);9 }& Q! p9 y" i
  16. " R+ L7 D6 e) s1 F
  17.                 projectCurveBuilder1->SectionToProject()->SetChainingTolerance(CHAININGTOLERANCE);
    % H) u1 a/ O" t

  18. + m. X' Z4 B; Z1 Y+ T$ g" a8 `1 K
  19.                 projectCurveBuilder1->SectionToProject()->SetAngleTolerance(ANGLETOLERANCE);2 a, p2 _. ?, o- E. a

  20. & T( I8 \2 k) ]2 n/ F5 k# N/ i
  21.                 projectCurveBuilder1->SectionToProject()->SetAllowedEntityTypes(Section::AllowTypesOnlyCurves);
    - y' @' s1 n4 ?& b  c3 f

  22. ( W6 A8 R% `' g- K% n6 a
  23.                 projectCurveBuilder1->CurveFitData()->SetTolerance(DISTANCETOLERANCE);
    " M8 c0 a  {* O0 l) B/ f3 y1 N2 J
  24. 8 m2 S5 ^7 W" j  A& H0 S
  25.                 projectCurveBuilder1->CurveFitData()->SetAngleTolerance(ANGLETOLERANCE);
    2 `+ O) v8 o; N# `

  26. ) H1 s; G: H. F" }9 m
  27.                 int size = (int)inputObjects.size();
    . p5 y6 J5 w# X6 z: h. s- i2 Y8 M
  28.                 std::vector<IBaseCurve *> curves1;
    ; H+ B+ ^7 U0 y! f2 ?0 ^. ^: o
  29.                 for (int ii = 0 ; ii < size; ++ii)
    " s$ ]8 q- d& R1 k9 [% L+ [7 u
  30.                 {' E6 g' x2 q( w7 i% b$ g9 u
  31.                         curves1.push_back(dynamic_cast<IBaseCurve*>(inputObjects[ii]));
    & m' I, c+ L$ G9 k/ H% K) N& y! Y% W
  32.                 }
    # T' M& p( ?/ \2 q+ ^* p, b
  33. ; K7 h* x  |2 [$ B! G' m/ o
  34.                 NXOpen::CurveDumbRule *curveDumbRule1;6 t2 V) r* ?4 G' C/ ^2 W  P# {) m

  35. % k5 T# O: D: W  a$ g
  36.                 curveDumbRule1 = workPart->ScRuleFactory()->CreateRuleBaseCurveDumb(curves1);; f' a1 I  O/ h" f: J- B
  37. & b. u. u! K3 s3 h3 \7 }# ?
  38.                 projectCurveBuilder1->SectionToProject()->AllowSelfIntersection(true);
    + j; }0 ]0 N1 ?' d$ J
  39. 8 h2 }. ]' I: B. ~$ d( g
  40.                 std::vector<SelectionIntentRule *> rules1(1);
    4 K* w! m( C% I# B
  41.                 rules1[0] = curveDumbRule1;3 K/ L; Q8 M4 I( o, K; a1 s
  42.                 NXObject *nullNXObject(NULL);0 w5 k; J; k* R5 p' W7 I
  43.                 Point3d helpPoint1(0, 0, 0);
    : g1 W- I$ ~  s. e; K3 P$ i. W
  44.                 projectCurveBuilder1->SectionToProject()->AddToSection(rules1, nullNXObject, nullNXObject, nullNXObject, helpPoint1, Section::ModeCreate, false);
    " D. \: ]' {0 Q; x6 J( Z8 p

  45. 5 G3 \- [/ A- ~8 o
  46.                 plane1->Evaluate();; v2 [0 `2 o( E, l- o( B7 I
  47. 8 C- n: e1 B) P, y' P4 t; G% K
  48.                 projectCurveBuilder1->SetPlaneToProjectTo(plane1);
    , N, t2 @5 R. C/ o- L8 ]

  49. 7 X  a' w9 V2 V: D- X
  50.                 projectCurveBuilder1->SetGapOption(true);
    5 C: V2 R9 E0 M/ x+ m0 ]" h

  51. 6 l- P9 \/ o7 l
  52.                 projectCurveBuilder1->CurveFitData()->SetCurveJoinMethod(GeometricUtilities::CurveFitData::JoinGeneral);
    5 t" m8 f1 H$ Z, X
  53. ' E( `' ]9 A8 U# m
  54.                 NXObject *nXObject1;( z# f" J$ u% y4 ^; G
  55.                 nXObject1 = projectCurveBuilder1->Commit();
    ( J; g# q) i0 B- t9 F

  56. ) Z+ p& M6 c1 R+ L' W# V. g
  57.                 projectCurveBuilder1->SectionToProject()->CleanMappingData();) h: h7 N% b2 G/ p4 n( g

  58. 1 [: `! a/ b  ^3 W) @- }) R, T7 z
  59.                 projectCurveBuilder1->Destroy();" g( _# N' f# \( C/ }# t
  60. # `) x$ D# e, M8 j
  61.         }
      b: L; [" p2 M" @$ K7 Q
  62.         catch(exception& ex)
    # I9 ?: N9 x; f! |4 i8 W
  63.         {9 N% ?3 s5 L$ h! T8 U5 O0 W9 y
  64.                 //---- Enter your exception handling code here -----6 ^) a: _$ }4 H0 ^
  65.                 errorCode = 1;9 }4 B) H6 ?. B& T) F+ V
  66.                 trimSteels::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeError, ex.what());
    / J& l3 R, U  e
  67.         }
      ^/ u! L# E5 @7 Y

  68. 1 D5 T+ {9 e+ v8 N
  69.         return errorCode;% q6 A+ B, M5 p; V
  70. }6 ^3 S) G5 X) V
复制代码

0 G" v8 Y* g) m* C% s, U
0 Y3 Y) |* |% j$ w' _! g; `! D" Q* {. R% z3 Q. o4 U
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 www.diantuankj.com/ doTeam.tech
回复

使用道具 举报

全部回复3

希水长流 发表于 2014-5-15 17:18:05

希水长流 沙发

2014-5-15 17:18:05

创建完投影之后 如何能够获取投影曲线的指针呢?
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 www.diantuankj.com/ doTeam.tech
回复 支持 反对

使用道具 举报

希水长流 发表于 2014-5-15 17:54:14

希水长流 板凳

2014-5-15 17:54:14

版主 我找到接口了
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 www.diantuankj.com/ doTeam.tech
回复 支持 反对

使用道具 举报

593232280 发表于 2019-4-25 18:47:55

593232280 地板

2019-4-25 18:47:55

学习了,高手
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了