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

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

  [复制链接]

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

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

PLM之家NX 楼主

2014-5-5 22:45:05

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

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

x
; C4 u" Q1 E+ H" J
( h7 ]: D! `8 S0 `, ^

# n4 T! s0 ~; wUG NX二次开发源码分享: NX Open C++ 创建投影曲线 project curves) _' Y( N% T4 n$ B
# W6 \$ ^8 s; t' m. e. ]+ s  y7 C. ~' @
此处使用的是 通过面的法向创建投影曲线,可以参考下!
3 H4 |  y$ |) h) Z7 h' b: O# N$ g4 p
* r* d- @$ }9 H# ?. k( Q! H' L4 L% g- D5 z" b9 s* i1 B6 d/ H
( S' ?0 A* x& w7 z6 K4 C" i

" U6 x+ i; }& o7 P' w' `  J* c  X0 ]; U: N
# y  {5 t2 C8 c* \1 H6 w+ b8 K
- h4 N  ]& o$ p% H( W

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

 NX Open C++ 创建投影曲线 project curves
4 t" R; h7 p% j8 {2 d8 G
1 h3 P4 s+ ]! s+ N
: o# d) t, A2 M' Z% u8 ]9 J5 z! ~
  1. ' M7 }' g" G3 [  L0 y9 r$ P
  2. int trimSteels::project_curves(vector<TaggedObject *>inputObjects,Plane *plane1)7 N9 q# v8 h" Q4 L# M" }/ K
  3. {
    , D4 ]; R0 `$ x% j9 U( v
  4.         int errorCode = 0;2 z4 {# L2 n0 m7 K
  5.         try: m# P0 E+ t& [1 h! b/ b
  6.         {, \/ S8 O  J. J' N$ s2 I
  7.                 // createProject curves
    / s2 ]: |8 i4 b3 X+ ?& J
  8. 8 Y6 ?% r7 x0 m7 j6 U3 F5 M
  9.                 Features::Feature *nullFeatures_Feature(NULL);$ M5 s" T: [7 Z0 A7 w7 T% @

  10. 2 X4 ]( v3 }% v) K6 J$ z" V0 t
  11.                 Features::ProjecTCurveBuilder *projectCurveBuilder1;
    # T7 n) g% w/ T2 Q' I  A" U  \
  12. ) {# U. [+ a( l0 x
  13.                 projectCurveBuilder1 = workPart->Features()->CreateProjectCurveBuilder(nullFeatures_Feature);
    1 l- h' F& Y7 h
  14. : D6 @  ~8 q* R/ t1 h2 s; G$ q5 z
  15.                 projectCurveBuilder1->SectionToProject()->SetDistanceTolerance(DISTANCETOLERANCE);
    - g+ _3 I4 u: U" b: s/ V

  16. ! j) y  ]) A5 D* D  x4 Z. l
  17.                 projectCurveBuilder1->SectionToProject()->SetChainingTolerance(CHAININGTOLERANCE);! A2 f2 L, B8 @

  18. - k. H6 s" \/ }' ]8 x
  19.                 projectCurveBuilder1->SectionToProject()->SetAngleTolerance(ANGLETOLERANCE);
    2 {5 d( F! c' k* i
  20. 3 c4 X# }; Z. J1 ?
  21.                 projectCurveBuilder1->SectionToProject()->SetAllowedEntityTypes(Section::AllowTypesOnlyCurves);
    ! o& |' ?+ M- h! U8 z0 @- P: x
  22. 6 J! E) t& T3 l: ?0 l* q" v+ Z7 b. K
  23.                 projectCurveBuilder1->CurveFitData()->SetTolerance(DISTANCETOLERANCE);
    3 _2 s  Z5 i9 `  f3 Y% L
  24. 3 r1 L  t$ \4 G) u
  25.                 projectCurveBuilder1->CurveFitData()->SetAngleTolerance(ANGLETOLERANCE);/ F( e  s: `" j9 n
  26. 2 M4 J$ z0 P$ A5 _( }  |
  27.                 int size = (int)inputObjects.size();
    3 p( S3 I& J# \" A& P! |
  28.                 std::vector<IBaseCurve *> curves1;
    8 p! J0 ?- E8 x3 D( M
  29.                 for (int ii = 0 ; ii < size; ++ii)
    $ b, ~7 E' b% Y
  30.                 {
    $ i! j' F2 {* U
  31.                         curves1.push_back(dynamic_cast<IBaseCurve*>(inputObjects[ii]));& X, b8 e4 Y+ P8 s
  32.                 }+ A+ H. e* O  A
  33. % M% _/ J5 [- p+ t% k
  34.                 NXOpen::CurveDumbRule *curveDumbRule1;
    ) N  u- f" A. r# D) I1 m4 Y5 I8 `
  35. # m; ]/ k) j# O8 ?
  36.                 curveDumbRule1 = workPart->ScRuleFactory()->CreateRuleBaseCurveDumb(curves1);- Y$ e: g: E9 L1 L7 b) s
  37. ( ]0 X* [6 z4 {! M
  38.                 projectCurveBuilder1->SectionToProject()->AllowSelfIntersection(true);
    9 D3 w0 S4 n" o5 L: g( i

  39. % y. v9 c4 ^2 p9 j9 O" d) `; F+ C
  40.                 std::vector<SelectionIntentRule *> rules1(1);$ y9 ]. j" z7 X( n
  41.                 rules1[0] = curveDumbRule1;: z; W5 ~: P/ p) b
  42.                 NXObject *nullNXObject(NULL);
    ) _0 v1 W! M3 \7 O& B" t! f
  43.                 Point3d helpPoint1(0, 0, 0);, ^7 M/ k, ~) O, f. G# d5 o
  44.                 projectCurveBuilder1->SectionToProject()->AddToSection(rules1, nullNXObject, nullNXObject, nullNXObject, helpPoint1, Section::ModeCreate, false);
    ( x/ R) E4 Y; d& J4 s" V' `" I
  45. : g) k5 R2 S( ]* f% O
  46.                 plane1->Evaluate();9 c/ ?' n( H/ E+ N* ^
  47. $ L( w; `$ o% F! t
  48.                 projectCurveBuilder1->SetPlaneToProjectTo(plane1);, u" y. H8 P) \5 q

  49. ) c9 _: D; t) m2 T& o
  50.                 projectCurveBuilder1->SetGapOption(true);% t8 e  }1 I% N0 @

  51. " M$ p( S, j, `/ ^( q/ F) x( z
  52.                 projectCurveBuilder1->CurveFitData()->SetCurveJoinMethod(GeometricUtilities::CurveFitData::JoinGeneral);
    . f* P5 s" i! L& j1 O

  53. ; p8 p, ^9 v" H. `$ k% S5 @
  54.                 NXObject *nXObject1;
    $ ^" I5 i9 E9 V* \
  55.                 nXObject1 = projectCurveBuilder1->Commit();1 W' \5 o% N5 B" H0 r

  56. - ^7 c/ W2 @8 C/ f& r% ?
  57.                 projectCurveBuilder1->SectionToProject()->CleanMappingData();
    9 t; S. @5 R! c. g

  58. * {5 L( a9 f4 S
  59.                 projectCurveBuilder1->Destroy();
    " I% f2 V% G& `. a9 I
  60. . L# h! a3 b' o3 L0 }7 e
  61.         }
    0 F2 \4 A* O, Q4 r3 n4 C' f
  62.         catch(exception& ex)
    " c( d' `( H; Z& o
  63.         {
    2 i: y* J' y* c9 m% m% s# r
  64.                 //---- Enter your exception handling code here -----% e7 s% l1 S( Z; A
  65.                 errorCode = 1;! l  E4 k5 O/ [# b6 A
  66.                 trimSteels::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeError, ex.what());9 a  f) [' _, Y. e
  67.         }0 B0 ]2 I8 E. j" I
  68. 8 k9 n" m# l" C! T/ x7 S' s
  69.         return errorCode;
    ( p: `: a' Z  I. B7 d
  70. }
    ; |0 \( A+ \& O  s; F
复制代码
: [/ Y/ b( z* x# F0 o8 R

; k# z2 J& I4 x, _6 v5 n! ^0 _- g* M( Q# Z$ }1 B2 h
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了