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

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

  [复制链接]

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

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

PLM之家NX 楼主

2014-5-5 22:45:05

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

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

x

8 F( c2 E2 p0 W
; p, z$ Q2 a9 X; `8 O0 `5 L5 s* ~& @, |/ p  v! V
UG NX二次开发源码分享: NX Open C++ 创建投影曲线 project curves
3 Q& }+ h% [; H+ y3 V2 G4 N" s) n* H4 e  k0 F! _
此处使用的是 通过面的法向创建投影曲线,可以参考下!
- H, l( j" ^2 \5 @( z& ]9 s: ]9 Z0 ~5 H0 \1 |' e* l* s

: o2 D7 P/ g4 _1 z
/ W: R9 q' w$ M% K1 x
6 \: K6 S8 J: s
/ @5 H8 R3 b+ }% @, f5 N- b( q+ g' W6 X) O
9 F7 i0 h0 H$ M4 Y, z

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

 NX Open C++ 创建投影曲线 project curves
( d( G+ X& d" ]2 m+ _2 ]: ^; {
; J, h$ j" C/ e6 L& t( d. s1 f7 W

# O4 s) V9 N7 K: @+ V
  1. 3 E4 y7 `" }" C$ P6 j, u
  2. int trimSteels::project_curves(vector<TaggedObject *>inputObjects,Plane *plane1)1 x/ t$ e* f0 c5 W: Z' Y
  3. {/ C( f; Q9 u0 \% O  `6 z! F6 z
  4.         int errorCode = 0;
    ) a/ I1 d7 i4 X# c7 z
  5.         try
    : k, `* Y; t5 v: s' P" o5 H0 M
  6.         {
    ( j0 f9 H* Z# A- a% r3 e
  7.                 // createProject curves
    5 R8 M% b. S/ g1 |! h

  8. 6 M) C. Y* l) e+ y; n. q8 ^2 Z) r
  9.                 Features::Feature *nullFeatures_Feature(NULL);
    5 Z7 N) F% y& M. R1 c9 ?

  10. 2 s' W: W' a# V. \. h: Q" l6 h
  11.                 Features::ProjecTCurveBuilder *projectCurveBuilder1;) V' m6 j0 }) {9 c" Y
  12. / x7 y7 I. @5 ?0 E
  13.                 projectCurveBuilder1 = workPart->Features()->CreateProjectCurveBuilder(nullFeatures_Feature);
    8 W7 }( G+ v, \/ m. O3 k
  14. 8 z. R4 A- ]+ ^  O/ ~& q( C
  15.                 projectCurveBuilder1->SectionToProject()->SetDistanceTolerance(DISTANCETOLERANCE);
    & Q1 R8 x+ a( W0 Y

  16. 4 G$ k; P: L# u9 j8 C7 e" J
  17.                 projectCurveBuilder1->SectionToProject()->SetChainingTolerance(CHAININGTOLERANCE);
    3 A2 Q/ a3 M0 g' I* g, P

  18. 2 g  a* j9 L9 q& B3 ~( g
  19.                 projectCurveBuilder1->SectionToProject()->SetAngleTolerance(ANGLETOLERANCE);
    $ L3 ]2 \7 d4 v! u" R  l
  20. + J2 _% \3 v" B( S
  21.                 projectCurveBuilder1->SectionToProject()->SetAllowedEntityTypes(Section::AllowTypesOnlyCurves);  `! f5 J' ?* `/ q7 Q8 w
  22. * o' w1 M& x, A1 X6 }" V
  23.                 projectCurveBuilder1->CurveFitData()->SetTolerance(DISTANCETOLERANCE);7 W2 ^0 P+ I& y5 E: B& S
  24. 7 c- U6 S- R$ P2 `# n7 K
  25.                 projectCurveBuilder1->CurveFitData()->SetAngleTolerance(ANGLETOLERANCE);
    / W+ P$ D$ y3 V4 U" ?1 b" z
  26. ; v1 V  L: P1 A
  27.                 int size = (int)inputObjects.size();
    8 S) d5 i( C% N
  28.                 std::vector<IBaseCurve *> curves1;+ P, }* L# j. W0 }1 Z. E! ?
  29.                 for (int ii = 0 ; ii < size; ++ii)
    9 \9 i3 Q- [* Y' _$ F( w
  30.                 {
    & W5 _! Z/ d0 L& M1 [/ y$ z
  31.                         curves1.push_back(dynamic_cast<IBaseCurve*>(inputObjects[ii]));
    8 c1 X/ S' L2 h+ \  D
  32.                 }
    ! c! l% z  x+ [" b7 E2 G
  33. , v7 O! y' o$ \
  34.                 NXOpen::CurveDumbRule *curveDumbRule1;
    ( M: o$ K! l7 n
  35. / q$ J0 V5 g6 t% N
  36.                 curveDumbRule1 = workPart->ScRuleFactory()->CreateRuleBaseCurveDumb(curves1);
    4 ?+ Q& z1 O$ g0 n

  37. % v  D+ _& z* o/ W# C" s" C" s2 f
  38.                 projectCurveBuilder1->SectionToProject()->AllowSelfIntersection(true);
    , R; C1 y1 O: q* _; i5 b
  39. " Q0 y" @7 i/ q
  40.                 std::vector<SelectionIntentRule *> rules1(1);
    & ?0 }  M$ G2 @8 h; [9 t4 i- ~
  41.                 rules1[0] = curveDumbRule1;& q. m  S' d6 a+ n5 C0 U/ w
  42.                 NXObject *nullNXObject(NULL);( c  l  ?' a9 f; x6 x0 X# _
  43.                 Point3d helpPoint1(0, 0, 0);3 W3 i  A9 _* n
  44.                 projectCurveBuilder1->SectionToProject()->AddToSection(rules1, nullNXObject, nullNXObject, nullNXObject, helpPoint1, Section::ModeCreate, false);, T( H  i  c! r& F1 G( V4 C
  45. $ v  N. [; Q6 y8 r( e" \
  46.                 plane1->Evaluate();
    4 h2 O1 _( b! x! S& t) b

  47. 1 I; y4 x, l* Q: t! u: ^
  48.                 projectCurveBuilder1->SetPlaneToProjectTo(plane1);
    ! @5 C* Q$ g1 V9 E, ?* v: L& L% w1 T
  49. 7 O( r* A4 Z3 M( ^. i0 S
  50.                 projectCurveBuilder1->SetGapOption(true);
    ( v5 j; Z2 J0 K( J0 s& o3 e
  51. - k0 X: k, m/ G' y
  52.                 projectCurveBuilder1->CurveFitData()->SetCurveJoinMethod(GeometricUtilities::CurveFitData::JoinGeneral);2 `- r( q" j  L

  53.   {5 G6 Z( U  L7 {
  54.                 NXObject *nXObject1;/ C% C! Q8 [, {' [+ k
  55.                 nXObject1 = projectCurveBuilder1->Commit();; ?, K6 M5 m) r+ D

  56. 6 H; a; y8 \% s! ~( P
  57.                 projectCurveBuilder1->SectionToProject()->CleanMappingData();5 F. f4 o6 X8 m8 _' \$ }
  58. 3 q2 g7 ~/ f. \% I" K
  59.                 projectCurveBuilder1->Destroy();
    2 Q6 @1 f+ I$ z

  60. ! y+ V" [7 F  \5 F3 \' v
  61.         }
    7 \" F* ~" L# b5 @
  62.         catch(exception& ex)
    ! D7 c# e8 c/ h- u8 j
  63.         {# W6 g2 r+ Y9 N, H7 ~
  64.                 //---- Enter your exception handling code here -----) T8 R7 M& q0 o
  65.                 errorCode = 1;5 k! U- j8 Q; ~4 [$ F. }
  66.                 trimSteels::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeError, ex.what());% J# ]  [: W# ?0 O4 t4 p
  67.         }5 z8 ?+ h) U9 R8 i

  68. " {% V& V; @8 u( f8 x
  69.         return errorCode;
      l) W) P6 y/ p% d4 d
  70. }
    ) b/ W1 \0 P1 s, d% |5 `" `
复制代码

7 D: T1 A  z: \; T! e8 ]0 r% {- U

2 q7 M, r! n; F. L
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了