PLM之家PLMHome-工业软件践行者

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

  [复制链接]

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

16

主题

5

回帖

188

积分

注册会员

积分
188
发表于 2014-5-5 22:45:05 | 显示全部楼层 |阅读模式

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

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

x
) E: r: t2 n! k2 r" u3 U( G

4 i2 j4 }" ~5 r; }# \# U" F5 S; R, Q# _8 U6 D& O6 F
UG NX二次开发源码分享: NX Open C++ 创建投影曲线 project curves
# S+ M! x1 ^6 a
: ?' V! E1 ?" C; K! {此处使用的是 通过面的法向创建投影曲线,可以参考下!
& \) l. [7 ~! ^, ]7 W% q' A/ q5 B% V) p

9 f( Y1 M! p+ B7 `. c# E+ C1 @1 x/ ^: ]$ {* _0 P

9 u8 s0 {2 n+ j8 Q3 X! |/ v" c/ S. f; U& W! U# B# z" ]" i

5 L- H7 i) _; B% c6 A( x/ C
  r# ^6 |( M0 r6 k& n1 k7 w

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

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

+ D3 K9 n8 [$ T- _, I0 E! x! u
5 I2 h; P  r% q: e7 t" n" g) w' f0 }6 q* Q3 z: z; X) [7 N; g

  1. - r3 l8 c8 R! ~7 k+ G+ P% t1 Z
  2. int trimSteels::project_curves(vector<TaggedObject *>inputObjects,Plane *plane1)
    - k  l- n6 V! A! }. n* Z# V
  3. {  S: |5 Q( h5 j, f4 ~9 y" y' q( z' ?2 {
  4.         int errorCode = 0;9 @+ R9 C1 h1 e- q$ Q
  5.         try
    . {/ A5 W# R0 l6 p
  6.         {
    , A0 \% s2 s" ]; K
  7.                 // createProject curves  u! @' T4 R- Y& Q( C
  8. , v6 P" T& m& s& I
  9.                 Features::Feature *nullFeatures_Feature(NULL);+ Y- H( l+ Y! H. L

  10. 7 o% @' x8 ?+ {' _6 M  a* o
  11.                 Features::ProjecTCurveBuilder *projectCurveBuilder1;( t" f, c3 p! d6 G8 F7 @% b: Z
  12. : ?8 }- {8 z! P
  13.                 projectCurveBuilder1 = workPart->Features()->CreateProjectCurveBuilder(nullFeatures_Feature);. i5 N/ `2 \) E/ m# `5 c
  14. 4 F* r) W; l( A1 k/ J. c
  15.                 projectCurveBuilder1->SectionToProject()->SetDistanceTolerance(DISTANCETOLERANCE);
    + E4 H5 g! p. }2 h6 S' u( c6 o
  16. 7 f$ u. @( ^5 Z8 X8 ?
  17.                 projectCurveBuilder1->SectionToProject()->SetChainingTolerance(CHAININGTOLERANCE);
    ' W, ~+ {' k# @' L& \9 j$ E! Y
  18. ) C0 |! D: J. U5 E% ?8 C  F1 ~
  19.                 projectCurveBuilder1->SectionToProject()->SetAngleTolerance(ANGLETOLERANCE);# |' l% Q6 ?  n8 M! Q

  20. / r  S9 S$ r6 B
  21.                 projectCurveBuilder1->SectionToProject()->SetAllowedEntityTypes(Section::AllowTypesOnlyCurves);
    9 }, Z+ ?8 L9 ?+ b/ V! K& w8 J- a
  22. 2 ^9 o% o( k2 u& ]
  23.                 projectCurveBuilder1->CurveFitData()->SetTolerance(DISTANCETOLERANCE);
    ( |1 ]6 d) E6 Y0 B

  24. 9 Z6 n( Y& \1 U$ r. b2 B) h
  25.                 projectCurveBuilder1->CurveFitData()->SetAngleTolerance(ANGLETOLERANCE);! V3 k7 `) R3 w
  26. 4 d9 J# o6 p$ j* l3 N7 ^
  27.                 int size = (int)inputObjects.size();5 k/ @; {1 |' I# S5 R+ o; }
  28.                 std::vector<IBaseCurve *> curves1;, b4 e/ b3 Z% t( w* ?4 z
  29.                 for (int ii = 0 ; ii < size; ++ii)& u4 o1 @" P/ F
  30.                 {
    $ T, {( |9 t3 G( R8 C/ {- P; @
  31.                         curves1.push_back(dynamic_cast<IBaseCurve*>(inputObjects[ii]));
    5 S2 p' `' n+ q( I8 n
  32.                 }6 y% y/ ]& C& m, M$ _3 l1 U* Z

  33. " l/ x: ]* ?9 i% T0 X
  34.                 NXOpen::CurveDumbRule *curveDumbRule1;
    * c' M$ h$ g, C; \

  35. : _9 C) P3 N. \2 f5 A
  36.                 curveDumbRule1 = workPart->ScRuleFactory()->CreateRuleBaseCurveDumb(curves1);
    / q9 A2 O8 H7 g6 `. f

  37. , m2 f4 }; g! m0 [
  38.                 projectCurveBuilder1->SectionToProject()->AllowSelfIntersection(true);
    : n* |1 F* |/ A( a5 s, d% X/ D
  39. ( r# x& {) C; D( X9 ^
  40.                 std::vector<SelectionIntentRule *> rules1(1);
    3 P# a, y6 d3 M. N2 G
  41.                 rules1[0] = curveDumbRule1;
    7 n& g/ s% |  Z3 d6 m8 J
  42.                 NXObject *nullNXObject(NULL);9 c1 i' }$ n7 ~( I5 `
  43.                 Point3d helpPoint1(0, 0, 0);
    + a" L# c1 X5 n8 s6 ?: V* f9 C
  44.                 projectCurveBuilder1->SectionToProject()->AddToSection(rules1, nullNXObject, nullNXObject, nullNXObject, helpPoint1, Section::ModeCreate, false);8 t% R0 u) R. ?- [
  45.   o& p2 W# k9 M. C
  46.                 plane1->Evaluate();
    5 K" s; {2 F# M" `3 G- v
  47. 7 M# J/ z# z. m' R! k% ]! ]
  48.                 projectCurveBuilder1->SetPlaneToProjectTo(plane1);/ G! n& _$ `& q6 X5 A- ?6 v. r# _
  49. 1 E  c! K+ N/ D0 q0 O
  50.                 projectCurveBuilder1->SetGapOption(true);
    & T7 g4 ]5 h" [6 O* m1 p# N

  51. . @, @8 K* V6 H1 Q, t
  52.                 projectCurveBuilder1->CurveFitData()->SetCurveJoinMethod(GeometricUtilities::CurveFitData::JoinGeneral);" {" x1 o' b8 F5 `9 l7 `

  53. % h% u( ]6 y5 l) O
  54.                 NXObject *nXObject1;
    % G, L' u& i& w, y! z9 }/ }0 u
  55.                 nXObject1 = projectCurveBuilder1->Commit();- ~) p1 y( L* }+ E( T& U, T2 q

  56. # c' n- s5 I9 L+ E/ |
  57.                 projectCurveBuilder1->SectionToProject()->CleanMappingData();
    + H" k; S$ n8 H/ O2 m9 [$ F

  58. ' \: N3 B2 c4 O: L7 N0 g
  59.                 projectCurveBuilder1->Destroy();. s# q/ F5 C: h) z1 u* D! J

  60. . d+ \" C0 P' b3 E- k, l3 ~! o
  61.         }' t! L& }7 L6 d4 H7 p6 H
  62.         catch(exception& ex): T6 f4 i) n# S0 J& O& R
  63.         {
    7 m5 S' Z# a$ B
  64.                 //---- Enter your exception handling code here -----
    # t: ^& Y) T" b3 B
  65.                 errorCode = 1;5 D3 P  m6 y0 _9 o& @
  66.                 trimSteels::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeError, ex.what());' R; r7 ^& C+ l4 ]" a7 ?, v
  67.         }* }, Y; U2 q( a6 |0 F
  68. 6 |. c, g& @4 |# O# ~
  69.         return errorCode;5 ?4 e9 l2 S2 x- i3 T" c
  70. }+ O& N4 w0 C6 I1 I3 Q  N/ K8 y
