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

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

  [复制链接]

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

16

主题

5

回帖

188

积分

注册会员

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

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

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

x

- Y+ }2 F" g; {  A
, u5 m- c: ~* C! f6 E' E
2 t; Z' o  L1 ?& RUG NX二次开发源码分享: NX Open C++ 创建投影曲线 project curves( i' I; T' D( c# O7 `
1 a( V) B7 X0 q5 ?9 {+ S( k
此处使用的是 通过面的法向创建投影曲线,可以参考下!
- o! Y% |+ u: J4 }4 G
7 H. X1 _4 _  u1 Y( v+ m- F. R" A( v  S5 Z3 D

/ a- r. M: g9 r& B# q( c) Z$ `3 V, W8 v  G/ C
) |# F( \/ L3 d# Y) {# z7 w. \

, q6 x3 V# t, j0 X; x
7 q' N9 U) {7 D! }9 \1 W5 y

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

 NX Open C++ 创建投影曲线 project curves
4 p& g7 n- q% ]3 Y  E+ x

" l* b, u' a, m6 C5 \! Q& n% e; I2 t7 C

  1. . J9 k* e1 j* m, i
  2. int trimSteels::project_curves(vector<TaggedObject *>inputObjects,Plane *plane1)
    0 E9 n/ y" s* r5 x1 ^% M
  3. {
    & f6 r. J9 M0 X% g, t6 ]9 l
  4.         int errorCode = 0;
    4 u0 I. X; i, S9 m) k+ E0 q
  5.         try
    + u7 B: B! \4 P6 m4 f
  6.         {
    / z! h4 B1 N( b, D
  7.                 // createProject curves* n; y, P4 u" s: w' X8 ?4 G& J: \
  8. 1 c( l& J$ I# u9 g4 @# F3 x
  9.                 Features::Feature *nullFeatures_Feature(NULL);
    / J$ g% l$ M4 w' ^& o+ X! j( w

  10. . f3 B8 [7 f* t5 i" m
  11.                 Features::ProjecTCurveBuilder *projectCurveBuilder1;. Y! ?; o+ D8 W3 ]4 X5 ^, o" W5 x
  12. ; k0 r, {7 i/ _5 x9 N
  13.                 projectCurveBuilder1 = workPart->Features()->CreateProjectCurveBuilder(nullFeatures_Feature);) v' ~1 `) ]3 Q2 N4 ~& `

  14.   X* {& P, u" y8 Q* q' b3 Z2 c
  15.                 projectCurveBuilder1->SectionToProject()->SetDistanceTolerance(DISTANCETOLERANCE);
    ) S& [; f! x  t" F& z' G; o7 e
  16. 6 u8 f, `/ D* R4 h
  17.                 projectCurveBuilder1->SectionToProject()->SetChainingTolerance(CHAININGTOLERANCE);  I, L3 o: [/ g$ |4 U

  18. + [' y" N" C; \1 Q" X, Y
  19.                 projectCurveBuilder1->SectionToProject()->SetAngleTolerance(ANGLETOLERANCE);
    ) M& P, i0 S2 i, L+ K+ n
  20. ; t$ b3 k2 X6 z
  21.                 projectCurveBuilder1->SectionToProject()->SetAllowedEntityTypes(Section::AllowTypesOnlyCurves);
    . h# g' s' Y# Z, V5 X3 A

  22. : N% z' G" Y" y# H$ v
  23.                 projectCurveBuilder1->CurveFitData()->SetTolerance(DISTANCETOLERANCE);
    . ?  Y; I' w$ W$ H1 v5 K

  24. ; \* z( \" [" ^: a: R
  25.                 projectCurveBuilder1->CurveFitData()->SetAngleTolerance(ANGLETOLERANCE);
    $ ?& _! T; ~9 ]( b, \. x% i
  26. - i$ [( \8 D- g
  27.                 int size = (int)inputObjects.size();
    5 F6 v* B8 }4 m6 V6 C- `1 D  z
  28.                 std::vector<IBaseCurve *> curves1;# |" N" D! `/ b5 _3 K* _
  29.                 for (int ii = 0 ; ii < size; ++ii)
    - K4 Y5 z& k4 A8 t, U3 B; N
  30.                 {7 G3 j" \, ]* U1 s
  31.                         curves1.push_back(dynamic_cast<IBaseCurve*>(inputObjects[ii]));
      t+ \3 L. m) c# G. L% C
  32.                 }% @3 D1 o2 r4 C2 [' V

  33. 9 ^+ G! y* c5 c: y
  34.                 NXOpen::CurveDumbRule *curveDumbRule1;
    9 `" m9 x% ]9 q9 a3 G  M

  35. # z3 z0 {; p( m+ ?6 T
  36.                 curveDumbRule1 = workPart->ScRuleFactory()->CreateRuleBaseCurveDumb(curves1);3 h2 q3 M/ _4 z  I' y  A
  37. 2 ~7 O9 h* e" L4 Y4 A
  38.                 projectCurveBuilder1->SectionToProject()->AllowSelfIntersection(true);
    3 K8 I" Q- n! ~* `% @
  39. * y* D' U6 \7 Z0 m. [
  40.                 std::vector<SelectionIntentRule *> rules1(1);) G2 X* `4 b: `; |
  41.                 rules1[0] = curveDumbRule1;, J8 P! n# c. K# o# P
  42.                 NXObject *nullNXObject(NULL);
    * F/ S* C$ T- ^0 m
  43.                 Point3d helpPoint1(0, 0, 0);
    7 ?1 i  ^; H3 A2 t' K) H2 n# U3 O4 i
  44.                 projectCurveBuilder1->SectionToProject()->AddToSection(rules1, nullNXObject, nullNXObject, nullNXObject, helpPoint1, Section::ModeCreate, false);" f! D4 a- X. f: X9 s5 `) ^% M5 L3 V

  45. ( W, C8 j% P# W! H8 v4 r
  46.                 plane1->Evaluate();" n# W  {. R1 a( b7 O

  47. . i- {3 z. q" m; B, J
  48.                 projectCurveBuilder1->SetPlaneToProjectTo(plane1);
    # l* U4 |* r, L, T: p3 w: p( A! ~
  49. 8 |! f2 ~9 J$ j
  50.                 projectCurveBuilder1->SetGapOption(true);
    # U/ Z. c1 ~7 F0 N9 a; q7 y
  51. 4 y4 l5 v  l: q) m$ c6 @1 n, @
  52.                 projectCurveBuilder1->CurveFitData()->SetCurveJoinMethod(GeometricUtilities::CurveFitData::JoinGeneral);. T. G% ^$ W% v' s

  53. . w" ~- b& u& D2 I) d# I
  54.                 NXObject *nXObject1;9 o$ X7 m3 b, ^" L. n
  55.                 nXObject1 = projectCurveBuilder1->Commit();, W5 G1 W1 k& Z7 `8 T( x

  56. 8 ^/ E  `+ f" C2 l- O! ^
  57.                 projectCurveBuilder1->SectionToProject()->CleanMappingData();
    0 ?  T& {: E1 d+ o4 f' m( X1 R
  58. , m( [4 |$ h# f1 I9 _+ E: T
  59.                 projectCurveBuilder1->Destroy();
    # p8 X: t0 H' d  c) n3 C: U
  60. % G; E5 E. A  e3 r
  61.         }
    $ ^+ V' L8 c9 E) r- [& Z
  62.         catch(exception& ex)4 O" s& l1 V. s, r0 u& {, O, i* T
  63.         {
    ( E5 `, j! B! N! K" N* z2 }
  64.                 //---- Enter your exception handling code here -----" j& }! j) A, g: u
  65.                 errorCode = 1;
    . X. `) B) E6 o4 r$ p9 R
  66.                 trimSteels::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeError, ex.what());
    & e* u/ m: d# h7 o
  67.         }
    % c5 H! ^" _0 i6 Y* a" L7 o6 C
  68. 0 C; S) T) K6 W( a% @8 }& n
  69.         return errorCode;8 b+ b- ?9 i2 l+ Z8 b4 a
  70. }
    # p$ T+ l8 ^0 b( l
复制代码
' u0 w4 ?% y# m% C; R0 N

4 A. d. _* y! ?/ i$ G& Y! G$ P. a+ ~! _, ~# l; D
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了