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

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

  [复制链接]

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

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

PLM之家NX 楼主

2014-5-5 22:45:05

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

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

x
# w/ v$ {- Q7 Y+ o
6 F& B4 b, R% l* P: {) q

% m+ b) z7 m- T0 WUG NX二次开发源码分享: NX Open C++ 创建投影曲线 project curves
, A/ H9 C6 v) b6 o
  f6 b; `; d: T5 O此处使用的是 通过面的法向创建投影曲线,可以参考下!
( t3 Z2 ~. e7 _; |" F) s' d$ x
7 f' `3 \' t% ^2 H3 H/ w
6 ?2 e1 O  @: n4 B, x5 m- M& {6 `6 a$ ^& B3 f
2 N8 y0 Z. ~2 }& V1 z7 [! c  _( u

, i" n# b1 [" @, O) K# k5 U/ Z3 E9 P9 M

4 i1 [; Y& q1 w' Y6 `

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

 NX Open C++ 创建投影曲线 project curves
$ ~; U' M8 j8 c! z; ^4 l

7 X$ @2 ~6 y! H: [2 C
% \; @8 Y# o& u8 v7 S$ R6 T* l

  1. 6 A6 y$ h; K+ ?
  2. int trimSteels::project_curves(vector<TaggedObject *>inputObjects,Plane *plane1). |% K: @9 i' H3 e# i+ m8 ~* [2 e
  3. {) y  r, q7 b7 N) c) ?
  4.         int errorCode = 0;4 F& W# }: y) S6 o
  5.         try
    8 X6 {! h6 @; S. t  C. J+ U2 G
  6.         {6 W* p- }, x& c/ N; i4 O+ w
  7.                 // createProject curves2 M9 E2 ?$ F7 S; c. _/ m4 ^  i6 v

  8. % a! K7 x  H. W6 @: ?( X+ ]
  9.                 Features::Feature *nullFeatures_Feature(NULL);
    ' E- s/ {5 k# T7 K/ z

  10. * n) H; n' O/ e0 ^+ U' j
  11.                 Features::ProjecTCurveBuilder *projectCurveBuilder1;
    ( B; H$ a1 Q' f2 F

  12. 0 ~( {' A9 K; k' [
  13.                 projectCurveBuilder1 = workPart->Features()->CreateProjectCurveBuilder(nullFeatures_Feature);3 ?- e  Y8 z9 Y& d

  14. " i* W  Q: p) k3 k8 l+ Z
  15.                 projectCurveBuilder1->SectionToProject()->SetDistanceTolerance(DISTANCETOLERANCE);# X6 N+ b! z7 d. P1 c( ]
  16. ! \- h  i0 S/ X8 G; B8 I+ f
  17.                 projectCurveBuilder1->SectionToProject()->SetChainingTolerance(CHAININGTOLERANCE);
    ' E0 ~# g# h. s. P8 ^# j1 n' q. m

  18. , ~1 R! Q$ F6 j& h4 t
  19.                 projectCurveBuilder1->SectionToProject()->SetAngleTolerance(ANGLETOLERANCE);$ G+ F2 a- ?; ]/ p6 T$ L/ \7 O

  20. $ |. ]* [8 W% T7 h5 m" y8 a; d
  21.                 projectCurveBuilder1->SectionToProject()->SetAllowedEntityTypes(Section::AllowTypesOnlyCurves);/ ~5 d$ V2 i/ g& b& N
  22. 7 u" I0 X) w. O, V0 Y. g* }' o( u% ]
  23.                 projectCurveBuilder1->CurveFitData()->SetTolerance(DISTANCETOLERANCE);, B7 ?- P2 c4 H; e/ _# H" R( P7 S

  24. # ~. G# ]( m' N* M5 `1 Q- B( O
  25.                 projectCurveBuilder1->CurveFitData()->SetAngleTolerance(ANGLETOLERANCE);! l% J6 l' x3 k3 ~; W% U% w. G' t" |
  26. # E  \! y9 E' Q. j  n9 C$ j: |8 \* X3 T
  27.                 int size = (int)inputObjects.size();6 ?# H6 i, [! s4 K
  28.                 std::vector<IBaseCurve *> curves1;
    : S/ i4 b3 E0 W; K: q4 P
  29.                 for (int ii = 0 ; ii < size; ++ii)
    5 n0 K  }5 s$ l4 F2 z
  30.                 {
    ! e/ e7 y, v2 x7 @. E
  31.                         curves1.push_back(dynamic_cast<IBaseCurve*>(inputObjects[ii]));0 I! [4 O6 h$ R. J8 j
  32.                 }# m8 z) V$ U0 c9 }* ~% o
  33. - `( T% q) c0 u! K8 y
  34.                 NXOpen::CurveDumbRule *curveDumbRule1;
    / U, L, A$ j8 W

  35. 9 E1 j" a2 U3 O; ]) q: t
  36.                 curveDumbRule1 = workPart->ScRuleFactory()->CreateRuleBaseCurveDumb(curves1);" c2 @% h- {  p+ c! {! v! |  h
  37. 8 J$ V% R, y6 }; D
  38.                 projectCurveBuilder1->SectionToProject()->AllowSelfIntersection(true);6 ^- `1 n5 O, K& \" v
  39. % L9 M6 i$ B% s# o2 C( |
  40.                 std::vector<SelectionIntentRule *> rules1(1);
    ) V0 r, V+ c# j7 |; ^, l& }6 `0 ^
  41.                 rules1[0] = curveDumbRule1;
    % ^7 [6 J, W6 @  X1 n
  42.                 NXObject *nullNXObject(NULL);2 G* }  Q9 `/ Z/ _/ S
  43.                 Point3d helpPoint1(0, 0, 0);1 D9 g/ S# \' u# {5 G' T
  44.                 projectCurveBuilder1->SectionToProject()->AddToSection(rules1, nullNXObject, nullNXObject, nullNXObject, helpPoint1, Section::ModeCreate, false);
    ' q% l1 x4 C7 E/ @# p! P0 N

  45. % C* K1 S9 b, R$ E0 i
  46.                 plane1->Evaluate();! Z9 h, F* o% c7 B, k8 r

  47. 6 {( S' C: }8 V* {  g& k
  48.                 projectCurveBuilder1->SetPlaneToProjectTo(plane1);8 i0 {  K- M- z) k0 M
  49. / T( S8 n# X' |' @1 D3 ]
  50.                 projectCurveBuilder1->SetGapOption(true);+ V( h) q) V2 b5 j, \% _4 T

  51. & L$ Y( N5 z- I8 f, A4 N
  52.                 projectCurveBuilder1->CurveFitData()->SetCurveJoinMethod(GeometricUtilities::CurveFitData::JoinGeneral);: v$ R  r/ E/ \" e# n! ^+ T

  53. 9 p) T$ `; W5 e4 v6 T) L6 V' @6 n
  54.                 NXObject *nXObject1;
    " P/ R0 B9 p; N
  55.                 nXObject1 = projectCurveBuilder1->Commit();
    1 d5 \$ A7 v' h
  56. 6 Z9 F: L5 q+ t% k* w. a$ m
  57.                 projectCurveBuilder1->SectionToProject()->CleanMappingData();
    % O' ~) E; s; }
  58. # u0 ?- W; |& K3 |; b2 z
  59.                 projectCurveBuilder1->Destroy();' C; Z4 V+ w% G& F) [: I

  60. , {+ S( v4 H" N" I6 W% B
  61.         }
    * h# Q, U- z* }6 f1 K2 x* Q
  62.         catch(exception& ex)
    - b( |5 i+ _  C% c) W- S
  63.         {
    5 \/ f2 k% t: O' y/ C+ M8 s' c
  64.                 //---- Enter your exception handling code here -----
    5 u; W2 a5 T3 O; `& t
  65.                 errorCode = 1;
    , i" s! R) V0 |/ n# N/ h
  66.                 trimSteels::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeError, ex.what());$ P/ x7 I* }2 @3 g
  67.         }  n4 M/ J( J" T8 ~

  68. 7 J2 i" n- B1 m* b% |
  69.         return errorCode;
    ( @; p/ ?  X7 t0 n5 Z4 d1 \
  70. }+ A/ ^' @+ Q% }( N+ ^
复制代码

6 q( j% G( w# ]: [' K, u$ N3 j
( C: x6 g8 s) v. R4 J* N! ^0 F  B6 g  V, i& ^
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了