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

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

  [复制链接]

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

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

PLM之家NX 楼主

2014-5-5 22:45:05

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

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

x

" U! V2 o( T% S2 {. P" q1 o; B# A/ }$ f; O* V3 t$ J

3 |  r4 p" @5 H3 KUG NX二次开发源码分享: NX Open C++ 创建投影曲线 project curves2 P1 F! {, ^$ n

3 f# E+ R3 U2 k此处使用的是 通过面的法向创建投影曲线,可以参考下!  j% w; j" `) o
. i! C% j3 u/ K( L$ z

& k% d+ D: S9 V$ C) Z( k1 f' v# |# Q* p6 u& l- D; H

( J' T% I( @1 E% @& d# @
9 g) ~- c$ B1 ]/ _& Q1 b1 _& @% i+ I$ m' m* }$ f4 f& k$ U

  i# V& _$ Q0 K# y6 ]3 ?

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

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

) h$ }0 X5 V2 t/ t" e
# p" L& Z- x- L3 r# l
" l( L. i4 t9 `3 u  o+ d8 T

  1. * T0 [; Z$ d$ V
  2. int trimSteels::project_curves(vector<TaggedObject *>inputObjects,Plane *plane1)
    " p; S  p% t& X8 G# d8 }
  3. {
    ! `# U: l* a8 H- q$ v( z' [
  4.         int errorCode = 0;
      z2 g3 L$ R3 T. p' C) }
  5.         try. \7 H! n; X! x# Y  ?( w/ ?) t
  6.         {6 C0 w0 U2 z, J8 A0 w
  7.                 // createProject curves4 D: }, j, q* H1 _, w& Q
  8. + e2 P; X) J% @$ p5 Q$ N/ W; ?. S) b
  9.                 Features::Feature *nullFeatures_Feature(NULL);  @' O! l/ g1 p9 }& V9 D5 t0 p

  10. * Q: c# W/ ]4 L) Q! ?
  11.                 Features::ProjecTCurveBuilder *projectCurveBuilder1;1 @2 d! R, ]0 x* v$ g

  12. 4 Z4 ?, Q' F4 `9 T3 ]
  13.                 projectCurveBuilder1 = workPart->Features()->CreateProjectCurveBuilder(nullFeatures_Feature);6 b( I6 n  W. \& r# A$ O

  14. & `% H, W4 W: |1 l8 N% f* w
  15.                 projectCurveBuilder1->SectionToProject()->SetDistanceTolerance(DISTANCETOLERANCE);4 z: y$ E5 J2 W- A* }. f% g
  16. 1 N7 V3 u0 {1 c# y0 T/ ^* |
  17.                 projectCurveBuilder1->SectionToProject()->SetChainingTolerance(CHAININGTOLERANCE);7 J1 b! @) i. Z# n6 K" T) `5 D
  18. ' R9 ~2 O7 @. Z4 G/ W9 P
  19.                 projectCurveBuilder1->SectionToProject()->SetAngleTolerance(ANGLETOLERANCE);7 {! o. M" K- R! i# y2 s) F
  20. - T( W2 T' H5 w8 |% v) \0 u. M
  21.                 projectCurveBuilder1->SectionToProject()->SetAllowedEntityTypes(Section::AllowTypesOnlyCurves);% N2 V$ D9 l4 V5 Y3 O( y$ T- r
  22. + N- l# ~* }( I) B3 b# D
  23.                 projectCurveBuilder1->CurveFitData()->SetTolerance(DISTANCETOLERANCE);
    ( S% ?! G: {# |& v3 v. v

  24. 1 C6 b4 Z3 @7 _# z# P
  25.                 projectCurveBuilder1->CurveFitData()->SetAngleTolerance(ANGLETOLERANCE);
    9 G0 Q% F- ^' |8 J- [

  26. 7 Z9 [/ g0 h3 P) v
  27.                 int size = (int)inputObjects.size();
    + r# m; x  n: A
  28.                 std::vector<IBaseCurve *> curves1;
    7 S  ]+ o/ f2 s5 |& l) y
  29.                 for (int ii = 0 ; ii < size; ++ii)
    " H% E# l( p% t. Q; n! I
  30.                 {
    ) O. h9 i7 Y3 k$ U/ B
  31.                         curves1.push_back(dynamic_cast<IBaseCurve*>(inputObjects[ii]));( i* M. M4 z# y3 L) F
  32.                 }/ l: h8 V* d* G4 T" ^+ L9 k/ w
  33. 2 x5 I7 C$ X- C2 l& x
  34.                 NXOpen::CurveDumbRule *curveDumbRule1;5 W# [6 f; Q+ ?7 s
  35. 2 F  `) z5 j: C/ b5 b2 ~
  36.                 curveDumbRule1 = workPart->ScRuleFactory()->CreateRuleBaseCurveDumb(curves1);
    # [8 Q9 _& i0 k2 ?. v
  37. - k- q9 C6 y9 U$ E, v9 n8 u7 b
  38.                 projectCurveBuilder1->SectionToProject()->AllowSelfIntersection(true);' J& @7 p1 P; q% o0 l! R* `  G8 A
  39. # G, s4 }7 T2 Q  a
  40.                 std::vector<SelectionIntentRule *> rules1(1);
    : E7 m2 _2 w) a) Y+ F! ?( Z
  41.                 rules1[0] = curveDumbRule1;+ v7 g& J2 n) e
  42.                 NXObject *nullNXObject(NULL);
    - d. c/ E- w* c! H* H% \9 a
  43.                 Point3d helpPoint1(0, 0, 0);5 q' Y7 h: ]/ [& v0 ]9 Q* W( F
  44.                 projectCurveBuilder1->SectionToProject()->AddToSection(rules1, nullNXObject, nullNXObject, nullNXObject, helpPoint1, Section::ModeCreate, false);) P; ^3 S0 f5 G& k# i

  45. ! K; K: `4 W0 x- x% u
  46.                 plane1->Evaluate();
    5 g- v6 q: W2 o3 l! j

  47. 5 @" G; c  E0 F# y" Y3 C. P
  48.                 projectCurveBuilder1->SetPlaneToProjectTo(plane1);
    , |8 ^7 S8 a. m) H& x3 d
  49. $ r  M6 [  P2 y% p% `7 {. }/ v
  50.                 projectCurveBuilder1->SetGapOption(true);
    # k) B" y4 O9 I: `

  51. 0 U! j  r* _! Q" Q7 ~9 r9 ~
  52.                 projectCurveBuilder1->CurveFitData()->SetCurveJoinMethod(GeometricUtilities::CurveFitData::JoinGeneral);
    8 s9 T4 ~6 i9 i
  53. ) Y1 M) y8 P8 S) {. I
  54.                 NXObject *nXObject1;' g7 w6 u# t+ ~$ n  W
  55.                 nXObject1 = projectCurveBuilder1->Commit();$ Q( t" M2 ~9 V. a; e& _+ I% k6 s

  56. 3 N/ H5 p7 M4 D' `( g
  57.                 projectCurveBuilder1->SectionToProject()->CleanMappingData();
    * }4 `. V" v; \2 H$ l+ A, W
  58. $ b8 J& j6 y6 L5 [6 D7 k
  59.                 projectCurveBuilder1->Destroy();
    : Q9 M2 r4 a0 K6 r7 {
  60. : i; {$ i. K0 L( n" K2 D% O3 z
  61.         }
    . Z' g+ k7 b3 T1 U! b0 o. X
  62.         catch(exception& ex)
    % T4 q$ T! T1 g' E( K" U4 w
  63.         {
    0 b# D( Y3 {  N! L/ h1 t( x9 n; b
  64.                 //---- Enter your exception handling code here -----
    5 L, L7 B/ l: S* H9 L4 e
  65.                 errorCode = 1;  a2 f6 G* o4 f. v" f% H
  66.                 trimSteels::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeError, ex.what());
    - g/ Y/ A' h5 ]1 M% R; G. P+ Q
  67.         }4 c3 l4 v% n5 m9 q" n) q- J. ]3 J0 g
  68. 4 R6 \& t1 f( U# P
  69.         return errorCode;% {( _" q% T  `: ?+ s! D% u
  70. }, I9 |" b& Y" L& l/ e' {* W: Z
复制代码
% S4 d) y9 r3 }
7 t( M  J3 F" r4 }! s5 w! a
2 I# |2 Q( T, }: R- m( ], f: T
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了