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

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

  [复制链接]

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

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

PLM之家NX 楼主

2014-5-5 22:45:05

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

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

x

+ q' f5 v6 s: w; x
: P0 S9 F0 W3 X2 E, E" ?8 U8 ?6 V5 k, ?
UG NX二次开发源码分享: NX Open C++ 创建投影曲线 project curves
" X$ H$ Z5 s; T1 |/ {8 V
6 P9 a$ q  R  d# G( x! c, a4 c此处使用的是 通过面的法向创建投影曲线,可以参考下!
/ w* d/ n, A; P. W
4 k# t& u. ^- _9 P$ O
6 C- o* O5 z% v' g
* O9 I. \2 o4 }; ]
$ n9 ]; d) z+ \% @  S8 k  S3 U' [: P; ^

+ o+ A% M% u% m! n9 g7 R4 h" {& D

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

 NX Open C++ 创建投影曲线 project curves
% b4 n- m5 u/ {9 l. F
  s' f3 V' V) i# F, {2 J1 b5 v
  Y1 b# A  Z! \  i* a5 S2 j' I% U
  1. % M- b# d0 _9 M! l3 d  q
  2. int trimSteels::project_curves(vector<TaggedObject *>inputObjects,Plane *plane1)
    * E5 G9 l1 W% {
  3. {
    * G: z0 S  n: C: x
  4.         int errorCode = 0;
    & _$ c- K3 e. f4 W0 C( D
  5.         try
    7 U" |/ w% V" d6 G
  6.         {! n, [  w; ]+ c2 _0 R
  7.                 // createProject curves
    * o1 o  x( X" G
  8. 6 |  z$ X" Q: G  \& d1 n0 q
  9.                 Features::Feature *nullFeatures_Feature(NULL);5 U: Q, f+ G  m6 B+ }1 Q
  10. 3 Y! Y5 N" I5 `$ m8 [/ {
  11.                 Features::ProjecTCurveBuilder *projectCurveBuilder1;
    / C0 u* P2 g4 ^" l# B/ [
  12. , g) [! k8 ?  u5 K) J  s0 J& x
  13.                 projectCurveBuilder1 = workPart->Features()->CreateProjectCurveBuilder(nullFeatures_Feature);5 a& K+ Y# \! R3 {

  14. ' G" E5 n5 a$ c. V5 X
  15.                 projectCurveBuilder1->SectionToProject()->SetDistanceTolerance(DISTANCETOLERANCE);
    # G( Y. g. i; T9 e. j1 b( X

  16. 2 ?/ l* y  x3 _5 B  @7 P1 f' f
  17.                 projectCurveBuilder1->SectionToProject()->SetChainingTolerance(CHAININGTOLERANCE);- B2 L9 J% |% D) C' T

  18. & p& M7 n% C3 w# d, u. S" l
  19.                 projectCurveBuilder1->SectionToProject()->SetAngleTolerance(ANGLETOLERANCE);
    % @7 O1 F1 G/ M( K, \+ j

  20. " _% I8 ^7 I/ K( H4 N
  21.                 projectCurveBuilder1->SectionToProject()->SetAllowedEntityTypes(Section::AllowTypesOnlyCurves);- X5 w! i5 x4 b% S2 d
  22. 9 ]/ A1 M  a! k& E8 _) K4 b, G$ m
  23.                 projectCurveBuilder1->CurveFitData()->SetTolerance(DISTANCETOLERANCE);
    8 t: R0 o# R' @
  24. ! R" i6 y; W2 j
  25.                 projectCurveBuilder1->CurveFitData()->SetAngleTolerance(ANGLETOLERANCE);
    ! {9 p) p* F, y8 y9 _" A. G+ Y

  26. 2 ]  k& Y+ h) s' K# u
  27.                 int size = (int)inputObjects.size();
    4 X6 C$ q- e: H- m' i/ d% V
  28.                 std::vector<IBaseCurve *> curves1;
    " i* `- h( y5 [' t- H7 Q, c
  29.                 for (int ii = 0 ; ii < size; ++ii)6 [! F0 l3 L0 r, z7 a8 A
  30.                 {4 t" P" q' J& r' k
  31.                         curves1.push_back(dynamic_cast<IBaseCurve*>(inputObjects[ii]));
    1 |, j; x: e3 M8 T6 [- x
  32.                 }" c4 ?9 A% X% |+ ]  _9 I3 Z# Z+ N; E

  33. 0 O% |5 N' u8 V  x1 K
  34.                 NXOpen::CurveDumbRule *curveDumbRule1;
    2 z# l( A+ q. h
  35. : Y: H. a5 v$ ^0 Q/ P) J2 C
  36.                 curveDumbRule1 = workPart->ScRuleFactory()->CreateRuleBaseCurveDumb(curves1);
    0 i* T  a5 l  }) }

  37. " O! \3 p( ]) Z3 k
  38.                 projectCurveBuilder1->SectionToProject()->AllowSelfIntersection(true);9 l& \- I# S3 [7 n: y6 |8 I0 b

  39. - J* R* N1 R$ O% T& u. }' `
  40.                 std::vector<SelectionIntentRule *> rules1(1);
    " R- V2 b; j1 @; n" e
  41.                 rules1[0] = curveDumbRule1;
    ) N, J# c7 M3 d* h' N; P7 C
  42.                 NXObject *nullNXObject(NULL);
    & A/ k# S+ |, f6 a( }: m# ~; r
  43.                 Point3d helpPoint1(0, 0, 0);. ?( h+ E1 u7 u/ J6 p% @! G4 ?
  44.                 projectCurveBuilder1->SectionToProject()->AddToSection(rules1, nullNXObject, nullNXObject, nullNXObject, helpPoint1, Section::ModeCreate, false);& l, R* x' \1 T& ~4 O! v0 {

  45. 7 s+ @3 X& o0 V) J* ^! H, h* C
  46.                 plane1->Evaluate();
    / T& w0 T  T% u2 W( D+ a+ @5 |
  47. / R# u' R1 \5 Y; |" O) E
  48.                 projectCurveBuilder1->SetPlaneToProjectTo(plane1);. C: K/ E. c2 X) |9 m9 U
  49. 3 Q8 r* U& F) m4 j
  50.                 projectCurveBuilder1->SetGapOption(true);
    # y: n% T0 b1 {; R; P  N: f3 ]  a6 \
  51. 1 C6 s0 N+ D3 f8 Q9 n4 V+ V
  52.                 projectCurveBuilder1->CurveFitData()->SetCurveJoinMethod(GeometricUtilities::CurveFitData::JoinGeneral);9 c. A* ?$ k# ^3 B

  53. 5 `& d# k8 c. c2 f% y
  54.                 NXObject *nXObject1;, D$ C, b! s1 s8 L
  55.                 nXObject1 = projectCurveBuilder1->Commit();
    ) V0 w" G( v8 u& E: |4 z4 s" ]

  56. ; h* z# [5 Y" p! o+ S4 E6 j/ ~2 D
  57.                 projectCurveBuilder1->SectionToProject()->CleanMappingData();
    3 j& y; V) C$ W+ d  V8 d' H' e
  58. & H7 c. v, F6 X( u: D' ~
  59.                 projectCurveBuilder1->Destroy();
      p! A6 z" i2 t/ |; [, T/ r
  60. % U" t9 o! a  k
  61.         }
    , s; w2 P4 S. U* U
  62.         catch(exception& ex)
    2 }9 k1 S! H5 \- t
  63.         {
    9 H9 E6 w% c" ^3 _2 j
  64.                 //---- Enter your exception handling code here -----
    4 e# k% r6 S9 P+ q6 M% W; ^7 ?
  65.                 errorCode = 1;
    ' E! |  S6 b  c- i) H
  66.                 trimSteels::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeError, ex.what());' k9 J$ K- l$ q  O9 Y
  67.         }
    ) `! v0 ~5 c. ]- \5 H2 |. p

  68.   p  a" Q5 [; w  S% S
  69.         return errorCode;
    3 V% D/ u. p) s! H& L; Z" }: _
  70. }
    2 O! A/ X7 c' I) e
复制代码
% G1 t6 v7 }4 `& _, i8 @1 u. p- a6 o

, S6 m( E' {3 D5 \3 t7 P/ Y) [6 g+ ^: n7 s% `3 M8 X3 g/ h, X7 q
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了