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

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

  [复制链接]

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

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

PLM之家NX 楼主

2014-5-5 22:45:05

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

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

x

: R% D1 _, z; J+ ^0 c8 B$ C! r+ m" h" w: m, `+ k, [

7 t  p+ \3 a2 O+ t( _UG NX二次开发源码分享: NX Open C++ 创建投影曲线 project curves* c8 h! Y7 ^. }/ ?% I2 c4 T" k) m
3 v& Y) C8 U5 k3 K$ s) C
此处使用的是 通过面的法向创建投影曲线,可以参考下!
7 Q9 S: T, [. Y$ h, H5 n; ~( |
; `1 {% _+ u2 T7 T9 B$ ]! A: I9 g# f+ I) Y6 A: ^

" u6 z) q# B  B8 Y- w1 R7 x
. m) W4 d9 ?( G' s) x1 x7 [5 `( j8 {1 P" A: P: {

/ v1 y- ~( a7 z/ e* ^4 ?0 z# _# d9 D3 I& w$ |

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

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

5 v4 V1 _( l' d- Y$ q3 f
0 L) Q0 d- L0 K8 c& Q& m' Q1 }/ f& A# M
  1. ' y( G  |4 T% e  V9 y
  2. int trimSteels::project_curves(vector<TaggedObject *>inputObjects,Plane *plane1)
    ' t  @1 s4 v  S/ R
  3. {
    8 E. M, {2 C) q; l
  4.         int errorCode = 0;! T9 Y7 Q: Y2 {3 m: a" ?
  5.         try# O9 T; b4 k- X' L  H
  6.         {
    . h& Z9 ]0 c" E* d) T
  7.                 // createProject curves' {/ \8 O: ~( f5 U. r
  8. 6 k3 T: h. s/ X( k% }5 H  l( ?3 ^
  9.                 Features::Feature *nullFeatures_Feature(NULL);3 j* W, j# i# y) P

  10. ' n* z. a* S4 e
  11.                 Features::ProjecTCurveBuilder *projectCurveBuilder1;
    5 P( i/ a7 j, F

  12. 8 l+ i6 j7 v& a( W$ y& \
  13.                 projectCurveBuilder1 = workPart->Features()->CreateProjectCurveBuilder(nullFeatures_Feature);
    6 ^0 C3 U- O6 y

  14. 8 f0 m) t) R5 {, ~; Q) J8 j6 |3 J
  15.                 projectCurveBuilder1->SectionToProject()->SetDistanceTolerance(DISTANCETOLERANCE);" |4 N# `/ Z% T: A
  16. ! H  z* U) K4 y1 X' i" z
  17.                 projectCurveBuilder1->SectionToProject()->SetChainingTolerance(CHAININGTOLERANCE);
    % S: e  ?5 {+ O) Y9 u3 S; G5 T
  18.   n  G' y: }, k6 j4 d! V7 M; s- a% Z
  19.                 projectCurveBuilder1->SectionToProject()->SetAngleTolerance(ANGLETOLERANCE);
    ; ^5 K& O0 q, k5 i3 y! d
  20. ) }% D8 ]( W5 P( b5 o: D! |% N+ m. @
  21.                 projectCurveBuilder1->SectionToProject()->SetAllowedEntityTypes(Section::AllowTypesOnlyCurves);# G4 U5 g- p$ [% g# x# ]- ?

  22. ( i1 K- R/ e0 `( @+ n
  23.                 projectCurveBuilder1->CurveFitData()->SetTolerance(DISTANCETOLERANCE);
    3 g5 z9 s. n4 R2 m  P
  24. ' K- B$ i2 }5 v' i5 D' x2 L: {
  25.                 projectCurveBuilder1->CurveFitData()->SetAngleTolerance(ANGLETOLERANCE);% u" q0 a) e/ W5 \/ q. |' U
  26. 3 c/ T' ^/ C1 U8 m: V+ c  {
  27.                 int size = (int)inputObjects.size();/ f# u8 C, `8 `- @7 K
  28.                 std::vector<IBaseCurve *> curves1;
    1 A9 |  L8 u# h4 X' M
  29.                 for (int ii = 0 ; ii < size; ++ii)
    . k2 t. S- n) ~4 k; ]8 `
  30.                 {- C: k& M; y- {! _3 F
  31.                         curves1.push_back(dynamic_cast<IBaseCurve*>(inputObjects[ii]));  n# c6 s* N( x* Z. b, v
  32.                 }
    ! |" v2 f$ f' s5 j" T( I1 ~

  33. % d% T- `* P& e5 A
  34.                 NXOpen::CurveDumbRule *curveDumbRule1;; V. B4 d, D) B, D( H- a
  35. $ z" {+ N4 L' U5 ^5 |9 u7 w
  36.                 curveDumbRule1 = workPart->ScRuleFactory()->CreateRuleBaseCurveDumb(curves1);* ~, k+ j4 ]+ G4 S: W( w5 N
  37. $ ~2 q6 y% d# c  E
  38.                 projectCurveBuilder1->SectionToProject()->AllowSelfIntersection(true);# y1 V& M3 Y' |7 {* m

  39. 1 M5 A& X4 L: F6 b
  40.                 std::vector<SelectionIntentRule *> rules1(1);6 E1 g3 v8 _/ B; M: a1 g
  41.                 rules1[0] = curveDumbRule1;( P0 N1 H- D# V  q" H8 ~
  42.                 NXObject *nullNXObject(NULL);3 w+ n+ u3 @  @1 j; n
  43.                 Point3d helpPoint1(0, 0, 0);; j* r9 ?, m% g% \+ j/ `5 \
  44.                 projectCurveBuilder1->SectionToProject()->AddToSection(rules1, nullNXObject, nullNXObject, nullNXObject, helpPoint1, Section::ModeCreate, false);. @9 u1 q+ m* S/ }* R
  45. : s2 d7 O1 ?! V3 U# s3 d6 M% y
  46.                 plane1->Evaluate();
    ( X- @0 y1 L5 \/ l7 {% S, M4 C; d- s- z+ m

  47. 9 b  i+ O) I0 d" W3 j
  48.                 projectCurveBuilder1->SetPlaneToProjectTo(plane1);
    % ?! {, h! I4 l! x
  49. + I1 B  X$ N* a9 N7 W
  50.                 projectCurveBuilder1->SetGapOption(true);/ q( c4 G5 b4 |1 `' y9 b1 I' Y4 u

  51. 5 D  x: [& M+ }  @  V
  52.                 projectCurveBuilder1->CurveFitData()->SetCurveJoinMethod(GeometricUtilities::CurveFitData::JoinGeneral);+ `9 J5 x! f8 |

  53. 0 \* X; t2 w) |8 p3 B
  54.                 NXObject *nXObject1;
    5 ]1 V* ~( d2 i7 K# Z
  55.                 nXObject1 = projectCurveBuilder1->Commit();
    . S5 ]- T- W: h# n: E" C$ u

  56. $ E3 ?* Y: j7 @5 S0 D
  57.                 projectCurveBuilder1->SectionToProject()->CleanMappingData();
    $ y; J% d) e6 ]+ j- H
  58. / k, j# i) p* w* b) S+ n$ d; J; Y
  59.                 projectCurveBuilder1->Destroy();2 e% @" P7 D8 P' ^- X( P) k
  60. + Z4 F& o2 l" w3 R' v! o. r8 u
  61.         }
    $ W, ?" S: {" Q; e; O, T9 r
  62.         catch(exception& ex)6 ]3 L9 U9 @: W, L
  63.         {
    & _7 m1 O# Q" J$ x, P& I
  64.                 //---- Enter your exception handling code here -----
    ) ^+ ^5 H  e/ g9 S! R
  65.                 errorCode = 1;, B1 }# I" A# ^0 @; f* R' K& b
  66.                 trimSteels::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeError, ex.what());
    ! ]# M2 c, d8 S2 d
  67.         }
      t; M7 J& D, X, G$ Z9 m

  68. $ M- Y: J' S# ?# r
  69.         return errorCode;/ Z( ?6 I% g! N$ m8 q' _2 Q
  70. }
    - @' J: L' J1 }, t1 Q, }
复制代码
2 g! y, A  W/ w9 Y2 s

  s4 L. W+ u7 b* f( ^4 I) Z
0 t% D* y9 `% m4 J
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了