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

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

  [复制链接]

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

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

PLM之家NX 楼主

2014-5-5 22:45:05

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

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

x
& {1 `* K' ~4 V& T, d

( n) X0 m0 B* S9 b& v4 H; y4 _' x% i; |% [7 e
UG NX二次开发源码分享: NX Open C++ 创建投影曲线 project curves2 ^6 f$ C% ~% x3 J' N, b# f6 D
5 ?, Y$ u5 j0 n( y) e
此处使用的是 通过面的法向创建投影曲线,可以参考下!/ p  B4 n# }" _# }( B3 k

( D( ~8 z8 X# O9 |  M2 A
1 ^$ X. u( u- c/ Z3 b
) {- ^4 N% q  v! E
* U7 s* ?. B. r
6 g' G& I( ^4 Q3 v; I; m, |9 X& x; a; f8 E; o  r3 H7 J! h

, [3 z6 n: B# `4 C; Y* v3 l

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

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

4 k1 u5 m( s0 k1 x( J# g
3 H2 X, S5 q$ q$ F! s7 _9 S6 |2 z/ ^  v$ d1 o: {2 j

  1. $ s8 W3 ]# n% g3 |
  2. int trimSteels::project_curves(vector<TaggedObject *>inputObjects,Plane *plane1)* ?8 s$ {/ H% X% W
  3. {% w5 r+ Y4 r3 [  b9 z% q0 F
  4.         int errorCode = 0;, j+ v& r/ _+ p6 C" |0 C. m# O" _
  5.         try! v- f' Q6 y1 J( h* N
  6.         {& B  w! c' |+ P$ T  a
  7.                 // createProject curves& ^& l( n) r" T
  8. - R# ]1 i# Q# F% U8 e
  9.                 Features::Feature *nullFeatures_Feature(NULL);! h+ s  d# Y  i$ ~( v
  10. , T  p& t0 m2 p9 A
  11.                 Features::ProjecTCurveBuilder *projectCurveBuilder1;
    ! P5 v* G/ @2 D, U

  12. 7 _9 q1 R: X4 O# H+ ?4 i
  13.                 projectCurveBuilder1 = workPart->Features()->CreateProjectCurveBuilder(nullFeatures_Feature);7 D) g2 \, \# |: t0 X2 w

  14. ( x: [/ h( n8 M( b1 l  f+ b
  15.                 projectCurveBuilder1->SectionToProject()->SetDistanceTolerance(DISTANCETOLERANCE);% D: f( R5 `0 U6 p2 m  ^

  16. ) B9 w# b( a3 E6 K
  17.                 projectCurveBuilder1->SectionToProject()->SetChainingTolerance(CHAININGTOLERANCE);
    ' C/ l. H0 m$ E% H7 o/ S

  18. . L) y  o9 O# H) a5 z5 y
  19.                 projectCurveBuilder1->SectionToProject()->SetAngleTolerance(ANGLETOLERANCE);
    5 {5 V% D& K0 y' u, Q7 _- ?
  20. ! q* c5 k2 C8 _" s4 v. N
  21.                 projectCurveBuilder1->SectionToProject()->SetAllowedEntityTypes(Section::AllowTypesOnlyCurves);, x+ f# a4 L9 d7 O, A) k
  22. * R% A3 o( U& ^' P, V4 P$ z' n
  23.                 projectCurveBuilder1->CurveFitData()->SetTolerance(DISTANCETOLERANCE);$ \8 E- x9 i- w  e/ j3 U, Y
  24. ; E) ^+ n8 j* M8 U* _( O/ x5 J
  25.                 projectCurveBuilder1->CurveFitData()->SetAngleTolerance(ANGLETOLERANCE);9 R" x$ c! f, A' q1 u2 x, `$ t; [

  26.   F8 h# a% ]; i: X
  27.                 int size = (int)inputObjects.size();
    3 H6 d' o) v6 o
  28.                 std::vector<IBaseCurve *> curves1;3 ~9 H6 {! a  O1 u* ~( g/ K
  29.                 for (int ii = 0 ; ii < size; ++ii)
    ; D$ W3 d0 e/ d
  30.                 {
    ; w3 j* w1 B* A7 S" p9 j2 [, k1 c
  31.                         curves1.push_back(dynamic_cast<IBaseCurve*>(inputObjects[ii]));
    6 E. x$ F" O; L5 U4 z
  32.                 }$ @; @0 }2 y; g' K6 T( ?
  33. * g# Q2 g% v6 C. m# r( L! T
  34.                 NXOpen::CurveDumbRule *curveDumbRule1;
    5 ~% h! P) J. V  V" F% J

  35. ' M. I+ l) p  w3 K# O; B
  36.                 curveDumbRule1 = workPart->ScRuleFactory()->CreateRuleBaseCurveDumb(curves1);
    9 [* l& w% m$ x, k  g9 S9 a8 z+ A
  37. . P& N3 ^2 _4 a5 ]* B8 a; I
  38.                 projectCurveBuilder1->SectionToProject()->AllowSelfIntersection(true);
    : f% p* g* E1 g4 F' {  X( {; n
  39. 2 Q5 h* q% u. v% B
  40.                 std::vector<SelectionIntentRule *> rules1(1);
    " o  O- J6 @' X* o1 f6 e4 l
  41.                 rules1[0] = curveDumbRule1;
    6 u- r8 V' p9 \. K% i% n9 ]# u
  42.                 NXObject *nullNXObject(NULL);
    2 E' D" j+ y5 x0 ]
  43.                 Point3d helpPoint1(0, 0, 0);5 ?- {" P6 S0 c; v7 }  P" I
  44.                 projectCurveBuilder1->SectionToProject()->AddToSection(rules1, nullNXObject, nullNXObject, nullNXObject, helpPoint1, Section::ModeCreate, false);
    " m7 F* R  b" G$ _. q- |' l

  45. : q9 Q( Q1 {' u: `1 B8 X4 g
  46.                 plane1->Evaluate();& n' ~! J+ G4 Y$ D: Q+ t& A- f

  47. 7 T0 i0 Q  G" u! G; t6 u1 N; V: A
  48.                 projectCurveBuilder1->SetPlaneToProjectTo(plane1);/ n& H& P% N$ D# F
  49. 7 u1 I3 s+ V8 f: a9 ], @
  50.                 projectCurveBuilder1->SetGapOption(true);+ C! Q  C! P; g) W0 Z
  51. 9 {2 [- W, s& g7 J& {
  52.                 projectCurveBuilder1->CurveFitData()->SetCurveJoinMethod(GeometricUtilities::CurveFitData::JoinGeneral);
    / ^8 L0 N* M' M8 G; y* d1 t4 Q: ?

  53. 1 j: s" Y0 V5 c% o$ ^
  54.                 NXObject *nXObject1;
    9 O  G4 B5 u$ W& z3 ~  x4 L6 z! v
  55.                 nXObject1 = projectCurveBuilder1->Commit();( |3 M6 `( l% m  e+ l

  56. + Y, k: Y) Q& e- l# |; C* F* G5 }3 w
  57.                 projectCurveBuilder1->SectionToProject()->CleanMappingData();* z3 B; z7 s8 `" Y
  58. ) Q9 y0 [' S7 V% g0 J
  59.                 projectCurveBuilder1->Destroy();6 f7 k+ U, B8 y5 z
  60. : J$ l& f2 |& [! k
  61.         }6 K) S( y8 }( z. G. u7 r. n! B
  62.         catch(exception& ex)
    * Y! j+ ?( v+ o4 [: e
  63.         {7 u# E5 r; M/ o) V5 q/ V$ j; W4 }5 }
  64.                 //---- Enter your exception handling code here -----
    ! d+ q; P/ l" O3 V; Q
  65.                 errorCode = 1;
    $ R6 j& P1 g1 a3 R
  66.                 trimSteels::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeError, ex.what());
    9 L/ n4 x1 ^1 I5 \5 X
  67.         }* D; x( f& M( s2 Z! O" C3 _7 Y
  68. 6 b; M% p! w/ n2 a2 y6 r4 V
  69.         return errorCode;
    - j: Y2 _% I) [! x8 F
  70. }. A% f. Z* Y% E' c- N+ w6 p: }
复制代码
/ ?( H, ?! @9 s; N* x2 q
- i. S% d7 H8 n( @) }3 t- B

* E' [0 Z+ f4 b+ K
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了