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

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

  [复制链接]

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

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

PLM之家NX 楼主

2014-5-5 22:45:05

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

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

x

: p# ?/ u' \8 s3 S0 y' k' ~! B
0 q4 P  o5 a( W* v& _! A
( P7 E7 }% a" U9 y, ~9 oUG NX二次开发源码分享: NX Open C++ 创建投影曲线 project curves8 r+ v$ G4 v$ W% X0 l) ^
2 x# {' B+ `( |
此处使用的是 通过面的法向创建投影曲线,可以参考下!; v, n( a* t2 k/ c# ^# {

8 w$ `' f3 @# p* L
7 L+ C( S- t$ k" r0 Y! q; F6 ^& p7 `: P' X9 ]! t4 P
: V# O) V5 @! y1 G
3 N) ?& L* a6 Z8 K( q1 ]( a1 b

  b8 T5 `$ n" }9 o8 {/ L% _' Y/ F$ e: X, ]; p) D& A' f6 L. @

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

 NX Open C++ 创建投影曲线 project curves
- t: t! ~% |5 @7 M0 `; `

8 M, w7 r! {  @6 R( v8 O) I
# r, R# l* a6 G& A1 T
  1. 0 b( C# Y' q$ Q2 A7 T$ v
  2. int trimSteels::project_curves(vector<TaggedObject *>inputObjects,Plane *plane1)6 J# ]/ D# W8 \& ]8 ^
  3. {
    7 a; M0 x- G4 y# q4 A
  4.         int errorCode = 0;& b9 R5 U: |# E$ d
  5.         try
      t, ?* k. T5 E+ ]1 w6 H' m
  6.         {
    # r4 P, Z# \8 W$ R' t
  7.                 // createProject curves; P& \' G3 X. q! X1 W+ y& \0 K. d

  8. : h" p7 c9 y+ c4 f4 v
  9.                 Features::Feature *nullFeatures_Feature(NULL);
    0 t# W' A5 W# b
  10. " f1 q, P. k- Q5 E# I) ?* x
  11.                 Features::ProjecTCurveBuilder *projectCurveBuilder1;
    2 a9 A% t" x% t, I( y% z
  12. ; O2 @9 S, S7 s) v
  13.                 projectCurveBuilder1 = workPart->Features()->CreateProjectCurveBuilder(nullFeatures_Feature);- `! A& W1 C" g4 X

  14. # F7 y* I* D. a6 z# t* C3 x; z
  15.                 projectCurveBuilder1->SectionToProject()->SetDistanceTolerance(DISTANCETOLERANCE);
    + ]+ E8 J/ }6 @. K

  16. : r( ]% ]  J) G4 f$ b/ v
  17.                 projectCurveBuilder1->SectionToProject()->SetChainingTolerance(CHAININGTOLERANCE);
    1 R+ Y  h/ F% v( N6 G4 F5 |7 c) s

  18. - U' f9 l* o* s( @9 `
  19.                 projectCurveBuilder1->SectionToProject()->SetAngleTolerance(ANGLETOLERANCE);
    , A& Q5 N; ^. L1 m) t
  20. 5 W" J  }+ ~0 r) X- F7 \) W1 O* }; e
  21.                 projectCurveBuilder1->SectionToProject()->SetAllowedEntityTypes(Section::AllowTypesOnlyCurves);
    2 m6 W& Y8 x3 P! ]( K
  22. ! l0 _% c/ c7 @5 b' [
  23.                 projectCurveBuilder1->CurveFitData()->SetTolerance(DISTANCETOLERANCE);
    * A9 z4 d! e' Y4 N6 M7 |
  24. . l0 q) R/ X' [/ i# W
  25.                 projectCurveBuilder1->CurveFitData()->SetAngleTolerance(ANGLETOLERANCE);
    / c; Q$ M2 f& C
  26. * Z5 O( K. ^* f; ]/ [" R
  27.                 int size = (int)inputObjects.size();
    + B" `0 {- M# ?  G9 W! ^6 V
  28.                 std::vector<IBaseCurve *> curves1;
    , {/ y. M* N5 w
  29.                 for (int ii = 0 ; ii < size; ++ii)
    5 k6 I1 {. ~6 g' s1 E& `2 d
  30.                 {/ y. n% s# p) S# C5 K
  31.                         curves1.push_back(dynamic_cast<IBaseCurve*>(inputObjects[ii]));" O. H6 ~& |0 ^( h" K8 w$ H( B5 y
  32.                 }, d4 i& H  p1 a; W6 P+ h& }
  33. ) ?7 w- O+ g7 C3 D
  34.                 NXOpen::CurveDumbRule *curveDumbRule1;3 A, g0 m  [" I1 j* k. i4 c
  35. ! d( S; m: @+ F9 O$ ]5 x3 V
  36.                 curveDumbRule1 = workPart->ScRuleFactory()->CreateRuleBaseCurveDumb(curves1);" `6 o+ X( X# w% Z% S$ [

  37.   [5 r# P9 _$ F4 m& Y4 m" z
  38.                 projectCurveBuilder1->SectionToProject()->AllowSelfIntersection(true);8 X! i5 k8 j) V. V
  39. / x- T& N# @; L" V" J
  40.                 std::vector<SelectionIntentRule *> rules1(1);& B( _: m3 M6 c- @
  41.                 rules1[0] = curveDumbRule1;
    9 b4 e' S5 T- N% V8 j" m7 l& W* ?3 q
  42.                 NXObject *nullNXObject(NULL);
    7 Z7 K7 U7 ~  p
  43.                 Point3d helpPoint1(0, 0, 0);2 q" [4 z9 D. n  E# y4 ]0 R
  44.                 projectCurveBuilder1->SectionToProject()->AddToSection(rules1, nullNXObject, nullNXObject, nullNXObject, helpPoint1, Section::ModeCreate, false);
    . Y8 D) |% d% d7 C0 D9 Z7 d

  45. 8 }7 ^9 L7 `# z8 e! i8 ]
  46.                 plane1->Evaluate();& n6 }7 }# t- L0 \, A% w. J
  47. 4 d3 L  N* B! T
  48.                 projectCurveBuilder1->SetPlaneToProjectTo(plane1);2 w! ]9 p( D$ b3 j9 |8 P

  49. . L- z; q0 Z1 V! V
  50.                 projectCurveBuilder1->SetGapOption(true);$ o+ d- p- h( @7 ]1 r+ N
  51. & f8 K" \0 w2 c+ z$ ^3 c+ F3 K
  52.                 projectCurveBuilder1->CurveFitData()->SetCurveJoinMethod(GeometricUtilities::CurveFitData::JoinGeneral);
    : m# \7 c! x- `) f0 F  M9 |* M+ i

  53. 7 l, f2 |5 W  p/ J+ m( T# |9 C
  54.                 NXObject *nXObject1;
    - R( ~9 Q, S  U
  55.                 nXObject1 = projectCurveBuilder1->Commit();
    & ~9 `  ^4 A5 v" M# `, M
  56. , J! s4 I" D$ T
  57.                 projectCurveBuilder1->SectionToProject()->CleanMappingData();$ l! H4 m/ d& S, e2 X

  58. % L) S' l9 G/ [" o) _- E. P
  59.                 projectCurveBuilder1->Destroy();
    8 Z& p: i8 _6 D% R1 A% O

  60. % X/ [0 F! G" P. H- J7 m" h+ q
  61.         }% N* y" l: h9 g, ~- T
  62.         catch(exception& ex)
    8 `; J3 ~& Z/ R
  63.         {
    ) q5 a+ j' W3 P: S6 c7 n6 W
  64.                 //---- Enter your exception handling code here -----
    ( K" o# f" @" J) C% D8 B4 B' F+ s
  65.                 errorCode = 1;$ M* S9 c4 \: F- R& Q
  66.                 trimSteels::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeError, ex.what());
    7 k' l* s+ x6 t- i# T$ M1 x: I# ~
  67.         }$ s$ j, _$ v9 r3 g4 T

  68. / A6 m- L% Q' r4 l( D' d: }
  69.         return errorCode;
    + c* j1 M% C0 M! S5 g
  70. }/ z' n+ R- N* W! `+ Z& Y0 g
复制代码
  I, p# ?6 y- K! V# k+ G

! g: G+ y; l, ?1 B. ^# n: Z( _( X+ W" \- P  O, G/ n8 E
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了