PLM之家精品课程培训,联系电话:18301858168 QQ: 939801026

  • NX二次开培训

    NX二次开培训

    适合初级入门或想深入了解二次开发的工程师,本培训结合ufun,NXOpen C++,大量的实例及官方内部的开发技术对于老鸟也值得借鉴!.

    NX CAM二次开发培训报名 NX二次开发基础培训报名
  • PLM之家Catia CAA二次开发培训

    Catia二次开发培训

    Catia二次开发的市场大,这方面开发人才少,难度大。所以只要你掌握了开发,那么潜力巨大,随着时间的积累,你必将有所用武之地!

  • PLM之Teamcenter最佳学习方案

    Teamcenter培训

    用户应用基础培训,管理员基础培训,管理员高级培训,二次开发培训应有尽有,只要你感兴趣肯学习,专业多年经验大师级打造!

  • PLM之Tecnomatix制造领域培训

    Tecnomatix培训

    想了解制造领域数字化吗?想了解工厂,生产线设计吗?数字化双胞胎,工业4.0吗?我们的课程虚位以待!

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

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

  [复制链接]

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

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

PLM之家NX 楼主

2014-5-5 22:45:05

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

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

x
: C9 [* ?6 v0 x2 y" U3 o% m: e
7 K" V. w3 u5 u' T
6 T8 w1 Q& R6 W* \/ B4 L
UG NX二次开发源码分享: NX Open C++ 创建投影曲线 project curves
9 ~8 B# ~7 I' ^4 u) h% A- A* N' f, \2 s( S9 p9 G
此处使用的是 通过面的法向创建投影曲线,可以参考下!
/ p1 N5 U9 R0 S' V7 \, Y
4 m; P9 e. C; |$ [- E/ [; d" l/ b- L( j$ x. E7 r; r

: {2 }% f6 e( ~+ {1 n& U5 e( c
0 O3 f# \' L1 d( F7 B# M% j4 N' K3 B. C

& e( T$ e' S" \1 S1 @7 Z& R: O6 ]; k6 C/ o- f

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

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

! e+ R, O# j0 ^0 h0 X6 q0 k: G3 u, ?# a. i4 W; R/ v
" \; r  w, k) n

  1. 4 B' s5 k$ R* Z6 R% ?! P! {
  2. int trimSteels::project_curves(vector<TaggedObject *>inputObjects,Plane *plane1)
    # o/ u, R: a0 |# ?" [- N
  3. {+ g. \4 R. q% D9 B+ ]/ ^0 F; ^
  4.         int errorCode = 0;
    ! j' F2 K  _9 K5 b
  5.         try
    $ O. \& O6 r9 M, x, Z! n
  6.         {
    0 o7 m/ }, ~- W, I* e5 a
  7.                 // createProject curves2 @; _  m# L! a$ a. K9 e
  8. & g0 o1 c- k+ m8 [4 g' G9 ?4 Z
  9.                 Features::Feature *nullFeatures_Feature(NULL);
    1 `' ?! A! B9 `3 s3 j& s2 u/ L( Z

  10. ; r: m9 ^( h  f0 s! L& g' i  F
  11.                 Features::ProjecTCurveBuilder *projectCurveBuilder1;
    . O' t& f, R4 ~7 T* L0 a
  12. * t1 Q0 i* p/ D5 e5 j6 U
  13.                 projectCurveBuilder1 = workPart->Features()->CreateProjectCurveBuilder(nullFeatures_Feature);& k7 p6 \% c6 D3 Z  N$ o

  14. : o7 s$ }5 I  L% J" N
  15.                 projectCurveBuilder1->SectionToProject()->SetDistanceTolerance(DISTANCETOLERANCE);
    / G0 F& w/ j2 @5 W( M5 j* l

  16. + b- M: G/ }2 D" z$ g& A! ~
  17.                 projectCurveBuilder1->SectionToProject()->SetChainingTolerance(CHAININGTOLERANCE);. ?! F8 @) G. P# O
  18. & F/ E" F" W: Y1 M; h
  19.                 projectCurveBuilder1->SectionToProject()->SetAngleTolerance(ANGLETOLERANCE);
    3 i7 {% X+ l  Y5 J: F' R2 K5 r* n
  20. ( @3 d1 r% s; t8 q+ n9 q
  21.                 projectCurveBuilder1->SectionToProject()->SetAllowedEntityTypes(Section::AllowTypesOnlyCurves);
    7 @0 x, z$ m0 F5 m( o" \' C5 X
  22. : i" O; n; l: i
  23.                 projectCurveBuilder1->CurveFitData()->SetTolerance(DISTANCETOLERANCE);$ i9 p" Q1 c& j! T
  24. " f: o9 G# G2 N7 i4 q
  25.                 projectCurveBuilder1->CurveFitData()->SetAngleTolerance(ANGLETOLERANCE);/ S/ H6 v% M+ g( V

  26. 1 E2 r0 [( ^, W2 X) D' W3 j
  27.                 int size = (int)inputObjects.size();+ q  j% P* @/ F7 D
  28.                 std::vector<IBaseCurve *> curves1;
    3 u+ o8 k3 c& l5 u9 P
  29.                 for (int ii = 0 ; ii < size; ++ii)
    $ q1 t+ J3 C- n* e6 Y- B) @- q& y
  30.                 {
    & \3 s( n$ |( T, P! h+ n
  31.                         curves1.push_back(dynamic_cast<IBaseCurve*>(inputObjects[ii]));
    / G; K8 E$ f" F: h+ A9 i3 n
  32.                 }
    * q! j* ?9 R7 }# \
  33. 1 H& Q+ P1 n4 N1 i! I) }) f
  34.                 NXOpen::CurveDumbRule *curveDumbRule1;
    0 u  T+ d) A0 H% [" k4 k

  35. ; |9 Z/ m5 p9 C- T
  36.                 curveDumbRule1 = workPart->ScRuleFactory()->CreateRuleBaseCurveDumb(curves1);
    # W" F1 k, G1 P- f( I. y- B

  37. - t" ]: e; V+ _# [9 k0 E
  38.                 projectCurveBuilder1->SectionToProject()->AllowSelfIntersection(true);
    # {9 z5 E& V4 N) |) p! N0 D/ `

  39. 2 M; }) g% J* z/ L' y) y5 g
  40.                 std::vector<SelectionIntentRule *> rules1(1);+ h6 \; ]# u/ ]# b) p
  41.                 rules1[0] = curveDumbRule1;
    ) G3 w/ ?. x( t! }
  42.                 NXObject *nullNXObject(NULL);( R1 {- G1 i5 C
  43.                 Point3d helpPoint1(0, 0, 0);3 v8 F! z8 [3 C: L+ E/ [$ A& t
  44.                 projectCurveBuilder1->SectionToProject()->AddToSection(rules1, nullNXObject, nullNXObject, nullNXObject, helpPoint1, Section::ModeCreate, false);# h" N( `$ [/ n  s% ^& {1 f( q; p

  45. % b! N# I; z' ]
  46.                 plane1->Evaluate();
    " z  t6 L2 ]$ P9 Y
  47. - f+ z6 `5 ~2 X) I5 K
  48.                 projectCurveBuilder1->SetPlaneToProjectTo(plane1);
    1 ?; m# }( n; Z/ w

  49. , A* I7 @- t( f$ x
  50.                 projectCurveBuilder1->SetGapOption(true);, a! @# X( s+ N

  51. 8 E6 N9 W5 i7 Z+ G) y* W+ s
  52.                 projectCurveBuilder1->CurveFitData()->SetCurveJoinMethod(GeometricUtilities::CurveFitData::JoinGeneral);% W- z  m8 S7 e
  53. & P! L  ?3 X( c4 q( F
  54.                 NXObject *nXObject1;9 g2 A+ |3 z9 w2 G( L, E
  55.                 nXObject1 = projectCurveBuilder1->Commit();. ?9 x! m0 F% y; H0 t. f

  56. 0 c, D) |3 m+ P( ~' Q
  57.                 projectCurveBuilder1->SectionToProject()->CleanMappingData();1 T' ~6 |9 f) [/ g5 Q
  58. 4 A3 T; J8 U" W3 q
  59.                 projectCurveBuilder1->Destroy();
    " s+ F2 U* _& @' ^1 g
  60. # ]% y, N" C1 v2 _' J7 v: K3 [
  61.         }
    5 I2 a$ P" X% s
  62.         catch(exception& ex)
    ( T- R. |/ M! H) v0 |- M8 B
  63.         {
    & j; g0 V3 P$ u# ~/ s" \% M/ P- }
  64.                 //---- Enter your exception handling code here -----. f. [* E4 F7 x: v. _1 s
  65.                 errorCode = 1;, i: a" j, d2 M% {* h1 p
  66.                 trimSteels::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeError, ex.what());
    , L8 s; s1 j# g0 n  V
  67.         }) L8 b, l. o8 ~$ {4 J8 \, V; A
  68. 9 W* u) U# t; G: O  K
  69.         return errorCode;2 k3 E4 ^+ z+ \' ]7 p2 w2 E+ n0 }& |
  70. }- V- e8 m9 p0 S) S0 M- u
复制代码

- n. s# v- f2 ~3 d, @
- q) U9 l, j9 ^" m) f1 ?. B: l+ _/ y$ F( M9 V
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了