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

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

  [复制链接]

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

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

PLM之家NX 楼主

2014-5-5 22:45:05

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

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

x
, S. T% Z! N) z  K9 E1 R4 x
& R5 t) @+ Z. _7 r' L

& [( u9 e5 |; y; q' v$ BUG NX二次开发源码分享: NX Open C++ 创建投影曲线 project curves4 W) M$ H0 P& V) W4 N% E. b" L+ |4 d

, M- l0 m$ c) h8 R. C, i此处使用的是 通过面的法向创建投影曲线,可以参考下!" C; ~% [" j4 j0 R
- ?4 _3 X0 t- f6 e, V$ o
6 `( w$ u  g7 k0 D3 U( ~' M
2 Z, i& R2 z1 r) C) N8 A
7 T5 {8 T$ [7 o- @
1 D, E" \( i: L- O0 @
8 \' k0 u  G; u+ N' s- U1 u

+ L. u2 @/ P) l4 {; Q9 i

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

 NX Open C++ 创建投影曲线 project curves
# R+ D$ _2 h0 F: _* {/ U  _- l

" b- I' d9 D5 ?  [% _
- G" O) x8 Q  f* l8 s
  1. " I& I; z/ {1 I% ^3 C
  2. int trimSteels::project_curves(vector<TaggedObject *>inputObjects,Plane *plane1)
    7 ~% D. E. c  o" }2 o( x
  3. {/ H4 v% ?1 u% l% `, f
  4.         int errorCode = 0;
    ; U  u) j+ o# G. K$ E0 v
  5.         try
      y) e) h9 d- q% k1 `# L/ g2 U
  6.         {: @, w# j. J3 R. Q
  7.                 // createProject curves
    % e6 N. Y8 F/ {) i' v, b
  8. 1 X8 ?" |# C# R' E  H
  9.                 Features::Feature *nullFeatures_Feature(NULL);
    # }7 y: h* V- v
  10. . F8 G0 \% }7 \) d/ M" c
  11.                 Features::ProjecTCurveBuilder *projectCurveBuilder1;
    ; B, b. S& B( H% X8 B; X2 Q
  12. & t- U4 b" r  [" ?  I
  13.                 projectCurveBuilder1 = workPart->Features()->CreateProjectCurveBuilder(nullFeatures_Feature);
    6 L8 \+ J9 a# B8 |# Z5 ]

  14. + W# D. j0 ~' f$ y5 |8 j
  15.                 projectCurveBuilder1->SectionToProject()->SetDistanceTolerance(DISTANCETOLERANCE);
    * P/ `) s1 A' _3 R, ^% c4 j) s

  16. + b7 [2 r7 a' J4 E' X
  17.                 projectCurveBuilder1->SectionToProject()->SetChainingTolerance(CHAININGTOLERANCE);, U' w9 g8 d* M$ f# {) G

  18. ) e3 n6 n4 x3 q* W) B. M; T9 c
  19.                 projectCurveBuilder1->SectionToProject()->SetAngleTolerance(ANGLETOLERANCE);  B) z, V3 O+ s- B' f2 ~' Y
  20. " W* b9 k5 B: @9 W! Q
  21.                 projectCurveBuilder1->SectionToProject()->SetAllowedEntityTypes(Section::AllowTypesOnlyCurves);
    $ z& F1 |3 ^5 c
  22. 1 h( n% A8 |( ~& K
  23.                 projectCurveBuilder1->CurveFitData()->SetTolerance(DISTANCETOLERANCE);5 {# M( K; z0 D; V& p) \6 H

  24. 7 z" E; H, y# C# x9 ?3 T
  25.                 projectCurveBuilder1->CurveFitData()->SetAngleTolerance(ANGLETOLERANCE);  D1 k3 l- ]5 @1 J3 U$ E
  26. / n- U% T+ ~* z
  27.                 int size = (int)inputObjects.size();$ R% F7 ~( D5 O2 n
  28.                 std::vector<IBaseCurve *> curves1;
    . C0 x  m! t% F' n% }+ J7 L; l$ O
  29.                 for (int ii = 0 ; ii < size; ++ii)3 i9 {# Q9 D! \- `3 z4 y* A) ~
  30.                 {
    ; ~5 x4 W) Q. Z: M
  31.                         curves1.push_back(dynamic_cast<IBaseCurve*>(inputObjects[ii]));
    9 g" P  D2 D0 T; O; M
  32.                 }/ J1 |9 N( c6 |. w8 \3 ~2 `" ^
  33. + ]' D8 C) [! v9 U+ N( T8 x/ L1 v4 n
  34.                 NXOpen::CurveDumbRule *curveDumbRule1;
    + P  s* A8 D; q; ?( [8 H" l  P
  35. & j. E. F, O$ j4 R
  36.                 curveDumbRule1 = workPart->ScRuleFactory()->CreateRuleBaseCurveDumb(curves1);$ @* H- j; X: ~; F5 M

  37. ! ~; B8 Q8 K* T6 s1 a- N* J' P. B% T
  38.                 projectCurveBuilder1->SectionToProject()->AllowSelfIntersection(true);
    1 R9 e$ K! u+ w$ J

  39. 9 l4 D# M3 T& h
  40.                 std::vector<SelectionIntentRule *> rules1(1);
    $ [, {' R' Q" u% c6 o$ N
  41.                 rules1[0] = curveDumbRule1;4 W4 O9 P5 ?% J- c: m& M! F
  42.                 NXObject *nullNXObject(NULL);; r' f8 g6 G5 p- r) i6 L( c
  43.                 Point3d helpPoint1(0, 0, 0);; c1 p! k* C7 _7 L
  44.                 projectCurveBuilder1->SectionToProject()->AddToSection(rules1, nullNXObject, nullNXObject, nullNXObject, helpPoint1, Section::ModeCreate, false);
    : W$ X, K" U/ h% U# d5 N
  45. , }, n, O* Q" x9 n
  46.                 plane1->Evaluate();, i& x# F: E$ z2 C' T
  47. : g" D- V4 j' Y! N1 _
  48.                 projectCurveBuilder1->SetPlaneToProjectTo(plane1);9 E) R! q0 a( g

  49. 9 _* i! ~+ j" f: D( e$ F7 M
  50.                 projectCurveBuilder1->SetGapOption(true);; q; i- V. Q; O: I$ S9 a

  51. . t- w. |) W3 N8 i6 B: h
  52.                 projectCurveBuilder1->CurveFitData()->SetCurveJoinMethod(GeometricUtilities::CurveFitData::JoinGeneral);7 {3 {/ A( K- b2 M/ f3 `
  53. / p  z( ]! z/ \" ~1 L, e
  54.                 NXObject *nXObject1;
    : `3 n6 r4 k+ D4 w9 M
  55.                 nXObject1 = projectCurveBuilder1->Commit();
    3 l% C! j  x9 G; X. T, v0 Q# R% q7 ]$ d
  56. * E/ D7 ~$ Z: ?' f! r) X
  57.                 projectCurveBuilder1->SectionToProject()->CleanMappingData();
    " ?9 j$ |/ S7 f# N# {9 J* V
  58. # v" x  P; ^! J8 G# M0 F
  59.                 projectCurveBuilder1->Destroy();: R3 S% D$ d$ p6 ]
  60. % M. j4 l1 w2 H& Q2 h" s" O
  61.         }: z. l# M9 K2 l4 @' j
  62.         catch(exception& ex)
    * K1 A: y+ e0 n: v
  63.         {
    , ~  @) q  R  W
  64.                 //---- Enter your exception handling code here -----2 J% S2 f9 J8 B$ A# A6 e- \8 j1 S
  65.                 errorCode = 1;6 X( E. ?* J( ]$ m  E
  66.                 trimSteels::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeError, ex.what());9 @, p* M4 l7 }" F+ ?: H
  67.         }
      U2 T, v5 q( ^
  68. 9 K; @: W7 t1 N$ J7 Q* p
  69.         return errorCode;
    . _+ x. \) {# ], Z4 g* @
  70. }
    - D3 r; [% |$ ^# y, m
复制代码

3 B) H$ h* S' ^% M% S# L% [# m% `$ v) f2 W( V6 Y1 W% t" Y$ f
6 a3 A8 v9 l( A6 [0 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二次开发专题模块培训报名开始啦

    我知道了