PLM之家PLMHome-工业软件践行者

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

  [复制链接]

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

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

PLM之家NX 楼主

2014-5-5 22:45:05

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

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

x

2 m+ |& Q( ^: C# ^) O% u) q( K1 u6 j0 N) p" |1 t( n6 L

" t6 M$ p  i4 l  ?UG NX二次开发源码分享: NX Open C++ 创建投影曲线 project curves) l- l. i, ]: B& L* S: c# c3 \4 Q
0 G# g$ [; i4 A% N5 }8 @
此处使用的是 通过面的法向创建投影曲线,可以参考下!
" U" w7 ^* S* |) L7 ?7 }6 s& c+ n& C6 V2 ~3 T6 g

/ t" |' q; P& c( n3 Q; k; x% n% M2 p1 e/ w0 M

9 N, o# O$ ^: r* K  o$ m$ d+ e0 P4 h5 A& K( i0 W; w! p/ l/ _5 {
2 ^/ d" B$ t0 R7 c9 r5 C: \) J

0 x  X) A, m5 o

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

 NX Open C++ 创建投影曲线 project curves
0 E2 G( n" _1 I1 q2 c+ M0 g. Q  Y7 h
4 N/ o# ^8 {8 c, v" O% o. F2 `

' {; @( t/ f# Z( N8 d1 p
  1. 4 V/ i/ [1 w% G2 q9 n1 J
  2. int trimSteels::project_curves(vector<TaggedObject *>inputObjects,Plane *plane1)
    : W1 T# v1 u( d5 ?: q
  3. {
    1 e/ w5 d( ]8 G/ A  D; b3 q
  4.         int errorCode = 0;
    5 ?, N5 {/ F0 ]; M$ K% E& O( T
  5.         try7 [8 l& Q1 @% j/ I1 C
  6.         {
    ' \2 y& K2 `6 q  U
  7.                 // createProject curves+ x8 Z/ t' S- B# C, p

  8. 7 h3 u3 [, A% J7 a1 u2 R% b
  9.                 Features::Feature *nullFeatures_Feature(NULL);3 [" |6 l( n4 D5 _' g
  10. 4 Y8 |6 Z6 T9 s/ v6 Z3 K/ X
  11.                 Features::ProjecTCurveBuilder *projectCurveBuilder1;
    ) v& D9 o0 Q" D" I

  12. 5 b) z+ K$ T; q" ^
  13.                 projectCurveBuilder1 = workPart->Features()->CreateProjectCurveBuilder(nullFeatures_Feature);
    ; R( g, O6 m# g9 J
  14. * q4 l: Y$ a7 Q# G- E
  15.                 projectCurveBuilder1->SectionToProject()->SetDistanceTolerance(DISTANCETOLERANCE);
    , ?% X$ v2 r, {0 _, ]8 @
  16. 6 z. [1 P+ Z4 U
  17.                 projectCurveBuilder1->SectionToProject()->SetChainingTolerance(CHAININGTOLERANCE);5 L5 z; c5 U& R8 ~. u* B7 J
  18. 9 T5 B; \" C1 W& C
  19.                 projectCurveBuilder1->SectionToProject()->SetAngleTolerance(ANGLETOLERANCE);
    $ @7 K  y3 Y$ V* Z  P

  20. - G$ q8 {6 q( U& w+ U) s) b. }% C
  21.                 projectCurveBuilder1->SectionToProject()->SetAllowedEntityTypes(Section::AllowTypesOnlyCurves);8 h5 A/ k4 R. [! E0 N

  22. ; l! s* f' X9 c
  23.                 projectCurveBuilder1->CurveFitData()->SetTolerance(DISTANCETOLERANCE);
    . ?* C- [$ Z3 q& Q9 r

  24. ; ~1 f$ N  X* ~3 o
  25.                 projectCurveBuilder1->CurveFitData()->SetAngleTolerance(ANGLETOLERANCE);
    - t8 r0 Y1 G' c" _& H5 B. |

  26. * E' ^! ~/ v8 u; Y0 I" P
  27.                 int size = (int)inputObjects.size();
    6 F+ q! a" f  D* _% f
  28.                 std::vector<IBaseCurve *> curves1;/ h; w2 P; K# n3 ?9 _& t0 l: w2 G
  29.                 for (int ii = 0 ; ii < size; ++ii)
    7 E) x: u7 V8 r2 m4 N' A  P
  30.                 {" x, N2 F  r# Y6 ?  m3 y- B
  31.                         curves1.push_back(dynamic_cast<IBaseCurve*>(inputObjects[ii]));
    * J; L5 j7 f7 \  J9 `# V" E
  32.                 }+ w9 i9 m5 h, x* T& G0 L' d

  33.   s7 x7 |1 T  @
  34.                 NXOpen::CurveDumbRule *curveDumbRule1;8 G" }- M" a5 x' r. M3 \: ~2 i6 c% Y
  35. * ]/ |1 r  g( c5 Y" ^) F( P* J
  36.                 curveDumbRule1 = workPart->ScRuleFactory()->CreateRuleBaseCurveDumb(curves1);
    - p  H) `: O5 Y6 \" U1 h8 y! n
  37. 1 k/ Z) l: ^- k$ \2 M3 B
  38.                 projectCurveBuilder1->SectionToProject()->AllowSelfIntersection(true);
    5 w/ @$ t8 |: T$ {" y

  39. ; }; u1 J, L9 h( R) m5 h9 u2 S
  40.                 std::vector<SelectionIntentRule *> rules1(1);. P. c( l8 P5 t3 [- K0 S/ Q
  41.                 rules1[0] = curveDumbRule1;) a7 Z; N  A5 Q5 X
  42.                 NXObject *nullNXObject(NULL);
    , m$ N1 J, L6 ?( U0 i
  43.                 Point3d helpPoint1(0, 0, 0);2 ]0 ]* V, N  k
  44.                 projectCurveBuilder1->SectionToProject()->AddToSection(rules1, nullNXObject, nullNXObject, nullNXObject, helpPoint1, Section::ModeCreate, false);
    - Z3 q! a  f7 e

  45. ) P$ B7 b, N3 x2 {4 {: P
  46.                 plane1->Evaluate();) b3 P9 Q( s) Y  b
  47. 6 o- d6 t# b* ^, W* v9 P% ^
  48.                 projectCurveBuilder1->SetPlaneToProjectTo(plane1);% `/ o/ O4 r! m5 y+ S  W
  49. % ~/ x: h/ _( G. l) A7 w, Q
  50.                 projectCurveBuilder1->SetGapOption(true);5 k; y8 [5 S+ ~

  51. - x! u1 U. N- A3 z! l
  52.                 projectCurveBuilder1->CurveFitData()->SetCurveJoinMethod(GeometricUtilities::CurveFitData::JoinGeneral);
    ( L& }" F5 c* c, Y- W4 D) B/ b

  53. 2 O) C$ v; m4 E1 U
  54.                 NXObject *nXObject1;
    4 S$ P) |- l+ k6 z" d& J
  55.                 nXObject1 = projectCurveBuilder1->Commit();5 q* [* m( C. J# ^" Y

  56. % V; F2 K0 @0 }' ?' d8 t
  57.                 projectCurveBuilder1->SectionToProject()->CleanMappingData();
    2 [8 ]8 g+ A6 I

  58. ' `7 j9 O' S( r+ k& x, ]4 ~
  59.                 projectCurveBuilder1->Destroy();
    4 {( X1 L) _  {( S( g# n

  60. 6 `! ~. U1 M" F: E8 w7 B, Q
  61.         }0 s1 b6 U/ {2 {. T* Y
  62.         catch(exception& ex)
    - o4 `/ V7 c. g0 F$ ^/ H
  63.         {
    * G. C) e/ J6 c
  64.                 //---- Enter your exception handling code here -----
    / N! O2 y7 o" G: {: j2 v1 q: E: Z
  65.                 errorCode = 1;
    : K6 a% o. p  P& Z0 c4 K
  66.                 trimSteels::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeError, ex.what());
    5 Z; M5 i/ J. c) G6 {5 |
  67.         }  p+ o8 t9 f8 w7 Y0 e
  68. : F# ?6 n8 }: `, L6 q3 X
  69.         return errorCode;* X* |  G/ j6 j; C# G0 A" u
  70. }
    2 c6 L0 N6 i& S" Y2 C' u4 v6 T
复制代码

1 r$ _/ w# q" l1 {
: _& \  ^2 m& W! @' F! y! k
: G; Z* M: a% c0 v# b; }& _4 E
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了