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

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

  [复制链接]

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

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

PLM之家NX 楼主

2014-5-5 22:45:05

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

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

x

3 X5 ~: N+ Z& C5 G2 ]( C
8 B1 b) d0 n) N3 e: r9 N! C" O; Y
3 b% Q% q7 L( C' {UG NX二次开发源码分享: NX Open C++ 创建投影曲线 project curves1 Y9 y) e1 j1 v  t! }, C
9 O' d6 ]% T4 l: J
此处使用的是 通过面的法向创建投影曲线,可以参考下!
" t1 A, }/ g( ?* i% v, o1 A8 ~% I0 N  j' u2 l, o

, Q' n4 M: i7 [) x6 t/ Z  v- ~6 f" N- \; r: [
' T% @! v) H2 }* X& c5 \

6 k9 [) S! x5 s. c2 J( T, Q
& u7 x5 @; T. ]5 k& w
) Z2 A1 a6 x( [4 r" N5 j

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

 NX Open C++ 创建投影曲线 project curves
7 I: ]: D( {/ @8 K5 t5 r

, m' ~9 K2 p6 }! n
: Z% f: C% }, a8 J$ d* Z# U9 \
  1. ; N" U1 _5 n) M; i7 X
  2. int trimSteels::project_curves(vector<TaggedObject *>inputObjects,Plane *plane1)/ {( S. ^5 h' a$ N
  3. {
    3 p7 v) ~' X# A& n, T3 i
  4.         int errorCode = 0;
    2 S- o4 Y$ j" \  v- p2 Z
  5.         try- l; j5 R- \2 O2 e0 U
  6.         {2 {/ Y. P& Q- M/ r
  7.                 // createProject curves
    2 r  E% L2 E& d" H1 }+ S1 ?

  8. : m/ j; q. X8 `
  9.                 Features::Feature *nullFeatures_Feature(NULL);
    + |+ @+ o, h& w: e6 [: }

  10. . _) o4 O7 o/ I! A/ ?' V/ X
  11.                 Features::ProjecTCurveBuilder *projectCurveBuilder1;: G% w/ \, w" h: B9 @) _5 r4 W! E

  12. - M' f5 [& z8 X
  13.                 projectCurveBuilder1 = workPart->Features()->CreateProjectCurveBuilder(nullFeatures_Feature);
    4 e9 j4 X/ H" {+ Z0 q9 b2 E6 M+ n  [
  14. " z9 j) ~' e% ?1 R8 Y
  15.                 projectCurveBuilder1->SectionToProject()->SetDistanceTolerance(DISTANCETOLERANCE);4 F4 E* \6 I& c6 W& ?

  16. ( }0 `! j; x1 e+ f8 ?$ F9 @
  17.                 projectCurveBuilder1->SectionToProject()->SetChainingTolerance(CHAININGTOLERANCE);: L' q! |9 V5 w

  18. 6 Q0 A& l9 L+ R9 I0 Y2 j9 N
  19.                 projectCurveBuilder1->SectionToProject()->SetAngleTolerance(ANGLETOLERANCE);  d1 k- R1 i+ k8 l  @) i& X+ E
  20.   \9 I8 ~; |3 H/ R. F( P
  21.                 projectCurveBuilder1->SectionToProject()->SetAllowedEntityTypes(Section::AllowTypesOnlyCurves);9 b+ A: h! w4 X1 w
  22. , s" D  o6 m" q7 D8 h2 a9 L
  23.                 projectCurveBuilder1->CurveFitData()->SetTolerance(DISTANCETOLERANCE);
    " l  D) j" C' t: r6 U9 O
  24. 0 z2 l  S. I  l& I; o# p; Q
  25.                 projectCurveBuilder1->CurveFitData()->SetAngleTolerance(ANGLETOLERANCE);3 Q; F* d% \2 S. J( w$ ?
  26. 2 P2 X- E3 c; ^3 ^$ L
  27.                 int size = (int)inputObjects.size();! O8 S5 O+ M: n4 ^) X
  28.                 std::vector<IBaseCurve *> curves1;
    6 ]% F6 I8 }0 R: y1 G* J/ l  }" `
  29.                 for (int ii = 0 ; ii < size; ++ii)
    * w6 e8 l, d+ c, L1 ^
  30.                 {
    0 @- I7 p: ^2 v4 U( d2 k- J; k
  31.                         curves1.push_back(dynamic_cast<IBaseCurve*>(inputObjects[ii]));, M$ `7 K! `& q
  32.                 }3 G  {' l3 j3 l% ^1 X

  33. % M1 W* e4 k" d8 b$ U( n
  34.                 NXOpen::CurveDumbRule *curveDumbRule1;8 D% [2 s3 i$ H$ s

  35. ; I6 q6 E, ^+ V7 R- I$ O
  36.                 curveDumbRule1 = workPart->ScRuleFactory()->CreateRuleBaseCurveDumb(curves1);
    $ f8 c# U( S7 d/ j8 ~1 N

  37. 7 c- l% }) s0 F
  38.                 projectCurveBuilder1->SectionToProject()->AllowSelfIntersection(true);
    + L' C& D8 e/ h* U* E
  39. ) @9 e- ]# ?, `9 U0 E
  40.                 std::vector<SelectionIntentRule *> rules1(1);  ]) ]8 m* v! U" R( |
  41.                 rules1[0] = curveDumbRule1;2 D8 ?6 `, l# M: h; v& v, F% x
  42.                 NXObject *nullNXObject(NULL);) X1 G$ f3 r  Q- R' n* K/ b
  43.                 Point3d helpPoint1(0, 0, 0);
    & g! b0 M. c8 U/ ^$ r, p
  44.                 projectCurveBuilder1->SectionToProject()->AddToSection(rules1, nullNXObject, nullNXObject, nullNXObject, helpPoint1, Section::ModeCreate, false);: ]5 W( p3 L( F+ B1 a: G

  45. 0 n3 v$ D3 K7 j5 f6 |. ?9 L6 f
  46.                 plane1->Evaluate();
    3 J" w2 [4 L1 `/ Q* H  q: W

  47. * r/ h- z3 Y0 K: Z$ {& k
  48.                 projectCurveBuilder1->SetPlaneToProjectTo(plane1);
    ' a% I5 B0 S' [/ t) u( G" i

  49. ; j8 Q% S) A6 m! L1 R5 N/ o' H4 Z
  50.                 projectCurveBuilder1->SetGapOption(true);5 C7 t' L/ \3 U* [: y3 l8 V% s
  51. ( d  n$ s+ S0 y' L
  52.                 projectCurveBuilder1->CurveFitData()->SetCurveJoinMethod(GeometricUtilities::CurveFitData::JoinGeneral);$ V; v% C  Q) r' R
  53. 2 L' v* @# E0 R. n* L' v
  54.                 NXObject *nXObject1;! _5 p. {3 e% ]7 R$ ]. r) d( S* }
  55.                 nXObject1 = projectCurveBuilder1->Commit();6 T  }9 A# H/ y, p5 ]( a
  56. ( m. E3 K1 M& x* L: d& O
  57.                 projectCurveBuilder1->SectionToProject()->CleanMappingData();
    4 K$ \, j# G6 C' K8 T

  58. # o$ B0 w* Z3 p
  59.                 projectCurveBuilder1->Destroy();4 Z& q- Z$ l0 E

  60. ' g- u: s; L' G" L) _# X
  61.         }
    8 A6 F5 l' |2 z! L; i. E+ q' t
  62.         catch(exception& ex)! V* v1 t2 \- \/ V0 q
  63.         {
    , B5 N% e0 X, E. B
  64.                 //---- Enter your exception handling code here -----
    : M- j  g* U  e/ W( x  _
  65.                 errorCode = 1;
    : R( u4 p/ F; T$ L" j, ]" ~
  66.                 trimSteels::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeError, ex.what());1 l) u* ?8 u6 U, W- f
  67.         }1 b! {: p8 \1 t6 ^2 _, C

  68. ' ]9 y: U; R' Y# \
  69.         return errorCode;
    $ l$ O8 a/ g6 w" |
  70. }
    ) J. ~1 l1 B- B# K
复制代码

$ }. c3 y+ e% K0 i# b: _+ q8 |
" b3 I+ ?! v6 I: ]* l
+ w3 L. z* y5 h7 ?- r& j6 u( 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二次开发专题模块培训报名开始啦

    我知道了