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

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

  [复制链接]

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

16

主题

5

回帖

188

积分

注册会员

积分
188
发表于 2014-5-5 22:45:05 | 显示全部楼层 |阅读模式

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

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

x

7 `. r0 U9 X/ s. i8 \5 M
  ]5 ^8 S+ D5 q+ j0 h! y
( ~9 l9 P% d, \$ w+ X' B9 G( fUG NX二次开发源码分享: NX Open C++ 创建投影曲线 project curves
& r1 j! \; g9 e, m! }4 E% I/ ]9 M: |' b+ l
此处使用的是 通过面的法向创建投影曲线,可以参考下!- ]" t) p/ \& C0 z; n) @: l

6 ?8 q0 M3 V5 g9 C/ v
; Y9 o. F: W, @) P* [7 z% w! X
5 w2 Y) F7 x6 \2 K7 B8 E
3 T5 u& i$ ~' g# d2 ^( f- y6 N+ Y! o5 w* i
2 Q& Y  F" e% m: _. A/ x. D

  ~$ _. f5 L! W+ J

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

 NX Open C++ 创建投影曲线 project curves
# N8 o7 t9 x3 B% l- v* D" [2 x1 M# K: m
/ D3 z, R4 q: q+ n: o6 x
' w& x# p# g# }+ y8 Z3 M+ Q- ~

  1. 8 R6 {! m; {' S. J9 Z$ h$ C" t, M
  2. int trimSteels::project_curves(vector<TaggedObject *>inputObjects,Plane *plane1)  e. {2 Q) i: k5 y
  3. {) `: j: n' l6 l! V
  4.         int errorCode = 0;
    " ?1 U7 T4 J- T. F( J! U
  5.         try% L$ x7 _3 {$ g7 p
  6.         {& ?3 \- H' n& a- {/ M: j1 G% @: o
  7.                 // createProject curves
    , O: }  ?$ m0 I; Q, Z

  8. , O% w, c, y! Y# F  N2 U
  9.                 Features::Feature *nullFeatures_Feature(NULL);
    $ e8 j3 o8 w( W" c+ K9 P! Z7 L

  10. ' `$ n# O$ K6 n% E9 {- B7 Z3 A
  11.                 Features::ProjecTCurveBuilder *projectCurveBuilder1;
    . P8 x! ~; d: X1 c+ L# P' L' Q$ X
  12.   v! p0 g% H0 j9 Q+ h/ }+ ]
  13.                 projectCurveBuilder1 = workPart->Features()->CreateProjectCurveBuilder(nullFeatures_Feature);
    6 z9 S" c* N* R/ e. T+ H+ g# u3 J
  14. ; V& x; U: g5 i4 h5 m0 }
  15.                 projectCurveBuilder1->SectionToProject()->SetDistanceTolerance(DISTANCETOLERANCE);' i1 L3 T5 |/ |) i/ X

  16. . ~5 s& R9 g0 y. c
  17.                 projectCurveBuilder1->SectionToProject()->SetChainingTolerance(CHAININGTOLERANCE);% W0 ]8 q$ I& ]2 C# U# V9 Z/ d
  18. , t8 ^# H5 |9 g
  19.                 projectCurveBuilder1->SectionToProject()->SetAngleTolerance(ANGLETOLERANCE);6 E0 l4 b2 A! B1 e6 J9 @

  20. 3 ?3 ^( Y% `0 G: ~% X
  21.                 projectCurveBuilder1->SectionToProject()->SetAllowedEntityTypes(Section::AllowTypesOnlyCurves);( O, X% I5 _! m) K. \4 d) Y; P( ]# f

  22. + {- f6 y' H5 O3 X1 \( S5 \
  23.                 projectCurveBuilder1->CurveFitData()->SetTolerance(DISTANCETOLERANCE);
      h# A- L1 o! M& l$ t
  24. ' P, z  @! ?( B! W( R
  25.                 projectCurveBuilder1->CurveFitData()->SetAngleTolerance(ANGLETOLERANCE);  s* M2 W/ m% |$ P; G8 X8 c
  26. % m: h& A  ^$ K/ o+ S) y+ M' D  `
  27.                 int size = (int)inputObjects.size();, G7 B9 l* T6 _' y% U9 |
  28.                 std::vector<IBaseCurve *> curves1;" j3 m7 N1 |; ]
  29.                 for (int ii = 0 ; ii < size; ++ii)" G0 c1 Q, Q& w
  30.                 {
    0 W# ?% b  C. O
  31.                         curves1.push_back(dynamic_cast<IBaseCurve*>(inputObjects[ii]));
    + M* q1 i  x# P8 `  Z) u' E0 W0 C
  32.                 }
      C  y8 J( k+ V5 F- E4 u; M7 z
  33. 0 b0 ^8 h: T$ F: n% H, w: O& e7 U! v
  34.                 NXOpen::CurveDumbRule *curveDumbRule1;
    5 L& `4 ]$ R$ X* L8 w
  35. . ~% h0 m: b) Y9 e6 \
  36.                 curveDumbRule1 = workPart->ScRuleFactory()->CreateRuleBaseCurveDumb(curves1);
    * b4 _: u4 v: |4 A9 k! f, F0 |

  37. 3 k& q( D+ d8 s# l' [
  38.                 projectCurveBuilder1->SectionToProject()->AllowSelfIntersection(true);
    " d; w+ c' k1 I1 v

  39. ; m# X% _1 G9 j0 W
  40.                 std::vector<SelectionIntentRule *> rules1(1);
    - z0 |$ F1 {' q' q) H3 B
  41.                 rules1[0] = curveDumbRule1;0 u9 V1 p2 ~; T' i1 J: x
  42.                 NXObject *nullNXObject(NULL);
    7 Q  f# @( G0 j$ S
  43.                 Point3d helpPoint1(0, 0, 0);
      f. ?' F7 q2 D- U/ i( @' N( M
  44.                 projectCurveBuilder1->SectionToProject()->AddToSection(rules1, nullNXObject, nullNXObject, nullNXObject, helpPoint1, Section::ModeCreate, false);4 t, y" M, A9 Y+ g
  45. - b4 W4 \/ _2 F! ^  f1 i$ S5 z/ x
  46.                 plane1->Evaluate();& K2 z$ H  z! }3 \
  47. # [3 K+ W- r: r, l- Z
  48.                 projectCurveBuilder1->SetPlaneToProjectTo(plane1);
    . z0 q4 x- G1 K2 \' |

  49. + @1 j: V* c$ [8 T9 l
  50.                 projectCurveBuilder1->SetGapOption(true);- V* s! [3 {7 t6 [7 A! d
  51. $ j* ~8 Y3 q" D5 l0 p" _6 |
  52.                 projectCurveBuilder1->CurveFitData()->SetCurveJoinMethod(GeometricUtilities::CurveFitData::JoinGeneral);8 S3 [; q: g/ T+ @0 d- I; ^7 I( X

  53.   b- J# v  [  v; O. \, G% A# h# ^
  54.                 NXObject *nXObject1;
    3 o4 P/ ?/ _* B9 j% F( [
  55.                 nXObject1 = projectCurveBuilder1->Commit();+ Q5 W7 {9 i: u% F
  56. & \* k( y" _7 i# U1 _, |
  57.                 projectCurveBuilder1->SectionToProject()->CleanMappingData();" ~) u4 S- O& d( W8 H0 |
  58. 7 z8 _+ e! I4 w$ X) b  |1 d1 Q+ Q
  59.                 projectCurveBuilder1->Destroy();
    : [5 ]* n/ g( ^" `: ~

  60. 3 a+ ]0 ^0 u+ ?, S9 D# N. u
  61.         }$ U4 ?8 {0 t) u) W
  62.         catch(exception& ex)
    0 o8 a' E! L" l# N( ?- B) B$ X
  63.         {* q( g3 U, k. W
  64.                 //---- Enter your exception handling code here -----, {: \' X+ }4 d8 A9 x: y
  65.                 errorCode = 1;
    8 p8 J( n/ F, N0 M; _/ W# n
  66.                 trimSteels::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeError, ex.what());9 F; t5 ^' v1 b( K$ Q1 @
  67.         }' a9 D# }9 ?  Y6 `  |; U

  68. 6 @- c/ q: k7 `0 V' U. s
  69.         return errorCode;
    ) `8 z) C' ?! |# ?
  70. }, E4 Z9 J, @: P5 z9 G
