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

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

  [复制链接]

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

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

PLM之家NX 楼主

2014-5-5 22:45:05

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

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

x

" Y- y2 \' ?& S3 |" C
1 E/ \) N& |! P2 K. [
. _" K+ r2 M' h; F0 lUG NX二次开发源码分享: NX Open C++ 创建投影曲线 project curves4 k9 e6 u4 [6 [# w& N* ^3 m5 V3 m

) x9 h' z- H" ~, D& Z此处使用的是 通过面的法向创建投影曲线,可以参考下!0 _! c8 C5 O/ J$ S4 {' o: z; ?
0 c5 s: Y: f6 L/ ~. R; P/ `
" P, L  R- [& p3 S& C

/ n7 ~/ X, Z$ j  z
6 t4 I! U4 k) Y; c+ G& w8 u- J6 ^/ a; u1 ?- i2 a. `  u1 Z- F
5 P7 u+ X1 I3 x' d

9 T3 \( k; S! E8 O  h- z% @

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

 NX Open C++ 创建投影曲线 project curves
: G! Q* b& o, Z# ?+ s1 ^+ B4 R
& ]. N  T; W, s: _

: ~$ C) @# d* v  H% v
  1. / R8 c! r/ _' [4 {" Q
  2. int trimSteels::project_curves(vector<TaggedObject *>inputObjects,Plane *plane1)
    ' Q+ P" K# m; [
  3. {
    7 ^& U- s. N' t
  4.         int errorCode = 0;
    2 C9 ^( n) {9 G0 v2 @9 Z) h
  5.         try9 O* z8 B0 l  l
  6.         {
    7 w* C+ n" K9 t( {
  7.                 // createProject curves
    . \8 P+ }, ?5 N2 S2 h! U. j
  8. : H* e: _  M# i' r8 `7 I& W" u% O
  9.                 Features::Feature *nullFeatures_Feature(NULL);' p7 ^9 J% ?7 A: H

  10. 4 F3 I$ z0 b8 m0 W" G% i
  11.                 Features::ProjecTCurveBuilder *projectCurveBuilder1;( d9 t2 P* e1 S5 V  H5 C$ u' w6 f
  12. ! H! s4 F9 D+ }" W# A2 I! E
  13.                 projectCurveBuilder1 = workPart->Features()->CreateProjectCurveBuilder(nullFeatures_Feature);9 A8 F6 g& c+ t# E4 q

  14.   x$ K# [" S9 r. |$ W/ k
  15.                 projectCurveBuilder1->SectionToProject()->SetDistanceTolerance(DISTANCETOLERANCE);, B* R/ z! p3 T+ i& R
  16. : V  U7 z6 r# a( n. C4 o/ M  [  `
  17.                 projectCurveBuilder1->SectionToProject()->SetChainingTolerance(CHAININGTOLERANCE);
    * z3 L  C$ B& D# G, F) e% V2 C9 }

  18. 4 c0 b8 |$ ^4 G0 K; q9 t8 G
  19.                 projectCurveBuilder1->SectionToProject()->SetAngleTolerance(ANGLETOLERANCE);
    # d+ I2 x1 t% Z4 W3 D2 u, V* d

  20.   K: x# p! R9 p+ w. }( ?+ k& A, Y
  21.                 projectCurveBuilder1->SectionToProject()->SetAllowedEntityTypes(Section::AllowTypesOnlyCurves);
    2 y- J8 n: `# \- O8 _2 o3 B

  22. * x3 t5 W, F# u6 ]! s9 O
  23.                 projectCurveBuilder1->CurveFitData()->SetTolerance(DISTANCETOLERANCE);1 m- f& c- l( b8 Y, O1 H
  24. / ~% P6 T8 m* I
  25.                 projectCurveBuilder1->CurveFitData()->SetAngleTolerance(ANGLETOLERANCE);
    2 M/ s% ^* G" R/ `0 o

  26. $ S4 o$ k! P; p/ h# @
  27.                 int size = (int)inputObjects.size();! G/ W) c9 Z) n7 D( t  G
  28.                 std::vector<IBaseCurve *> curves1;
    3 a; e; [+ w  ^5 X6 x0 O4 u
  29.                 for (int ii = 0 ; ii < size; ++ii)
    ) q5 ~, ]- n' ]  C( L) H4 y4 Q6 |' ~+ M
  30.                 {
    3 q( V9 k+ V5 ~2 _- x- J- f# r! v
  31.                         curves1.push_back(dynamic_cast<IBaseCurve*>(inputObjects[ii]));
    ; R' o. F1 I6 O$ h% }
  32.                 }
      x* V# ]; f5 o8 S/ ?6 X1 n
  33. % V0 `& V& @6 F' g* M
  34.                 NXOpen::CurveDumbRule *curveDumbRule1;4 h* D  J1 _; o# i: f/ H. V& q/ n
  35. * M/ I$ H; t9 {9 _0 n: R' h$ W
  36.                 curveDumbRule1 = workPart->ScRuleFactory()->CreateRuleBaseCurveDumb(curves1);9 W2 X" N+ N. \1 H# C9 O: n
  37. ' ]! M7 Y6 G; T! v- z. A
  38.                 projectCurveBuilder1->SectionToProject()->AllowSelfIntersection(true);4 ^& I$ U' B( u( @3 ]: I! C

  39. 5 v  J& E. q! K# n+ X* S/ Q
  40.                 std::vector<SelectionIntentRule *> rules1(1);
      r% R" \" a3 r
  41.                 rules1[0] = curveDumbRule1;
    $ Z# @/ \% v" w  j
  42.                 NXObject *nullNXObject(NULL);5 K7 A+ g: `9 l8 I
  43.                 Point3d helpPoint1(0, 0, 0);, F& L  c; F' W4 C
  44.                 projectCurveBuilder1->SectionToProject()->AddToSection(rules1, nullNXObject, nullNXObject, nullNXObject, helpPoint1, Section::ModeCreate, false);
    $ Z/ f' t2 X0 z' Y2 ~( K

  45. 4 {, }& T2 A1 r' l5 j
  46.                 plane1->Evaluate();- p! U( z% G7 J  ?7 @5 U$ j5 S9 W

  47. 3 Q* H0 _0 t  r! q; z
  48.                 projectCurveBuilder1->SetPlaneToProjectTo(plane1);
    5 C4 R7 ]7 r5 V; A- N

  49. ; m% z+ [& {& O9 ]& A* [  X
  50.                 projectCurveBuilder1->SetGapOption(true);
    * T& V: Q0 |5 D7 ~9 E

  51. - I' w& b' i3 [! j: [1 c
  52.                 projectCurveBuilder1->CurveFitData()->SetCurveJoinMethod(GeometricUtilities::CurveFitData::JoinGeneral);. v3 Z0 d4 c. j4 A. `! f& F
  53. ; r$ i# G& c; C' ^4 D
  54.                 NXObject *nXObject1;
    : }& ^' B0 b+ X- v
  55.                 nXObject1 = projectCurveBuilder1->Commit();
    ! J6 {% s( g3 z; n- Q4 l1 j

  56. 0 l) D4 f: L* `, A" N9 U) X9 j
  57.                 projectCurveBuilder1->SectionToProject()->CleanMappingData();
    + }! c( J* _! z' ]1 n

  58. ( u4 W8 H, B) N: Y
  59.                 projectCurveBuilder1->Destroy();
    ; h$ r$ r! b  Y0 I8 s

  60. , X! Q3 r& m; O) ]
  61.         }
    1 B4 p3 [+ j3 T, [( b) v
  62.         catch(exception& ex)
    : Q4 l  x* x  `" B
  63.         {
    6 Y8 r2 Y4 a  S! o) z3 _
  64.                 //---- Enter your exception handling code here -----
      U2 b( S# Q- ~# ~6 f
  65.                 errorCode = 1;3 o9 t# q6 |; \8 n. q  c
  66.                 trimSteels::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeError, ex.what());
    8 R8 b  P& p- M9 f0 {( r
  67.         }8 Z2 R8 Z# z' n" r) c

  68. 9 a. }; D# a+ n* i! Y1 V
  69.         return errorCode;* Z4 H. S6 r  U' y8 s" L% `" `
  70. }
    + Z# o0 J$ S' H; ]$ H: x2 h- x
复制代码

$ y# z/ a: @5 }+ {5 y
6 y8 ~2 Q1 O# [5 s4 \0 A6 A6 v6 _" @& b# s! s. |: D7 |# l
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了