PLM之家PLMHome-工业软件与AI结合践行者

[二次开发源码] 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

% s7 [$ P6 ]: S5 @* I/ o
4 \2 ]% q+ p9 F5 ?( o. i1 z  X) h* c$ C( u- W# z/ F* N6 M
UG NX二次开发源码分享: NX Open C++ 创建投影曲线 project curves! a' d/ D6 R5 S( i3 S6 c
: V, Z/ [) Z( b1 d3 w* f
此处使用的是 通过面的法向创建投影曲线,可以参考下!
) B. Z0 u' ^. \3 n" F) m+ i/ t0 M% U# @6 s, |1 ]. l3 r2 e& {1 c
4 |# \. v6 Y% l5 J/ B# _

0 P* Y$ ^4 j, @6 Q+ N+ Z3 _3 z' e" ]* n5 q$ K2 a* Z; _( r
7 v5 E& T. D5 n, u: ^

: {+ w2 L+ A% U6 T, O" y- W0 U" j- l

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

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

1 v8 G$ g: O' N
' d$ O# S- s0 M, a1 H. R$ L  ]3 M' [  |+ G3 [
  1. 3 U) g( A9 ?2 o/ Z- N- _2 p
  2. int trimSteels::project_curves(vector<TaggedObject *>inputObjects,Plane *plane1)
    ' z2 k' y$ C6 W1 Y) t
  3. {
    + y" i) G" A+ t: Z/ p6 ~
  4.         int errorCode = 0;
    4 d/ q. }( R9 V
  5.         try2 k! u# V/ b; e+ e
  6.         {: @* y+ Q# h* ^
  7.                 // createProject curves; g8 J0 [) H1 Z: U

  8. 4 g7 g2 T9 b' s) x& s- g  X
  9.                 Features::Feature *nullFeatures_Feature(NULL);5 O7 j7 H4 t$ k+ e
  10. 6 v9 t/ A8 V" T# E) k+ Z
  11.                 Features::ProjecTCurveBuilder *projectCurveBuilder1;
    # X+ ?9 t- v8 @! z

  12. & L5 V7 X- d( l/ {: m1 k& i' K
  13.                 projectCurveBuilder1 = workPart->Features()->CreateProjectCurveBuilder(nullFeatures_Feature);
    " R( f9 p' n8 P  G5 M& Z; p+ ^
  14. % V  Y9 N; [( _. ?* c3 B! @
  15.                 projectCurveBuilder1->SectionToProject()->SetDistanceTolerance(DISTANCETOLERANCE);
    $ g4 d$ L! j) f" I/ \' U! U
  16. 1 {- ^; v% d- h5 M+ D! b6 `1 g
  17.                 projectCurveBuilder1->SectionToProject()->SetChainingTolerance(CHAININGTOLERANCE);
    ; _; e, [" U- H' i7 d& T
  18. 3 X5 T# U- ]6 s/ [  M6 E$ W
  19.                 projectCurveBuilder1->SectionToProject()->SetAngleTolerance(ANGLETOLERANCE);
    $ Q# w1 }1 o  j" w' H( W
  20. $ n* ]2 T& s1 \0 [' Y+ R0 s/ j
  21.                 projectCurveBuilder1->SectionToProject()->SetAllowedEntityTypes(Section::AllowTypesOnlyCurves);
    . T& o  X7 t. ^; I2 }2 X2 f
  22. 6 p5 \$ Y! g4 G
  23.                 projectCurveBuilder1->CurveFitData()->SetTolerance(DISTANCETOLERANCE);( h+ l0 j2 T$ w% D! L" h5 x
  24. 0 n7 x, N' T, w& T8 e( ^2 W
  25.                 projectCurveBuilder1->CurveFitData()->SetAngleTolerance(ANGLETOLERANCE);, ~$ @' k+ p2 v$ l2 ~2 g/ J

  26. 2 \3 J! ~* c' t3 d# I; v( p5 ^
  27.                 int size = (int)inputObjects.size();- U9 m8 X& r6 d$ {
  28.                 std::vector<IBaseCurve *> curves1;
    ; Z3 U1 w2 N/ a$ B' q1 y4 A
  29.                 for (int ii = 0 ; ii < size; ++ii)
    1 \9 u* F+ b* _: ^. S
  30.                 {
    ) H6 F# D  W8 P% B3 v, `0 s  U& o
  31.                         curves1.push_back(dynamic_cast<IBaseCurve*>(inputObjects[ii]));, R0 D" L( P" o
  32.                 }
    ) n; F$ L& O  F7 t. o

  33. # _  W9 o  W- E" u) L6 d
  34.                 NXOpen::CurveDumbRule *curveDumbRule1;$ p# _6 e; P4 C) S6 e0 w% `* w0 M

  35. 4 m0 t  `1 `/ ?
  36.                 curveDumbRule1 = workPart->ScRuleFactory()->CreateRuleBaseCurveDumb(curves1);
    1 P6 a! M# @3 ]  F! H2 Y- y$ h9 x

  37. , V* g7 o' k9 z' p: G  w
  38.                 projectCurveBuilder1->SectionToProject()->AllowSelfIntersection(true);7 p9 g2 ?1 T/ p. t# o) ~+ G# A
  39. 4 I. {/ c2 r7 y* g
  40.                 std::vector<SelectionIntentRule *> rules1(1);( d3 b" n7 n3 |' g. S2 ~
  41.                 rules1[0] = curveDumbRule1;+ d4 ?2 U. p* `1 w8 S. s  H
  42.                 NXObject *nullNXObject(NULL);' f/ A/ _0 V) q! T
  43.                 Point3d helpPoint1(0, 0, 0);3 o  o" T# k/ E5 \8 w
  44.                 projectCurveBuilder1->SectionToProject()->AddToSection(rules1, nullNXObject, nullNXObject, nullNXObject, helpPoint1, Section::ModeCreate, false);! `# V: v8 g! e

  45. 6 _8 m/ L' |, }8 J1 R; X
  46.                 plane1->Evaluate();" j% Q4 P' Z5 D  Z& ]- j6 V6 @

  47. % w- t# t( c3 O
  48.                 projectCurveBuilder1->SetPlaneToProjectTo(plane1);, O9 ]# l% n2 J& F: L
  49. 0 n) E+ [' q) U9 n- h/ C
  50.                 projectCurveBuilder1->SetGapOption(true);' x: O# B* R/ b' y' \- a$ Z

  51. : g: a) q% J+ C! d' }' ?5 ?
  52.                 projectCurveBuilder1->CurveFitData()->SetCurveJoinMethod(GeometricUtilities::CurveFitData::JoinGeneral);$ T. P) b0 T  G5 ~4 s

  53. 1 t( V5 W+ x4 ?( O. I
  54.                 NXObject *nXObject1;$ d0 y9 K  T8 n  ~: B! O  l5 k
  55.                 nXObject1 = projectCurveBuilder1->Commit();
    $ v4 s9 D; N# e& u0 W$ y# D

  56. # D0 ]6 h2 ]# A5 _
  57.                 projectCurveBuilder1->SectionToProject()->CleanMappingData();
    $ X# l9 g3 f6 g) ]5 Z; h; K" E
  58. + U# K- k+ ?# u) l9 Q7 C. |
  59.                 projectCurveBuilder1->Destroy();
    4 y" }" d, k5 j* _0 i( x, L
  60. " q9 J1 c2 H1 D: y
  61.         }& \( f' o/ _8 s: T
  62.         catch(exception& ex)
    3 d5 ]2 \2 C' B9 I: }; W' u
  63.         {# E/ [, H0 i& m* |3 l. _( f
  64.                 //---- Enter your exception handling code here -----
    / A8 V( t' |7 `
  65.                 errorCode = 1;
    ; Z9 ^7 P: G! o" Z5 b
  66.                 trimSteels::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeError, ex.what());1 w2 |' Z0 b4 h) z& G+ s4 O( ~
  67.         }
    + m3 O+ @1 ~1 d$ e; P* I: {/ e3 _
  68. , k  `) Q3 ?$ a' |8 W
  69.         return errorCode;7 u/ A- g/ J9 z0 w% P+ H
  70. }  v* C# {2 Y. T
复制代码

/ X& d' j) P: u' p+ J
! m+ G" h3 R6 ~; i4 S
) Q  p# B" U: x5 n# Z, r- H# b
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了