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

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

  [复制链接]

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

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

PLM之家NX 楼主

2014-5-5 22:45:05

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

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

x
, E0 p; r/ }  ]- e( r

! F" v8 k9 p% d. I7 d6 t# D$ x, J/ W3 Z2 W, P: J2 B' k3 i# R1 A& H+ M
UG NX二次开发源码分享: NX Open C++ 创建投影曲线 project curves
, d: B, Z% y5 P" s- h+ d( w# c1 D- D5 d! H' _$ S
此处使用的是 通过面的法向创建投影曲线,可以参考下!
+ Q% o% _  M% j% {
6 S$ P9 M! c$ j8 |: t* P. x# {, y$ X9 u6 G7 z1 s

( u/ J9 S7 x0 ^& ~$ ?# Q" C! h9 C; \' |
- [, i9 @  F, o# u8 ^9 H

: Q4 K9 q: I2 W, _3 H+ C: D/ {  B+ m( ]) X

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

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

5 O6 M4 g. e# `0 ]( K3 _: W* k2 K% y6 T- n6 P, M
+ m4 ~3 N0 ^$ A

  1. 9 E6 Y/ w/ T* J- h" w
  2. int trimSteels::project_curves(vector<TaggedObject *>inputObjects,Plane *plane1)( e6 d8 h" g! H5 j3 ]2 Q
  3. {
    9 |% P/ \7 U7 _$ d, I( J5 H  ?
  4.         int errorCode = 0;. O! {: T; |+ {! K9 K% g$ r& ~; W* t
  5.         try8 n  N7 _- ~4 |# o$ `
  6.         {* ^% o! L  A- t! q- ^4 l
  7.                 // createProject curves0 |3 A# ^$ ?5 l4 `" }& S' |$ D/ e

  8. 5 r% B3 ^6 A3 B& f- s
  9.                 Features::Feature *nullFeatures_Feature(NULL);
    ' b" o6 S1 J% x& m8 _

  10. " |# x3 j; y4 }8 X- y% o
  11.                 Features::ProjecTCurveBuilder *projectCurveBuilder1;7 b- |2 A+ S" Z3 d  D  Y
  12. ( a. l. H! s, S- I" i: v7 N
  13.                 projectCurveBuilder1 = workPart->Features()->CreateProjectCurveBuilder(nullFeatures_Feature);
    ; b5 J; r8 ~" a  w
  14. 6 z& ^- {4 P6 U8 X/ I1 L8 h- x! e
  15.                 projectCurveBuilder1->SectionToProject()->SetDistanceTolerance(DISTANCETOLERANCE);
    / r0 h; R2 M' d1 T+ I- \

  16. . I5 y; G! v8 p% c) s7 g/ N
  17.                 projectCurveBuilder1->SectionToProject()->SetChainingTolerance(CHAININGTOLERANCE);
    8 R0 q5 w9 x, r  l5 L6 S

  18. + S' w9 O* g7 T; v
  19.                 projectCurveBuilder1->SectionToProject()->SetAngleTolerance(ANGLETOLERANCE);
    , f* N( \+ {  r8 T' Z) d$ D" K

  20. 6 ~$ X( D) T0 ]3 m/ |7 Z
  21.                 projectCurveBuilder1->SectionToProject()->SetAllowedEntityTypes(Section::AllowTypesOnlyCurves);0 {3 X& e4 H' y  g, g

  22. 4 F  F! [# l4 U& F
  23.                 projectCurveBuilder1->CurveFitData()->SetTolerance(DISTANCETOLERANCE);
    0 q6 A4 s* H& j7 M! n" W! E& A
  24. 3 `* X) f0 @9 Y! x
  25.                 projectCurveBuilder1->CurveFitData()->SetAngleTolerance(ANGLETOLERANCE);" \% E, C9 n) U! }6 ~
  26. ! i' L+ n$ b! H$ O8 f
  27.                 int size = (int)inputObjects.size();
    1 w# w- x7 [, Q0 t
  28.                 std::vector<IBaseCurve *> curves1;5 x2 s6 G5 m5 _4 L
  29.                 for (int ii = 0 ; ii < size; ++ii)3 H8 U* E- [% e" k4 j( ?5 ^
  30.                 {
    ' H) i- O; }8 w* k% I
  31.                         curves1.push_back(dynamic_cast<IBaseCurve*>(inputObjects[ii]));
    , u+ e: {; ^2 o2 z" T# G. m: r
  32.                 }4 d! K2 J- u( K* a& h, n

  33. " a: n4 T: B. L9 P
  34.                 NXOpen::CurveDumbRule *curveDumbRule1;- E0 X: I2 {& G; V! X" `3 ?: ~

  35. 2 y5 M8 L4 Q9 S% c% h" k
  36.                 curveDumbRule1 = workPart->ScRuleFactory()->CreateRuleBaseCurveDumb(curves1);
    # _4 Q" N  N! h  Z$ n

  37. * Y$ H3 x+ s& T& o# V
  38.                 projectCurveBuilder1->SectionToProject()->AllowSelfIntersection(true);9 }0 q( q% |: p
  39. 5 R) |5 C" j- Y) s2 f( v" |
  40.                 std::vector<SelectionIntentRule *> rules1(1);
    ; ]/ T7 G+ v( G
  41.                 rules1[0] = curveDumbRule1;+ C. q& G9 g% Y3 N
  42.                 NXObject *nullNXObject(NULL);  V) Q" p) D$ m6 i4 c$ F
  43.                 Point3d helpPoint1(0, 0, 0);
    0 i, P3 U1 y9 N& T4 C
  44.                 projectCurveBuilder1->SectionToProject()->AddToSection(rules1, nullNXObject, nullNXObject, nullNXObject, helpPoint1, Section::ModeCreate, false);
    9 W! @- i& M& j- `$ F9 G% ^
  45. 8 q6 p1 m4 @/ ~9 c  J9 Z
  46.                 plane1->Evaluate();
    ! L) ]* L$ O) @" L# Q

  47. 8 D0 @8 J7 H1 A
  48.                 projectCurveBuilder1->SetPlaneToProjectTo(plane1);1 x$ ^1 c' |: N" |. ^
  49. % E( M) J' G& |3 H) x9 j3 I
  50.                 projectCurveBuilder1->SetGapOption(true);
    2 ^2 [* B- ~6 @4 f8 v# b

  51. 5 E4 s, k; ]. c
  52.                 projectCurveBuilder1->CurveFitData()->SetCurveJoinMethod(GeometricUtilities::CurveFitData::JoinGeneral);+ n: Y, w! W* T# T* y% ~, t' t# \; ?
  53. # V. m4 w/ L8 k1 V
  54.                 NXObject *nXObject1;
    2 h  }4 D  j2 I4 d3 @( C
  55.                 nXObject1 = projectCurveBuilder1->Commit();+ n7 h# H+ ^4 U* O) m" @( a( U" V5 A
  56. 2 d- {9 z1 H( f1 J9 E: ~
  57.                 projectCurveBuilder1->SectionToProject()->CleanMappingData();. w$ t" }) F8 T( z" [
  58. ; C& j0 B+ Y$ s
  59.                 projectCurveBuilder1->Destroy();
    ! O1 z: Q/ C$ O/ {2 A  Q

  60. : q, {* c7 c6 u; e* ^5 m
  61.         }0 |6 ]# s; q; S4 T
  62.         catch(exception& ex)
    , P9 H2 A; A$ K; [' }
  63.         {
    $ u) ^- R5 D& \6 ?6 _$ s
  64.                 //---- Enter your exception handling code here -----5 B) Y8 j# _2 ~) X# Q3 i$ p% w
  65.                 errorCode = 1;
    % |1 _+ K+ j% D- @: i
  66.                 trimSteels::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeError, ex.what());% }  |! r6 J) _
  67.         }
    ; Q! C! l! E6 I
  68. " S4 r6 T1 U7 S* H# g) M& s
  69.         return errorCode;+ n' |- W7 g* J  d
  70. }
    3 f/ c- E) y% B$ D& e
复制代码
+ }1 F0 H% H' s0 t% K9 J

6 f- }  P3 l: [7 e
. S+ K4 N) [: H3 ]6 w
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了