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

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

  [复制链接]

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

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

PLM之家NX 楼主

2014-5-5 22:45:05

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

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

x

  [0 b! k7 d3 u- U1 A) @9 g- k$ |, b% c) \2 K

+ G% x/ ~) p% o! o8 U$ B7 BUG NX二次开发源码分享: NX Open C++ 创建投影曲线 project curves
, m6 I6 a' H0 e( E( L7 L0 g; c- u3 D- G+ u9 u" Z
此处使用的是 通过面的法向创建投影曲线,可以参考下!
1 {! P, O# T, W$ V6 |! N! l( t0 o3 U3 Y3 Q2 r
( M" \$ R# X" k" e
3 G2 P. O3 Z4 P
2 o( g6 C  P" x7 D8 ^$ I

& Q( E- M4 R/ `! ?( \
3 {. p  C  ?$ H& R% ~9 n- d- x1 {. x, }9 C( }% `: v8 t2 ?

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

 NX Open C++ 创建投影曲线 project curves
' U2 K/ n# m; j

! |# L) n/ @6 F3 T7 q$ a( [, L: f2 B6 O0 y* @4 D

  1. 2 K, U, n" K; |9 H* j$ O0 p) L
  2. int trimSteels::project_curves(vector<TaggedObject *>inputObjects,Plane *plane1)$ @% j6 l2 w& u# H0 U* s
  3. {
    8 N. S1 u5 y6 j  k- D
  4.         int errorCode = 0;
    ! d; }4 z7 k7 p. P4 R
  5.         try
    / s( M8 d3 T- ^1 `6 U7 U. `) I# `  k7 M& f6 ~
  6.         {; F9 {7 K/ f7 k& m3 a- V
  7.                 // createProject curves9 X% p: m' |+ z3 p. X' x

  8. 4 A' r5 w# y% x: x* u& K
  9.                 Features::Feature *nullFeatures_Feature(NULL);: d% F3 i' z0 f: U; g/ {- O
  10. & m7 I* u: u4 Z, E2 Q/ f1 z1 `
  11.                 Features::ProjecTCurveBuilder *projectCurveBuilder1;) [% ~: |2 F) O2 Q
  12. & c- }1 I6 @% i
  13.                 projectCurveBuilder1 = workPart->Features()->CreateProjectCurveBuilder(nullFeatures_Feature);! K9 U5 o& K' P# z# H0 Q

  14. 7 C6 j5 s" r- B
  15.                 projectCurveBuilder1->SectionToProject()->SetDistanceTolerance(DISTANCETOLERANCE);; `' [4 D* \$ K
  16.   x4 k' C3 }2 t6 r' [1 m% F
  17.                 projectCurveBuilder1->SectionToProject()->SetChainingTolerance(CHAININGTOLERANCE);2 t9 J  x1 X2 P" Z+ A( S$ U+ M
  18. " }1 E( p( _. m1 c# i7 {0 S
  19.                 projectCurveBuilder1->SectionToProject()->SetAngleTolerance(ANGLETOLERANCE);. W+ z& _* q  t7 t4 {
  20. * X5 A; p* G3 p! G7 X/ O: t
  21.                 projectCurveBuilder1->SectionToProject()->SetAllowedEntityTypes(Section::AllowTypesOnlyCurves);
    * \* ?0 W) f& l' T# u; m
  22. 4 Y! f% H) h7 T* x) [% l
  23.                 projectCurveBuilder1->CurveFitData()->SetTolerance(DISTANCETOLERANCE);' E% t# c, @, C5 ^

  24. 3 I$ ?' k- l- p% Y+ ]" x/ W
  25.                 projectCurveBuilder1->CurveFitData()->SetAngleTolerance(ANGLETOLERANCE);; X) o5 f/ M0 c4 s

  26. ' n3 j/ S! Z0 y& H+ O; J
  27.                 int size = (int)inputObjects.size();
    ! V9 H% t# d3 G+ O3 k! m5 v) C% r
  28.                 std::vector<IBaseCurve *> curves1;4 X, q$ W8 I- X
  29.                 for (int ii = 0 ; ii < size; ++ii)5 Y2 m( Y  _  Y, [+ f
  30.                 {4 {6 y' P6 k! H( h, x
  31.                         curves1.push_back(dynamic_cast<IBaseCurve*>(inputObjects[ii]));
    ) Z: T8 V7 l5 Y( h( ?) R
  32.                 }( N# C, L' }' |/ |
  33. - J4 T4 }. o. L/ t
  34.                 NXOpen::CurveDumbRule *curveDumbRule1;
    , k* H. p6 w9 U$ P6 o: ~1 F

  35. ; x# v+ L+ v7 v+ P9 O- v" J: m
  36.                 curveDumbRule1 = workPart->ScRuleFactory()->CreateRuleBaseCurveDumb(curves1);
    * I3 g. M$ }: E" ?

  37. 8 `" [8 H: m/ e; S
  38.                 projectCurveBuilder1->SectionToProject()->AllowSelfIntersection(true);
    6 [; N7 r+ Q% ?
  39. # h; |# Z) j1 A1 R6 V9 O/ j* R, u
  40.                 std::vector<SelectionIntentRule *> rules1(1);
    - w: Z; ]9 Q- v6 K2 W
  41.                 rules1[0] = curveDumbRule1;0 J: V& b& b! q
  42.                 NXObject *nullNXObject(NULL);% s) g( `% q$ G: v
  43.                 Point3d helpPoint1(0, 0, 0);
    ' C: i$ d  G1 i: f. F. {
  44.                 projectCurveBuilder1->SectionToProject()->AddToSection(rules1, nullNXObject, nullNXObject, nullNXObject, helpPoint1, Section::ModeCreate, false);
    # Z& \' e2 g! O1 a) ?1 K

  45. 0 x+ W! [2 q" U4 p. C
  46.                 plane1->Evaluate();7 O/ z2 g. M( H4 c8 j( @7 J* S
  47. 0 C+ ?7 {2 m, s- e1 H4 ]
  48.                 projectCurveBuilder1->SetPlaneToProjectTo(plane1);9 n4 U, U! y7 t) X
  49. % ^. Y% T' B" e9 I6 S
  50.                 projectCurveBuilder1->SetGapOption(true);* F. s  O: a6 b) a7 O  R' v
  51. & b" A6 i  Q9 q' I: v
  52.                 projectCurveBuilder1->CurveFitData()->SetCurveJoinMethod(GeometricUtilities::CurveFitData::JoinGeneral);
    6 g$ P% c7 }  @/ Q$ O' z
  53. 1 w% k: Q- \: P  x0 `3 h$ T
  54.                 NXObject *nXObject1;2 _/ A, p$ O: v$ F6 o" ~" j/ ?. j
  55.                 nXObject1 = projectCurveBuilder1->Commit();1 L$ w4 w' c5 z: Y' z' ^9 Q
  56. ) r3 M8 m* l* h. R- D
  57.                 projectCurveBuilder1->SectionToProject()->CleanMappingData();& n- E' P7 V7 v5 ?( A3 a6 c' s
  58. % G; v' z% F( J; G2 B
  59.                 projectCurveBuilder1->Destroy();
    8 q! D$ W; w( Y
  60. " e" y$ N& u3 E6 }- F$ X
  61.         }
    6 n- g/ H5 v& u
  62.         catch(exception& ex)! q, g3 `& T' T; I% [2 E
  63.         {
    5 W3 B6 q# l; Q: D- R& P
  64.                 //---- Enter your exception handling code here -----* d% g9 r- K9 t
  65.                 errorCode = 1;9 O: k4 d5 k: K! ?5 `' u! \
  66.                 trimSteels::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeError, ex.what());6 h  v2 j. U& s% r7 x3 m( I
  67.         }
    . m3 X! T8 S/ z( p4 V* _1 M
  68. ! U, ^& q$ y2 L: s0 Y" q
  69.         return errorCode;. _6 A( J3 v2 n3 w
  70. }% G( [, ^5 s8 u* ?
复制代码
( ]+ e" A1 S- _1 u

+ G% `6 E4 O3 Q3 P. D9 p3 K" Q- H; C" g" O* j$ W& N" `1 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二次开发专题模块培训报名开始啦

    我知道了