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

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

  [复制链接]

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

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

PLM之家NX 楼主

2014-5-5 22:45:05

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

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

x

  W9 C7 X+ I! P; Y: o) F; ]. a4 }  i# z' J
& ~9 H" z( }* y: w: ?9 [
UG NX二次开发源码分享: NX Open C++ 创建投影曲线 project curves! L2 U" P4 E% O$ |1 b7 d1 J
; H0 h! ]9 a4 O$ H/ C
此处使用的是 通过面的法向创建投影曲线,可以参考下!
/ E. _1 s  W; v) A- R, v
( v9 c5 H- ]" {0 G9 G
2 L: h4 Q) k6 u& \0 T# `
4 S+ R/ k3 K& S2 u" J2 w
: ?9 D! x6 o  W( h; G
* N  [; P. v* Z- D( n  J' W) W# k5 g" B' U  H# u8 V
5 J: w1 i7 g& ^1 R: X$ G$ T9 a

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

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

5 D5 J0 m" |7 y3 _( ^0 j' S/ P/ k  M1 N/ {

6 q3 d" S* K9 L$ H3 G( a8 f* o% Z

  1.   {5 _- m* |% F' [5 ~' O
  2. int trimSteels::project_curves(vector<TaggedObject *>inputObjects,Plane *plane1)
    ! N$ P* Q" ?# D8 |8 N
  3. {
    ( H: N5 ]% t  \9 l0 w! f+ l
  4.         int errorCode = 0;9 U1 u: `4 S+ R
  5.         try
    6 t, w8 E, o9 E" ~
  6.         {
    . }% f* [3 @' o, A' S# S
  7.                 // createProject curves
    $ c* d2 X0 y1 o) B2 L

  8. 5 D5 h% V+ M: p
  9.                 Features::Feature *nullFeatures_Feature(NULL);. g0 V; a& `% T2 v% m% b# j% S: _/ q

  10. % L9 d4 D% e; [  L6 _
  11.                 Features::ProjecTCurveBuilder *projectCurveBuilder1;
    3 ~4 q$ n. ~3 q+ ]$ u) Z
  12. & p4 p7 `. p% {: l8 n5 t
  13.                 projectCurveBuilder1 = workPart->Features()->CreateProjectCurveBuilder(nullFeatures_Feature);
    ( ^8 h- A  }, E$ N" ]5 S! x, f

  14. ! \+ C2 j' V  Z
  15.                 projectCurveBuilder1->SectionToProject()->SetDistanceTolerance(DISTANCETOLERANCE);
    . {7 B  n7 [) a) c% ]/ y7 {
  16. ; m& d. O" G1 l( ?, \) |5 H
  17.                 projectCurveBuilder1->SectionToProject()->SetChainingTolerance(CHAININGTOLERANCE);+ ^6 }- S) r3 t: U- \8 |
  18. 3 R  Z& i% k0 t' m2 Z
  19.                 projectCurveBuilder1->SectionToProject()->SetAngleTolerance(ANGLETOLERANCE);
    - _5 V! t7 ~$ A# ~- c

  20. # p  i& U: C  S. X& R$ D5 R, Q9 E
  21.                 projectCurveBuilder1->SectionToProject()->SetAllowedEntityTypes(Section::AllowTypesOnlyCurves);0 H, J4 ]9 _# E8 j8 d2 {

  22.   x/ U9 `8 P$ S( A8 k/ |2 r
  23.                 projectCurveBuilder1->CurveFitData()->SetTolerance(DISTANCETOLERANCE);& Q9 X" |+ {0 n

  24. / J% I' x! N( M# o* x' x% a; H
  25.                 projectCurveBuilder1->CurveFitData()->SetAngleTolerance(ANGLETOLERANCE);
    5 b5 G; Y- Q' d2 l  z1 @, f
  26. $ E1 q( V$ ?( e2 i9 p% u
  27.                 int size = (int)inputObjects.size();; v" E6 r8 t0 G8 s
  28.                 std::vector<IBaseCurve *> curves1;' Q, {6 t8 c+ B% f) K
  29.                 for (int ii = 0 ; ii < size; ++ii)
    . `9 e3 x6 d7 i/ q3 X
  30.                 {
    : B5 W! M. c7 [6 Y- N( ]% `
  31.                         curves1.push_back(dynamic_cast<IBaseCurve*>(inputObjects[ii]));7 C8 m, b) P5 Q( I( K
  32.                 }
    1 K3 H" u) c( s) o
  33. ! u8 |: ]3 x* J  }* a- {
  34.                 NXOpen::CurveDumbRule *curveDumbRule1;7 u: a  O1 }+ Q, d/ Q. a$ m; N
  35. $ n& q/ Z6 q# f! ^
  36.                 curveDumbRule1 = workPart->ScRuleFactory()->CreateRuleBaseCurveDumb(curves1);9 K: d, t: m" ~0 s
  37. # r1 b+ ?# D; ~0 H& h% h. @
  38.                 projectCurveBuilder1->SectionToProject()->AllowSelfIntersection(true);
    1 b3 N1 c3 U; p& F. \/ G* o4 Q0 r1 s
  39. + A/ O, l9 f& u$ ~, C" T
  40.                 std::vector<SelectionIntentRule *> rules1(1);4 A( W. t1 V+ Z
  41.                 rules1[0] = curveDumbRule1;
    0 h4 j8 G2 ~5 Z) @1 ?: B- |5 N
  42.                 NXObject *nullNXObject(NULL);8 X0 C" [3 P, E3 ?
  43.                 Point3d helpPoint1(0, 0, 0);! V  \( J7 v  _& w
  44.                 projectCurveBuilder1->SectionToProject()->AddToSection(rules1, nullNXObject, nullNXObject, nullNXObject, helpPoint1, Section::ModeCreate, false);
    ; K$ K' j" S0 k9 t
  45. # B* n) ]% k' ?+ _
  46.                 plane1->Evaluate();
    " H3 O, [0 k$ P
  47. 9 U; P9 l4 G8 Y* `' B, D# {
  48.                 projectCurveBuilder1->SetPlaneToProjectTo(plane1);
    8 s+ k' x$ h% @3 O( {0 J) {

  49. 2 b7 N3 }: t4 C9 C( F
  50.                 projectCurveBuilder1->SetGapOption(true);
    5 P/ m$ U+ g+ M8 ?8 j3 i+ A
  51. 8 ]/ N3 n9 q% ~7 R. e/ ?$ W! f
  52.                 projectCurveBuilder1->CurveFitData()->SetCurveJoinMethod(GeometricUtilities::CurveFitData::JoinGeneral);, `- y* J1 A! x

  53. . Z6 n( ^7 q4 k6 G+ z, k  I. w
  54.                 NXObject *nXObject1;  J! R' `$ s% L6 H! q$ u: T
  55.                 nXObject1 = projectCurveBuilder1->Commit();  B+ h% L3 g4 X) r9 B" E7 I
  56. 7 J% o, |6 ]  U: j6 F# c, X
  57.                 projectCurveBuilder1->SectionToProject()->CleanMappingData();
    ( Y$ O( d! {3 n

  58. $ m8 R7 ?( e- q0 s
  59.                 projectCurveBuilder1->Destroy();
    6 y5 D0 m% r# @, x

  60. ( U8 N0 c1 a0 g! X/ u, e  o
  61.         }
    * u3 ?# M, H( R4 W; S' t5 z) S
  62.         catch(exception& ex)
    , V- F8 ]. _  t/ }3 s5 h
  63.         {
    ' ]+ @1 c: B3 f8 J" @& n# p
  64.                 //---- Enter your exception handling code here -----
    " z% H% O/ E1 H4 `2 a
  65.                 errorCode = 1;. \/ `( M  x8 d
  66.                 trimSteels::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeError, ex.what());% [6 {% V0 w" U) G+ s
  67.         }. I! }) w# X- f+ T" g
  68. * \; R% u* z* ?
  69.         return errorCode;+ v6 ^8 e8 T4 A# I& W
  70. }
    & k  k; b, T$ P
复制代码

( b+ b" \! V$ h- K+ v
8 B3 y9 _9 i/ ~5 l2 h
& F6 G: U4 q4 @7 O- H/ T$ ~4 O
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了