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

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

  [复制链接]

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

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

PLM之家NX 楼主

2014-5-5 22:45:05

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

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

x
3 Z/ e8 u) p' ^9 B

6 R/ l* d" X+ `- O5 ^- y6 H! }$ }! s4 L  q
UG NX二次开发源码分享: NX Open C++ 创建投影曲线 project curves
: H% E- Q9 H: B6 Q6 W! G
% c$ c5 z! U/ A( j此处使用的是 通过面的法向创建投影曲线,可以参考下!; M8 ^1 C) d/ c: L
- G: z) X5 D, U5 [( }9 k

. ~& F  u& x0 F  s
  m+ h3 M, M$ f4 z6 d/ G8 w- X9 T/ m3 Z5 q9 ?6 }/ K! m1 s4 ~
! ^$ c6 y& v3 N
; [% y: S) V6 d9 Y$ f% B* S. w4 z. [: E
- V/ y8 i3 `- Y1 |( U& T# m

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

 NX Open C++ 创建投影曲线 project curves
; `( ~3 G6 B. ~7 E
. Y6 n0 g( A0 d% c

5 A. p- H1 m, z

  1. / N  @+ z- h0 u5 ^
  2. int trimSteels::project_curves(vector<TaggedObject *>inputObjects,Plane *plane1)& Z- ~( O, w1 j5 ~! g8 c
  3. {
    0 G$ \* g$ B! [) Z7 y
  4.         int errorCode = 0;  C1 R3 k9 S  B$ `
  5.         try* Y, J* e% h8 L1 q; k
  6.         {$ V- p% Q( g. O3 I2 r7 q
  7.                 // createProject curves5 _- K( A- m# i* G
  8. # n* o# |1 q4 Y5 q' r
  9.                 Features::Feature *nullFeatures_Feature(NULL);2 K; ~, R9 u1 T! b4 Z/ ^6 k
  10. ( Q6 e) x. P* `0 b
  11.                 Features::ProjecTCurveBuilder *projectCurveBuilder1;
    3 F# v! F- r! w+ I+ P  G& N2 J

  12. / J1 h  e1 a4 @& D
  13.                 projectCurveBuilder1 = workPart->Features()->CreateProjectCurveBuilder(nullFeatures_Feature);. F; d5 D, U" s0 k. z+ }
  14. 1 m* ~1 y0 {' B  S+ S2 }7 V
  15.                 projectCurveBuilder1->SectionToProject()->SetDistanceTolerance(DISTANCETOLERANCE);  ?' q2 x' g& r! f+ \  Z
  16. ; _, _$ a/ ^; Z% t  q
  17.                 projectCurveBuilder1->SectionToProject()->SetChainingTolerance(CHAININGTOLERANCE);
    2 H- D3 I: H1 b  m. I) _$ R
  18. & Z$ M' {0 D+ z% Y' ?& e
  19.                 projectCurveBuilder1->SectionToProject()->SetAngleTolerance(ANGLETOLERANCE);* c5 {# P# V4 R- N, t- f
  20. * |$ G9 D7 S9 ^6 _4 `2 F8 F
  21.                 projectCurveBuilder1->SectionToProject()->SetAllowedEntityTypes(Section::AllowTypesOnlyCurves);& _+ y/ Q4 c3 C( g6 M7 a
  22. : M) {! l, [/ J. }
  23.                 projectCurveBuilder1->CurveFitData()->SetTolerance(DISTANCETOLERANCE);- V! t! Z& ^% @1 `4 m
  24. ) Z) S# C9 B: f, P( v
  25.                 projectCurveBuilder1->CurveFitData()->SetAngleTolerance(ANGLETOLERANCE);3 F; z4 [* ]  c3 P4 h; i/ E0 b
  26. ' X5 |2 w: @0 g% \2 k( O3 c# l: W( _
  27.                 int size = (int)inputObjects.size();
    7 Y( q/ M$ e: ^/ H$ H, t7 C
  28.                 std::vector<IBaseCurve *> curves1;
    1 }$ ~# b1 e- \7 S
  29.                 for (int ii = 0 ; ii < size; ++ii)
    - f% L/ L, k  y. i7 a
  30.                 {
    ! ^2 O9 d( z4 {5 g, K
  31.                         curves1.push_back(dynamic_cast<IBaseCurve*>(inputObjects[ii]));; i0 {* c* z1 y; R8 _0 P" Z+ R
  32.                 }$ C" I; R) v& r; \: u7 r
  33. ' Q4 P- I. A# o. G* P# }* l3 \& v0 N
  34.                 NXOpen::CurveDumbRule *curveDumbRule1;4 J& y5 @% ], s& w
  35. ) G% E% G8 y0 X* i  j$ O
  36.                 curveDumbRule1 = workPart->ScRuleFactory()->CreateRuleBaseCurveDumb(curves1);
    1 f7 x8 K& l" L8 i1 n* D7 h
  37. % @0 _; s$ t+ Z
  38.                 projectCurveBuilder1->SectionToProject()->AllowSelfIntersection(true);! z' x0 C& |. k4 k

  39. 7 c2 B/ l0 q# C$ J  Z& e% |- M& `! `2 m
  40.                 std::vector<SelectionIntentRule *> rules1(1);
    / j# |7 F# r5 }, q" d
  41.                 rules1[0] = curveDumbRule1;/ c4 ]6 `& [& ?
  42.                 NXObject *nullNXObject(NULL);
    . v5 a9 e+ d3 Z1 v' E
  43.                 Point3d helpPoint1(0, 0, 0);
    ; Z3 L6 n7 j& ]! J
  44.                 projectCurveBuilder1->SectionToProject()->AddToSection(rules1, nullNXObject, nullNXObject, nullNXObject, helpPoint1, Section::ModeCreate, false);( R7 i8 x0 h9 f- m- b% E1 _
  45. $ o) d  M- |  }, w/ M- m2 u$ C
  46.                 plane1->Evaluate();7 i# I3 i) F4 n
  47. * c6 V$ I) D4 U" D
  48.                 projectCurveBuilder1->SetPlaneToProjectTo(plane1);) Q& d9 Y- k4 R# a2 ^

  49. 9 n( S9 ^4 ?8 J
  50.                 projectCurveBuilder1->SetGapOption(true);
    - F2 Y$ R$ L; @. K5 y2 m

  51. ' x* e& ~( |1 g, c
  52.                 projectCurveBuilder1->CurveFitData()->SetCurveJoinMethod(GeometricUtilities::CurveFitData::JoinGeneral);( |; D& O/ `- ^2 i9 ]7 c  o
  53. " `9 ~( Y% W+ W
  54.                 NXObject *nXObject1;* \2 b2 V+ f# h; g8 p. ~( N
  55.                 nXObject1 = projectCurveBuilder1->Commit();
    ; x0 K1 E9 l" p# l$ K# _3 ?; n3 k, M

  56. , L  k1 I; N3 O0 U  M
  57.                 projectCurveBuilder1->SectionToProject()->CleanMappingData();+ J# H# ]: Q- H& Y& ^# b& C

  58. $ R, g4 R! K7 H' ?( S
  59.                 projectCurveBuilder1->Destroy();
    7 c9 \, ^/ @- f9 C

  60. & H9 d/ F- _: f( s" ~
  61.         }; F# }* }) ]- ]' `2 I' Y: n: n# Q
  62.         catch(exception& ex)" [1 ?( c' Y+ w5 D0 P3 W
  63.         {2 ]; V" Z( @8 C6 [, |/ d/ G5 ]7 q
  64.                 //---- Enter your exception handling code here -----, W3 m4 ~7 ?# `) l% ~8 b6 p5 V
  65.                 errorCode = 1;
    1 U5 O* g1 ^# T5 ]5 N$ O& `
  66.                 trimSteels::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeError, ex.what());
    ; l4 b; m; @, t) E. o
  67.         }
    5 X. i/ {( D. r# K: r. N1 G

  68. $ l; u  V* p7 k- T
  69.         return errorCode;
    ; N, p2 c9 c) M; T5 p; Z/ R
  70. }# c1 [3 Q0 {6 S" H7 |: L3 e! ]! w
复制代码

- f# a% S& `$ s6 }$ U% j. y; }. ~( _9 i/ e/ `1 R4 Q

5 v2 L' a0 Q0 S. V6 o* U+ i1 [
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了