复制代码

; T: V1 q8 `7 T/ O) k2 ?
& r6 C) I4 v; m0 ^0 V! t( ?. Q5 y9 P' e/ Z4 K
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 www.doteam.tech
回复

使用道具 举报

全部回复3

1

主题

7

回帖

37

积分

新手上路

积分
37
发表于 2014-5-15 17:18:05 | 显示全部楼层
创建完投影之后 如何能够获取投影曲线的指针呢?
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 www.doteam.tech
回复 支持 反对

使用道具 举报

1

主题

7

回帖

37

积分

新手上路

积分
37
发表于 2014-5-15 17:54:14 | 显示全部楼层
版主 我找到接口了
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 www.doteam.tech
回复 支持 反对

使用道具 举报

0

主题

13

回帖

56

积分

注册会员

积分
56
发表于 2019-4-25 18:47:55 | 显示全部楼层
学习了,高手
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 www.doteam.tech
回复 支持 反对

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 注册

返回列表 本版积分规则

  • 发布新帖

  • 在线客服

  • 微信

  • 客户端

  • 返回顶部

  • x
    温馨提示

    本网站(plmhome.com)为PLM之家工业软件学习官网站

    展示的视频材料全部免费,需要高清和特殊技术支持请联系 QQ: 939801026

    PLM之家NX CAM二次开发专题模块培训报名开始啦

    我知道了