复制代码

1 v1 {6 _$ S" _0 ^: P4 _; K( m6 Q& ^) }

7 @4 z3 t( E# }
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 www.doteam.tech
回复

使用道具 举报

全部回复3

1

主题

7

回帖

37

积分

新手上路

积分
37
发表于 2014-5-15 17:18:05 | 显示全部楼层
创建完投影之后 如何能够获取投影曲线的指针呢?
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 www.doteam.tech
回复 支持 反对

使用道具 举报

1

主题

7

回帖

37

积分

新手上路

积分
37
发表于 2014-5-15 17:54:14 | 显示全部楼层
版主 我找到接口了
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 www.doteam.tech
回复 支持 反对

使用道具 举报

0

主题

13

回帖

56

积分

注册会员

积分
56
发表于 2019-4-25 18:47:55 | 显示全部楼层
学习了,高手
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 www.doteam.tech
回复 支持 反对

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 注册

返回列表 本版积分规则

  • 发布新帖

  • 在线客服

  • 微信

  • 客户端

  • 返回顶部

  • x
    温馨提示

    本网站(plmhome.com)为PLM之家工业软件学习官网站

    展示的视频材料全部免费,需要高清和特殊技术支持请联系 QQ: 939801026

    PLM之家NX CAM二次开发专题模块培训报名开始啦

    我知道了