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

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

  [复制链接]

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

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

PLM之家NX 楼主

2014-5-5 22:45:05

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

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

x

/ U, [* e, C, @1 C7 }
( k9 K  I4 |2 I4 ~3 k  j/ y7 E* v9 _/ p7 y
UG NX二次开发源码分享: NX Open C++ 创建投影曲线 project curves9 ?+ i, J3 x& _1 \1 z6 O
1 W* B% A, ^' \( O6 G3 z
此处使用的是 通过面的法向创建投影曲线,可以参考下!4 }5 I( \8 f6 X" A

- K0 \. ~/ q. K+ }" x
9 m# Q/ ?) D5 w2 \- b. C( ?. P: e0 _; H$ ~* S! b3 e% I5 Y# ?  S$ W

5 b. q- g9 |6 H% {; G1 S% s9 h: Z) ]5 n% l

* v' _* w" t- H) K) I; z1 C
( m3 Y, m4 X- `0 {: c% f

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

 NX Open C++ 创建投影曲线 project curves
4 `4 h: C  P+ t& c5 ?! S
$ l( Q$ \$ U5 R9 f) T, R
& Q2 r! ^# l/ m
  1. * q! @$ j9 P" Q+ s0 a/ }+ j
  2. int trimSteels::project_curves(vector<TaggedObject *>inputObjects,Plane *plane1)
    + p! R2 g+ Z- u( n, i7 z
  3. {) u+ S+ S/ l) O( w- O+ |
  4.         int errorCode = 0;
    ( Y2 V& w3 }, T  B/ v
  5.         try" |. n3 |, j/ |/ V/ H4 l
  6.         {
    . _) n# s- U. e" g2 ]
  7.                 // createProject curves! y: U- l; u0 v9 q4 b# r! T

  8. ; f$ w* A/ {* @1 }7 D
  9.                 Features::Feature *nullFeatures_Feature(NULL);
    ! B& N2 E3 s8 g1 X0 L$ R

  10. & X% h3 ~+ z' u
  11.                 Features::ProjecTCurveBuilder *projectCurveBuilder1;
    1 S6 b; @; o! _% \& r. E: X- f
  12. ) [4 s+ Y2 w* w; a1 g( b/ o  A
  13.                 projectCurveBuilder1 = workPart->Features()->CreateProjectCurveBuilder(nullFeatures_Feature);
    3 g4 G1 q; U, a

  14. ) e3 e8 C) b  m" x  O. O3 [+ B3 W: ~: C
  15.                 projectCurveBuilder1->SectionToProject()->SetDistanceTolerance(DISTANCETOLERANCE);
    8 o+ s1 N- i/ f, ?  f4 @* t
  16. 6 ?: o0 i3 s. P1 a  p, q0 ?
  17.                 projectCurveBuilder1->SectionToProject()->SetChainingTolerance(CHAININGTOLERANCE);/ N  Z* _6 T" }! Y% ~" o1 R. b! L$ @

  18. 5 v7 R% y# [: C! M3 u% i. a
  19.                 projectCurveBuilder1->SectionToProject()->SetAngleTolerance(ANGLETOLERANCE);
    ' A$ u9 n# B" j0 R; t8 _2 N

  20. $ \8 s+ B0 `9 l9 m, Z  }
  21.                 projectCurveBuilder1->SectionToProject()->SetAllowedEntityTypes(Section::AllowTypesOnlyCurves);2 X* K6 }/ C( V7 Q% O& F+ R$ C

  22.   O$ c; I  `' G% x
  23.                 projectCurveBuilder1->CurveFitData()->SetTolerance(DISTANCETOLERANCE);
    ) J) b/ t8 f1 G" R
  24. ) p, S5 x- X% |! k+ C% W
  25.                 projectCurveBuilder1->CurveFitData()->SetAngleTolerance(ANGLETOLERANCE);
    + @' G, M8 Y9 `& f2 u7 v
  26. * L& d. P- I; M" x" K
  27.                 int size = (int)inputObjects.size();
    4 s6 i4 ^: \7 P7 t5 ?
  28.                 std::vector<IBaseCurve *> curves1;1 q4 r2 X! W# v, R! k1 {$ W
  29.                 for (int ii = 0 ; ii < size; ++ii)' k$ j$ d1 ~) E; y( g" D
  30.                 {
    5 T$ t, _/ d5 t) k
  31.                         curves1.push_back(dynamic_cast<IBaseCurve*>(inputObjects[ii]));9 A4 y1 ~& G1 S; O
  32.                 }* _: s, ]! w# D

  33. : f' F# u0 O) [# g4 t- ]' l5 ~
  34.                 NXOpen::CurveDumbRule *curveDumbRule1;
    % N3 X- P9 n. }3 _. U  ]

  35. / T& l. L5 x6 Y
  36.                 curveDumbRule1 = workPart->ScRuleFactory()->CreateRuleBaseCurveDumb(curves1);& O% m* J# |, D5 @+ N
  37. ; B5 ?' [) f/ W4 c5 R
  38.                 projectCurveBuilder1->SectionToProject()->AllowSelfIntersection(true);6 I0 n$ K: A6 ?0 g1 K
  39. - f& c/ d, `: M( ?
  40.                 std::vector<SelectionIntentRule *> rules1(1);
    1 k2 @/ c0 q3 Z1 F* P, |1 v! j
  41.                 rules1[0] = curveDumbRule1;
    # V- R6 A  w: y1 }; z7 S
  42.                 NXObject *nullNXObject(NULL);, g6 e* d1 Y' j  U1 l0 F6 k: q
  43.                 Point3d helpPoint1(0, 0, 0);
    ; z  H$ W9 y; |* B) ~8 B4 s& V. y
  44.                 projectCurveBuilder1->SectionToProject()->AddToSection(rules1, nullNXObject, nullNXObject, nullNXObject, helpPoint1, Section::ModeCreate, false);
    3 H7 O: x: W4 ?$ L  t5 K/ g4 S0 _9 D
  45. 7 ]$ R" h# g( ^6 U9 G- s1 {
  46.                 plane1->Evaluate();. b) y* h4 y6 I5 r
  47. / W% t2 G. B7 }4 ~- G- ]
  48.                 projectCurveBuilder1->SetPlaneToProjectTo(plane1);
    5 Y  d! G' t0 |  |

  49. - i0 D0 j( D6 M, G% Q
  50.                 projectCurveBuilder1->SetGapOption(true);
    ) j* M- F9 T* f" D/ g+ @
  51. 8 c- h1 |: y8 q6 f3 p
  52.                 projectCurveBuilder1->CurveFitData()->SetCurveJoinMethod(GeometricUtilities::CurveFitData::JoinGeneral);
    % C1 |' y% J4 K! {

  53. " `# e  J9 L0 k5 B6 ^( S7 E4 T
  54.                 NXObject *nXObject1;
    - i) M6 ~6 V0 o; ?$ a# v
  55.                 nXObject1 = projectCurveBuilder1->Commit();
    ' g& n. M3 K' H4 I

  56. 5 x- W1 C& U! ~% a* D* ]& r
  57.                 projectCurveBuilder1->SectionToProject()->CleanMappingData();
    # A9 h1 h* w& O/ d

  58. % t6 w2 j& ^8 ]. M" f0 }$ o+ s; `
  59.                 projectCurveBuilder1->Destroy();" @: ^0 E- N  ^9 Q7 \. C

  60. # U3 F* S% ^- h. W- b& O" e
  61.         }
    + G" O1 @8 J% B* o
  62.         catch(exception& ex), V$ ~4 q: j* C. c
  63.         {; V. B4 Z! l8 L2 g& z: I/ l
  64.                 //---- Enter your exception handling code here ------ Y4 {( ~6 g5 Y  q8 F0 r/ S% M. m
  65.                 errorCode = 1;
    . [% D1 h' q: v. J; e1 a5 z$ V
  66.                 trimSteels::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeError, ex.what());% [3 P2 V: k. x
  67.         }) ^0 ^( v( E9 j( E

  68. / o8 ]2 F3 j# F% e- O9 a
  69.         return errorCode;4 R. f' S6 v: \$ `3 ]# b% m
  70. }
    & v! r9 P% W- c
复制代码
' S7 J3 P8 N" V. s

' Q* m! q; q3 |' u+ }; s& [: R2 l8 Y$ [9 ^. K# }" |8 K! a
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了