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

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

  [复制链接]

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

16

主题

5

回帖

188

积分

注册会员

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

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

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

x

, w  a1 z$ n" N( \. ~2 a0 ?# J6 ^- l3 m2 F' @, ~7 M$ Y
, p! P9 \7 P% z$ X) }* m
UG NX二次开发源码分享: NX Open C++ 创建投影曲线 project curves
$ ?' ^/ Q) ^' W( y5 G, A
  x% c* N. o; Q此处使用的是 通过面的法向创建投影曲线,可以参考下!
+ k8 G+ F; m) H2 p) d+ Q1 |* K
6 ^! C9 e+ Z2 n  i
; M9 ~7 m6 B) ^! J# s* D/ O% Y, p- A

1 }  z: x4 [& a2 C' w8 I! h) T, f3 E/ n7 T% K

9 n! X0 O" J9 a# L+ i/ i+ k. R( a  i/ v+ q# U" t& w, j

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

 NX Open C++ 创建投影曲线 project curves
0 Y6 C* A: x. Q7 i2 p# o
* D1 b5 n5 K0 a* v4 S% f

, u, q/ Z! |* u: C

  1. % T! j* {5 ]7 O6 S7 a: `$ q
  2. int trimSteels::project_curves(vector<TaggedObject *>inputObjects,Plane *plane1)  u3 k; Q* o9 R2 j
  3. {
    & U& I. @: F8 u1 f! S0 x
  4.         int errorCode = 0;: f  a/ x6 h" p, N6 H/ ?) |
  5.         try: {4 c$ m$ s. Z) _9 c
  6.         {  N$ a' A# e" L$ Q- W
  7.                 // createProject curves: f( u, i3 ?- \( ^' O
  8. ' S0 H9 K/ ?5 U
  9.                 Features::Feature *nullFeatures_Feature(NULL);7 ~  M: S' P2 N1 G1 u
  10. ; U: c  K- W( X
  11.                 Features::ProjecTCurveBuilder *projectCurveBuilder1;
    $ f* R; E& J0 r, v0 G* F" T" j& D

  12. . b5 Q' t. X7 v0 S! |
  13.                 projectCurveBuilder1 = workPart->Features()->CreateProjectCurveBuilder(nullFeatures_Feature);
    & _! u2 Z' A( Y/ u+ e
  14. 3 P6 N7 t7 W: ~7 p! _; j
  15.                 projectCurveBuilder1->SectionToProject()->SetDistanceTolerance(DISTANCETOLERANCE);  E7 T1 F6 B4 V
  16. - f8 Y6 @) h2 w5 ^! x, \' D0 B
  17.                 projectCurveBuilder1->SectionToProject()->SetChainingTolerance(CHAININGTOLERANCE);
    + I5 Y% l# s7 o# t7 T) C, b4 E

  18. 2 i; f" l: }* e8 e# ~
  19.                 projectCurveBuilder1->SectionToProject()->SetAngleTolerance(ANGLETOLERANCE);* ?9 a8 Z6 `6 q6 v9 k; M( J  x8 r

  20. 0 V: }+ x  c& l; \0 y) j4 G' j
  21.                 projectCurveBuilder1->SectionToProject()->SetAllowedEntityTypes(Section::AllowTypesOnlyCurves);) k3 P0 G: V6 V* a; s) ?# J

  22. ; p! f  T; l+ K% k/ M1 B
  23.                 projectCurveBuilder1->CurveFitData()->SetTolerance(DISTANCETOLERANCE);
    3 N: e' |, W( B
  24. " s6 y8 y1 P3 `% F  O' C
  25.                 projectCurveBuilder1->CurveFitData()->SetAngleTolerance(ANGLETOLERANCE);
    5 `) l# \: S; r/ \

  26. / u, j6 {6 j3 |4 c; s
  27.                 int size = (int)inputObjects.size();
    , ?- a# ~9 F; j5 B5 I
  28.                 std::vector<IBaseCurve *> curves1;
    9 v# o3 E6 H9 L- N" t( C
  29.                 for (int ii = 0 ; ii < size; ++ii). ]/ H" J2 ~& n  _* C" f. n; Y- c
  30.                 {$ n2 n8 j& ]: r) }' V, N0 C, V! e
  31.                         curves1.push_back(dynamic_cast<IBaseCurve*>(inputObjects[ii]));" @& u1 U* w; j$ E# C) J- c
  32.                 }- V& E1 O. E  W: \2 t8 b

  33. * J/ C  E. U! V, J* y
  34.                 NXOpen::CurveDumbRule *curveDumbRule1;) }; I% N3 l' s# |$ d: l6 x

  35. , X  Z- `3 M  v  r9 N0 C
  36.                 curveDumbRule1 = workPart->ScRuleFactory()->CreateRuleBaseCurveDumb(curves1);
    . F5 X4 K/ b3 |& t% Q
  37. 8 Z$ ^' P  K# I  T9 v
  38.                 projectCurveBuilder1->SectionToProject()->AllowSelfIntersection(true);
    $ l0 f) B! g# q2 W7 m9 n
  39. 3 C7 x, m+ Y1 W! R5 l$ L$ ^
  40.                 std::vector<SelectionIntentRule *> rules1(1);
    ) g: `2 L+ w! |! X
  41.                 rules1[0] = curveDumbRule1;
    % u& P4 J& K# K
  42.                 NXObject *nullNXObject(NULL);
    ! a: I- m+ ~# T2 _+ h* P" v5 `
  43.                 Point3d helpPoint1(0, 0, 0);
    4 @9 C  k: f& f# W" H
  44.                 projectCurveBuilder1->SectionToProject()->AddToSection(rules1, nullNXObject, nullNXObject, nullNXObject, helpPoint1, Section::ModeCreate, false);
    ' |2 @: ]& d9 I! W/ C" m2 v
  45. 6 }0 @8 ?4 F; y: G$ j0 C( K
  46.                 plane1->Evaluate();
    ) U) o% |. a7 a# c8 _

  47. 3 c4 [, s: M# w
  48.                 projectCurveBuilder1->SetPlaneToProjectTo(plane1);
    3 R: @% X7 g0 o
  49. 6 n' K4 Q% w: X$ x  y# s
  50.                 projectCurveBuilder1->SetGapOption(true);
    5 p, N2 o4 R2 R  |9 a6 _
  51. 1 M  _$ u1 j9 _1 o- T4 ^
  52.                 projectCurveBuilder1->CurveFitData()->SetCurveJoinMethod(GeometricUtilities::CurveFitData::JoinGeneral);
    & e5 ?6 D6 ^/ O4 @- V" H2 T
  53. ; C: L; t: W6 Q/ P# Z. U7 n2 |
  54.                 NXObject *nXObject1;
    ! A% x: W6 ]- U" {6 @4 P  p
  55.                 nXObject1 = projectCurveBuilder1->Commit();
    : B1 R! t7 l8 ?8 e! o2 I# @. P

  56. - _" k# e: J) W; O0 d
  57.                 projectCurveBuilder1->SectionToProject()->CleanMappingData();
    ' R5 d3 z3 j# f# F6 p- J7 k

  58. " [5 K; c: ?4 R5 Z% N3 B- g
  59.                 projectCurveBuilder1->Destroy();
    4 v- L5 i, B0 ^& q  `, ?

  60. 3 ?# Z1 C& x1 D  E0 z( C
  61.         }0 H* J6 h" ^- a& q* e+ B9 J0 w
  62.         catch(exception& ex)
    ; H2 }5 o3 q5 Y9 q- Z
  63.         {
    2 J" v6 q9 F5 Q" `4 d1 o/ P3 c
  64.                 //---- Enter your exception handling code here ------ D; p- b' @, G  A
  65.                 errorCode = 1;  y) }- D9 E; k" Z: [
  66.                 trimSteels::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeError, ex.what());
    ! u3 p- K0 H, u- g) D! H! h
  67.         }
    1 ~4 {+ n6 {8 r& ?& e0 g) C
  68. 3 M8 W, l8 R- k2 P) q( A3 p
  69.         return errorCode;; `- F: I/ ~* v4 L
  70. }
    5 T+ `0 n0 Q0 @* k9 `$ E7 }2 |
复制代码
4 g( Z; g3 E9 Y# _. o/ m

6 q8 y9 g( D. P1 F3 T
% {2 z6 P1 s6 x4 b
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了