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

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

  [复制链接]

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

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

PLM之家NX 楼主

2014-5-5 22:45:05

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

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

x
* q9 q& b+ o$ U/ u3 z: t/ f

# G6 [! K( K; g4 h* ]- }! \& j& w3 |& c& E* p
UG NX二次开发源码分享: NX Open C++ 创建投影曲线 project curves; f8 b" y; g/ I5 L4 ~

( ~+ Q3 l) {4 l6 o7 u此处使用的是 通过面的法向创建投影曲线,可以参考下!
8 U. k9 B) i4 z% E4 S) Y, K& g. n

, w" l+ K% _* V% T
/ G/ i* _; C9 g4 t, Q/ t, s7 `/ N- U. ^

' y2 l. a  |. X8 C% R
6 g6 E" R# n% q+ w# w: S4 e' ^5 H$ x; J5 d. z; r# @( g

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

 NX Open C++ 创建投影曲线 project curves
6 G: a* t& B7 w

4 |/ o! D0 U5 e0 p. E8 I- W' n
3 p% k: O, B8 x( G1 S" u7 f9 \+ {) {
  1. ' z. V' O7 H" r/ Y% ]
  2. int trimSteels::project_curves(vector<TaggedObject *>inputObjects,Plane *plane1)
    3 d3 M3 o) e4 U* w4 V( A
  3. {8 w! K9 f# \9 y8 X4 n" N" P
  4.         int errorCode = 0;
    ! d4 c+ _% @0 `$ F6 _7 z( X
  5.         try
    * O8 P5 B5 ?3 u0 k
  6.         {& x7 J2 h1 F1 ?( D+ |7 W& T
  7.                 // createProject curves+ ^0 T# s. i+ B) X, {

  8. 4 h9 N# j' F3 W0 `" g9 O( c% ]
  9.                 Features::Feature *nullFeatures_Feature(NULL);
    . P" f7 h& V3 @* O
  10. ( o( P' `2 ]& {& v
  11.                 Features::ProjecTCurveBuilder *projectCurveBuilder1;
    8 R! l, T! c/ ~1 V( T
  12. ' E( f- y, T  Z: ^9 ]
  13.                 projectCurveBuilder1 = workPart->Features()->CreateProjectCurveBuilder(nullFeatures_Feature);
    ) [% c1 C5 [- t' c) j" v
  14.   L8 l1 ?- {9 k  ]# H
  15.                 projectCurveBuilder1->SectionToProject()->SetDistanceTolerance(DISTANCETOLERANCE);
    3 f- U' m+ i# ^1 n$ B5 a
  16. 6 g% T0 j; p/ s9 D1 {. b* w
  17.                 projectCurveBuilder1->SectionToProject()->SetChainingTolerance(CHAININGTOLERANCE);  A: B& ~5 w' Y
  18. " k7 @' M0 u# L) b
  19.                 projectCurveBuilder1->SectionToProject()->SetAngleTolerance(ANGLETOLERANCE);
    . B4 G! n1 O3 h8 @! A0 `. O9 I1 q% m
  20. ; p# o- ^* O* Q1 c
  21.                 projectCurveBuilder1->SectionToProject()->SetAllowedEntityTypes(Section::AllowTypesOnlyCurves);% n: Z& E; b. P% D( S, A
  22. ; ^; o% n! i0 [, \4 O. Y# y3 q
  23.                 projectCurveBuilder1->CurveFitData()->SetTolerance(DISTANCETOLERANCE);) U- e* ]% v" c0 D4 u* |; m

  24. : [7 W2 `3 X, G  N) V
  25.                 projectCurveBuilder1->CurveFitData()->SetAngleTolerance(ANGLETOLERANCE);
      x. T3 Z9 O1 ^- b
  26. $ n% c  ^2 c. b) o; `
  27.                 int size = (int)inputObjects.size();
      H1 A5 k+ l4 s! ~+ e
  28.                 std::vector<IBaseCurve *> curves1;
      r: F) m8 M. b- e4 ~
  29.                 for (int ii = 0 ; ii < size; ++ii)- @* {9 H) g, A% u5 K$ Q
  30.                 {
    % i' j8 s! j& d$ \: g& U: L! O9 Q
  31.                         curves1.push_back(dynamic_cast<IBaseCurve*>(inputObjects[ii]));5 z6 x5 ~- N' J" T  g2 W# B$ u
  32.                 }' R- S- B" B9 T, g# {

  33. 9 d$ C; P& y4 s
  34.                 NXOpen::CurveDumbRule *curveDumbRule1;
    + b2 G) ]. K$ }

  35. & v8 S# h  h, h: a
  36.                 curveDumbRule1 = workPart->ScRuleFactory()->CreateRuleBaseCurveDumb(curves1);
    ' @% L* E1 O( Y# x
  37. - q/ }8 b" d) ?
  38.                 projectCurveBuilder1->SectionToProject()->AllowSelfIntersection(true);
    3 a9 w" H7 F# D/ g
  39. $ Q4 c2 b2 J" b8 f- O. l5 `
  40.                 std::vector<SelectionIntentRule *> rules1(1);
    + b  Z2 h0 U" I7 x4 i2 z$ H9 U1 g
  41.                 rules1[0] = curveDumbRule1;2 }! s  ?) W" e; m! ^
  42.                 NXObject *nullNXObject(NULL);* O9 ]* {; g6 D/ g- Y5 w$ |
  43.                 Point3d helpPoint1(0, 0, 0);
    + C7 J1 ~( h7 O: N, [2 a9 l, {
  44.                 projectCurveBuilder1->SectionToProject()->AddToSection(rules1, nullNXObject, nullNXObject, nullNXObject, helpPoint1, Section::ModeCreate, false);7 P) k, V5 _! h5 R1 J; U

  45. & W* p8 |: `) ?6 P: ]: h
  46.                 plane1->Evaluate();( F  Q  d: y, Q$ z- g: k6 }2 }

  47. + d$ a& V0 d9 ~
  48.                 projectCurveBuilder1->SetPlaneToProjectTo(plane1);
    : J# m$ s$ ~. f

  49. " N8 W+ ]  {1 P7 ]  C0 z0 }
  50.                 projectCurveBuilder1->SetGapOption(true);
    ( V: u- C  |, g+ S& V% O. m. W
  51. * r3 I. A1 g% Y) Y" N+ o  t
  52.                 projectCurveBuilder1->CurveFitData()->SetCurveJoinMethod(GeometricUtilities::CurveFitData::JoinGeneral);4 g. w' I3 e/ Q+ G
  53. 2 O3 }& {; }6 a' f8 p
  54.                 NXObject *nXObject1;
    , L- u5 y* e4 k. c: g
  55.                 nXObject1 = projectCurveBuilder1->Commit();5 F3 Q5 }& c7 t. K* l8 g, k

  56. 0 m! N5 O* W4 _7 G# b
  57.                 projectCurveBuilder1->SectionToProject()->CleanMappingData();
    ; U/ z, t9 i3 E0 O3 @* [  m8 `
  58. 0 t: Z% {! J6 @4 e+ i
  59.                 projectCurveBuilder1->Destroy();7 B" ]% i4 A( c6 Y
  60. 1 O( a% e- G( U
  61.         }
    6 a+ k' J1 f% Y. V  @8 s
  62.         catch(exception& ex)
    # N6 X1 A/ X. Z& Q1 h2 S- y! V! X
  63.         {) U# Z/ Q& Z. o! N0 J# z
  64.                 //---- Enter your exception handling code here -----% ?7 v+ ]% z" z" |
  65.                 errorCode = 1;- u! H& n3 b1 H: p% M: k
  66.                 trimSteels::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeError, ex.what());
    ) }$ k- V1 H8 o, o- [. s
  67.         }
    / I+ r1 P$ w# F8 ^

  68. 1 l0 U- h9 ^) P  g7 G: r
  69.         return errorCode;4 F2 S! N1 h! _8 l- k
  70. }
    5 x) J, ?7 u& S" v; W
复制代码

& v" D/ N5 x7 [' L: I  v5 B) X' j; I: Z# }
  B0 ]- P/ I+ `) d& 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二次开发专题模块培训报名开始啦

    我知道了