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

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

  [复制链接]

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

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

PLM之家NX 楼主

2014-5-5 22:45:05

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

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

x
+ {, ~2 ^$ P3 f4 r# U3 V

3 r' A, q1 Z/ I9 ~0 f# O/ P) A
# ]5 d# u$ w0 |! C# n; |, ]UG NX二次开发源码分享: NX Open C++ 创建投影曲线 project curves; T: ~# C# ~2 ~1 D' W

8 u/ g, q: d; r4 t& z! x* Q此处使用的是 通过面的法向创建投影曲线,可以参考下!6 c9 l" R5 ^% |0 }/ x( b7 Y
" o( H2 h% O& p- t6 T2 W
* G7 `$ H$ A6 B9 {8 j( z

5 d: t0 B( b& Z8 x$ ^' L
- m, H2 z9 U1 e$ Q1 X0 T; I& i5 d( J3 }7 d

3 I2 g$ {$ c4 W9 a5 t1 e2 E# M, r8 e, ?7 y! T

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

 NX Open C++ 创建投影曲线 project curves
1 H; ]$ H8 `/ b. _. s4 s
7 i& |0 [; e0 J2 |9 ~

% W9 }, k& `( U5 w1 C" i

  1. ! v: c5 ^, \2 V, d0 P( `/ x
  2. int trimSteels::project_curves(vector<TaggedObject *>inputObjects,Plane *plane1)
    * W+ b: x4 B) d
  3. {3 P' E+ w0 f5 X
  4.         int errorCode = 0;
    : I) U  \' _' o1 S2 j' s/ N8 R
  5.         try+ O  M" V% n4 v8 }; U1 w
  6.         {
    - z7 B& r0 q0 f
  7.                 // createProject curves
    * G' X9 V! J& R+ q
  8. - Z) ^0 X1 E. q+ p
  9.                 Features::Feature *nullFeatures_Feature(NULL);
    ! o7 }. b, q7 f# W9 U
  10. " u7 F$ h  }  R& T4 _9 I
  11.                 Features::ProjecTCurveBuilder *projectCurveBuilder1;8 ]6 L3 f* Q/ J2 I# @

  12. + i7 O! h" A0 \
  13.                 projectCurveBuilder1 = workPart->Features()->CreateProjectCurveBuilder(nullFeatures_Feature);
    * @1 i' h& \# u- Z: k. u, k, X

  14. 5 [. H5 U' y' d9 g
  15.                 projectCurveBuilder1->SectionToProject()->SetDistanceTolerance(DISTANCETOLERANCE);+ v5 h$ y) k$ w8 G, c# p8 U# e4 s

  16. 3 p0 F9 U; S8 b( v0 H
  17.                 projectCurveBuilder1->SectionToProject()->SetChainingTolerance(CHAININGTOLERANCE);
    8 F% D: h/ f/ T  |: |9 h; y
  18. 0 T+ l$ ?# x5 q/ Z
  19.                 projectCurveBuilder1->SectionToProject()->SetAngleTolerance(ANGLETOLERANCE);
      F, f% O& e6 r- Y) v, @& |

  20. 6 n, _* C1 j" G6 H$ e5 _
  21.                 projectCurveBuilder1->SectionToProject()->SetAllowedEntityTypes(Section::AllowTypesOnlyCurves);! `$ H+ ], Q% r/ d/ R& i# |& F

  22. 2 _$ r. _5 x/ ?4 B
  23.                 projectCurveBuilder1->CurveFitData()->SetTolerance(DISTANCETOLERANCE);
    - e6 M; F2 K: r) N. b: M. S# ^

  24. 8 t3 w, u1 R6 b8 }
  25.                 projectCurveBuilder1->CurveFitData()->SetAngleTolerance(ANGLETOLERANCE);. I3 e0 I' P# a
  26. 0 M& \0 V( @- s1 P
  27.                 int size = (int)inputObjects.size();
    % o; X0 k7 O% n0 ]. n% H
  28.                 std::vector<IBaseCurve *> curves1;
    ! B; C) b2 Q: `0 T
  29.                 for (int ii = 0 ; ii < size; ++ii)2 o' \0 w6 c7 j* y6 {  H) K3 E7 M2 e
  30.                 {# v: N+ h) ~1 O) b) L9 r8 g
  31.                         curves1.push_back(dynamic_cast<IBaseCurve*>(inputObjects[ii]));7 U' B4 i9 y% O0 }1 G% v
  32.                 }
    3 _# [+ D0 k, r& u6 c3 Z, c
  33. ' T. I: _( L+ g4 w* G& K/ @0 }
  34.                 NXOpen::CurveDumbRule *curveDumbRule1;: x* r' Q0 O, [. a) N2 j; V/ H
  35. 5 A& t8 [) F& F% X( i7 R
  36.                 curveDumbRule1 = workPart->ScRuleFactory()->CreateRuleBaseCurveDumb(curves1);
    7 N8 m8 y2 H/ Y4 M$ M3 k

  37. 0 T+ u1 a" }6 k
  38.                 projectCurveBuilder1->SectionToProject()->AllowSelfIntersection(true);
    6 F5 G* }' w& L. Q: }+ s6 e( i" ^" P# `# C
  39. $ I/ U9 D9 m* ?: U; B
  40.                 std::vector<SelectionIntentRule *> rules1(1);
    5 {9 D+ s% ]* L
  41.                 rules1[0] = curveDumbRule1;
    $ f/ v. A, \7 E! m  h5 q
  42.                 NXObject *nullNXObject(NULL);
    9 j5 j# J* O$ f$ b
  43.                 Point3d helpPoint1(0, 0, 0);% }0 @3 K" D9 s6 F" i. I
  44.                 projectCurveBuilder1->SectionToProject()->AddToSection(rules1, nullNXObject, nullNXObject, nullNXObject, helpPoint1, Section::ModeCreate, false);
    ) ^+ E( p6 E% H, f6 K7 m0 {* b- x

  45. " k  s5 ]5 g) x* N* \) ^: F" @
  46.                 plane1->Evaluate();
    & t  J$ h) k) M
  47. ) A6 Q( C& F4 b: e# n6 X3 E
  48.                 projectCurveBuilder1->SetPlaneToProjectTo(plane1);
    0 ^/ V: N' V' U' A
  49. ( H0 X" n$ i9 l  J0 R
  50.                 projectCurveBuilder1->SetGapOption(true);
    1 Z. `, Z2 w1 D, B; c
  51. " C6 J5 r3 S% o+ h
  52.                 projectCurveBuilder1->CurveFitData()->SetCurveJoinMethod(GeometricUtilities::CurveFitData::JoinGeneral);
    1 n3 a7 A- V6 q* N. Q
  53. ) j' d$ G! k" R! Z6 X; s5 p2 w
  54.                 NXObject *nXObject1;
    ( r; G$ g! q  ~# U& W1 _! c1 R
  55.                 nXObject1 = projectCurveBuilder1->Commit();
    ! o. Q* C# M3 x7 |/ v# y

  56. + l- ?' j/ B8 u0 g- p
  57.                 projectCurveBuilder1->SectionToProject()->CleanMappingData();
    % F- X* ?' h4 ]" F

  58. 8 K; |5 s1 {1 }( e. [
  59.                 projectCurveBuilder1->Destroy();
    ' r0 L& }! u$ t5 {  m9 F
  60. 0 g6 H$ ]3 m3 y3 D; R
  61.         }  s: O+ \7 _2 z; j
  62.         catch(exception& ex)
    6 l( E& \, `( `8 [8 F
  63.         {
    - i* l$ o$ P( ]2 r+ ]
  64.                 //---- Enter your exception handling code here -----
    # {/ C/ N3 `- a1 [7 M0 z0 K1 v
  65.                 errorCode = 1;
    # V' X: o& x- ^+ B& T
  66.                 trimSteels::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeError, ex.what());
    - ]' Y: P: h* C' w0 s9 F
  67.         }: O6 A# n' [7 T) `& `5 M7 V
  68. 0 W% t' y  g$ e" }
  69.         return errorCode;! @+ W" G; H# \* g  ^
  70. }" `2 c1 J) P+ U/ V: W7 h8 q
复制代码

6 Q  _6 k3 K- V
3 Z$ w% E# \) i; h! F
7 S# P3 O: x; e% e  n) G( H! n
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了