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

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

  [复制链接]

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

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

PLM之家NX 楼主

2014-5-5 22:45:05

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

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

x

4 a3 t; V# a2 s' {+ G1 @) R; e* C" f1 a
0 B0 p8 y1 A! H, r: ~( a
UG NX二次开发源码分享: NX Open C++ 创建投影曲线 project curves0 V( O# D+ h2 T: t( \% ^4 \1 S$ v

1 J- l& m& W+ \- h' ~3 [( E% W此处使用的是 通过面的法向创建投影曲线,可以参考下!# k& H. P* ^0 Z( |8 |
5 O" l# w) B, K

0 P/ f. ~2 o0 I* H! S( ?3 T; d8 ^6 \0 ]3 U

# j. k# L) h# J0 U0 ]1 y% h! P$ R+ B; D; e, p$ S' G9 J
: m% b2 u  t, \/ U& x. [7 D' I
6 l- m/ M8 z: V% O

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

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

+ j% W7 N( q$ u7 O  }" J! W' a6 f, ~4 r8 x7 o
9 e% [, p8 a( R3 _0 v$ q/ k* L

  1. - c; e8 U  @! A9 H: l0 f+ Q0 m1 G, x
  2. int trimSteels::project_curves(vector<TaggedObject *>inputObjects,Plane *plane1)3 P- \) M" [/ y+ D
  3. {5 W/ f! p) T; H* x5 [
  4.         int errorCode = 0;( |) Y* P) k& U  U( |6 n- {
  5.         try
    ! b4 U  o1 b5 V$ d( J' _0 Y' y
  6.         {
    ! W2 X# n  X5 r
  7.                 // createProject curves
    . Q7 L. _7 a- w5 s  t/ H

  8. % L9 m( A; j4 j9 h/ K! ^5 U
  9.                 Features::Feature *nullFeatures_Feature(NULL);
      y" R+ X3 \: o0 Q! u7 j
  10. * P5 ^; D# P! F
  11.                 Features::ProjecTCurveBuilder *projectCurveBuilder1;
    $ ]* h' ?  W- B3 A, C8 p
  12. 6 H  @5 M( ?3 G7 K
  13.                 projectCurveBuilder1 = workPart->Features()->CreateProjectCurveBuilder(nullFeatures_Feature);+ W, }9 ?, p, v
  14. ! {. w0 z. A* o; U! |* M
  15.                 projectCurveBuilder1->SectionToProject()->SetDistanceTolerance(DISTANCETOLERANCE);2 u3 Q% o! L# ^+ D. R
  16.   ^; e0 p+ |7 ~/ O3 u- c5 P
  17.                 projectCurveBuilder1->SectionToProject()->SetChainingTolerance(CHAININGTOLERANCE);5 O0 p! @! G7 ?' X

  18. 6 m' x! U/ f! P6 G
  19.                 projectCurveBuilder1->SectionToProject()->SetAngleTolerance(ANGLETOLERANCE);* l# ~4 j; A& d; u
  20. + p7 q( P& M" Y& @- |& g
  21.                 projectCurveBuilder1->SectionToProject()->SetAllowedEntityTypes(Section::AllowTypesOnlyCurves);& w( E% G, T, J. c* t
  22. 4 q2 T& y% a; H) d/ o" b8 @/ p
  23.                 projectCurveBuilder1->CurveFitData()->SetTolerance(DISTANCETOLERANCE);
    ' F6 s) w/ @: F" H

  24. ( E" U% }$ r( A# ?8 w, x! i+ A- m
  25.                 projectCurveBuilder1->CurveFitData()->SetAngleTolerance(ANGLETOLERANCE);
    6 [# g1 l  ^$ ^* n- A' |" l/ x
  26. 9 K& }( E5 n5 C, u; |
  27.                 int size = (int)inputObjects.size();
    ) s+ N* c" s6 }* Y1 ^
  28.                 std::vector<IBaseCurve *> curves1;
    0 A, s1 L8 H8 m+ ]3 {9 _
  29.                 for (int ii = 0 ; ii < size; ++ii)( V4 B/ k6 g8 N! {
  30.                 {1 F0 a7 \6 d5 m& V8 U: t
  31.                         curves1.push_back(dynamic_cast<IBaseCurve*>(inputObjects[ii]));& a6 f) o) U! z& A# ?8 ~9 z
  32.                 }" Z$ @4 E* y8 p2 T! F( S

  33. ) n* D" G- k8 h8 ?, u! {
  34.                 NXOpen::CurveDumbRule *curveDumbRule1;6 P6 X# i$ N/ J7 d3 U, D5 X) s, B

  35. ! |# u1 k0 E  c, L# E: b
  36.                 curveDumbRule1 = workPart->ScRuleFactory()->CreateRuleBaseCurveDumb(curves1);- W% B8 i" ?$ ]! G) w
  37. , Q3 ]- `4 q: s
  38.                 projectCurveBuilder1->SectionToProject()->AllowSelfIntersection(true);* |1 q& y# g, O# B- w; r" n

  39. : e( k' g3 }, O) ^5 C" ^% {
  40.                 std::vector<SelectionIntentRule *> rules1(1);' ?* c7 A+ ^4 ^& }& y
  41.                 rules1[0] = curveDumbRule1;% r& ?/ F7 Y5 q& h! Z( |/ H
  42.                 NXObject *nullNXObject(NULL);
    3 ?* U9 j. |$ |, s2 {) K# s6 u
  43.                 Point3d helpPoint1(0, 0, 0);
    & j) ^* |6 v) [, a, t1 l9 r
  44.                 projectCurveBuilder1->SectionToProject()->AddToSection(rules1, nullNXObject, nullNXObject, nullNXObject, helpPoint1, Section::ModeCreate, false);$ ^* a3 O( b2 \; G8 _5 }4 y
  45. : [8 N7 Z+ j& r+ H2 a+ `1 r
  46.                 plane1->Evaluate();
    5 Q+ p5 z) i7 K* h; C

  47. " r& l5 \) a$ [/ U' M5 q
  48.                 projectCurveBuilder1->SetPlaneToProjectTo(plane1);
    ) p" S/ B8 I2 k7 d" ?. i/ W

  49. " H& R8 w& N( l7 v. X
  50.                 projectCurveBuilder1->SetGapOption(true);
      h2 r5 w1 r* W$ x8 `4 T

  51. 7 d2 l1 r  z9 m0 d* u, Y' t
  52.                 projectCurveBuilder1->CurveFitData()->SetCurveJoinMethod(GeometricUtilities::CurveFitData::JoinGeneral);9 l6 Q' P4 l. V! q5 m5 V

  53. , U9 [: D' e! e2 J
  54.                 NXObject *nXObject1;+ Q1 q4 N! x" J/ I2 H5 B1 V
  55.                 nXObject1 = projectCurveBuilder1->Commit();9 S5 f* u! \6 m: Y$ k1 @

  56. 4 V, S; L0 J: S4 s
  57.                 projectCurveBuilder1->SectionToProject()->CleanMappingData();5 B, `: T& [1 U& N: X
  58. $ T' Y+ w! n" W# e" \" d
  59.                 projectCurveBuilder1->Destroy();
    & [$ b, ?$ e- z2 I7 H' l
  60. * A5 E+ ~: d( T0 M$ M6 q
  61.         }
      u7 J, `" B- U6 R  ]& T/ i2 \# M0 f
  62.         catch(exception& ex)
    * k. i9 v! C4 t2 G# @  ?# W* ~
  63.         {' v7 y4 [2 N; q/ Q
  64.                 //---- Enter your exception handling code here -----+ U. ]6 e4 e1 z7 _. F3 C
  65.                 errorCode = 1;( I+ G% l9 w: F, B$ I: C
  66.                 trimSteels::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeError, ex.what());! u9 T) G* u# ~% n* }7 X! |
  67.         }
    3 {. N5 U1 T: P* p- ~" q9 o
  68. " }% L) ]8 I# Y+ q9 _+ J+ N$ b
  69.         return errorCode;! X1 r( w9 ]! l. ]" `+ W
  70. }
    ; Y) c' v. c& K
复制代码

2 `5 k# j, M( z7 ]% X- G& f. Q: w5 ]
+ x3 v& k1 m" [' f
& ^: n  P% d8 p2 E4 Q% y+ q
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了