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

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

  [复制链接]

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

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

PLM之家NX 楼主

2014-5-5 22:45:05

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

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

x
- J" A  L$ e! V% G5 l; ?

. L% S; h! {' b: G* x+ F; D( e' K$ U  \9 i  q3 i
UG NX二次开发源码分享: NX Open C++ 创建投影曲线 project curves4 c4 ^4 ?, Y) [$ y4 ]# k

) u- P; F) y1 X! s9 p; x此处使用的是 通过面的法向创建投影曲线,可以参考下!
. ?5 U/ p$ @. O4 S; s9 w8 o& w, j& v7 \: z

' Z' p% T: k4 w! X9 H9 C
& e& @, y8 M) E( e
& t/ c7 w/ T8 t$ P
' b6 u2 H3 T5 A) V; @) ^5 E& a/ Z+ w" n/ A" D
9 n2 [( D5 n5 r, D6 c/ }8 r. ~

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

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

3 N  g# O4 q- p5 a+ L0 l: ]! q, V- T+ G1 d9 o- k: _

/ X* _; c  O! [! h# D& n

  1. $ N7 ?7 t) f$ q9 |7 v1 ~0 W$ y
  2. int trimSteels::project_curves(vector<TaggedObject *>inputObjects,Plane *plane1)/ t, p" x  h$ G* ?: ?2 J
  3. {
    5 R  I3 E  Q( ~
  4.         int errorCode = 0;6 Q4 k) I1 \: X; y$ k
  5.         try9 O0 t9 c/ T( v$ u( q9 F
  6.         {
    7 j3 u2 i& j0 ^# y
  7.                 // createProject curves
    ; V* u* {, w. s" n: o

  8. 8 R* g6 C* V2 Q( B' [
  9.                 Features::Feature *nullFeatures_Feature(NULL);& q: ?% f' P( W
  10. . z3 _- w1 u; i2 ^1 q% k5 I/ X
  11.                 Features::ProjecTCurveBuilder *projectCurveBuilder1;
    * S( e# |) \- E) J
  12. 5 I3 A0 b2 e; {! i9 \
  13.                 projectCurveBuilder1 = workPart->Features()->CreateProjectCurveBuilder(nullFeatures_Feature);" \# h) u* s2 k7 ]: n5 w; F6 ?. S& L" N

  14. : c+ ^* N4 n( n$ [( \: x, F: W
  15.                 projectCurveBuilder1->SectionToProject()->SetDistanceTolerance(DISTANCETOLERANCE);
    / M1 ]' T3 y5 B- a3 `
  16. 4 R5 X; R3 _  A( M! y
  17.                 projectCurveBuilder1->SectionToProject()->SetChainingTolerance(CHAININGTOLERANCE);
    6 Y0 N5 d7 R% z) x

  18. 6 t% D, i" q+ C1 N  l" w
  19.                 projectCurveBuilder1->SectionToProject()->SetAngleTolerance(ANGLETOLERANCE);
    3 c% i# Y. j5 d5 {$ K3 l+ _
  20. 3 |' l4 T/ f/ r+ h$ `1 n5 y
  21.                 projectCurveBuilder1->SectionToProject()->SetAllowedEntityTypes(Section::AllowTypesOnlyCurves);
    4 }- V, a# Y: w+ o/ p5 ^
  22. 5 n. g/ ?3 m' N1 V: A
  23.                 projectCurveBuilder1->CurveFitData()->SetTolerance(DISTANCETOLERANCE);
    8 m# C% w: S. b# J) G4 D$ I' m

  24. + Q; m; d9 G, I( G4 t5 X- R0 ]! l
  25.                 projectCurveBuilder1->CurveFitData()->SetAngleTolerance(ANGLETOLERANCE);7 `% s) g) k$ q/ {& H
  26. : R1 Z4 @- G) }
  27.                 int size = (int)inputObjects.size();: {: l* P  A& m+ N* L, W5 ~
  28.                 std::vector<IBaseCurve *> curves1;
    " A  s  _' J, h6 J
  29.                 for (int ii = 0 ; ii < size; ++ii)
    - R3 E* ]1 ]" |+ C; p' |
  30.                 {
    & }: S3 E- `. `3 F8 C. H
  31.                         curves1.push_back(dynamic_cast<IBaseCurve*>(inputObjects[ii]));
    7 B; f* W" U( W; }9 w5 l; V
  32.                 }
    $ B- I3 C- Y+ i% h/ `

  33. 5 e: n) p4 P( ]6 x
  34.                 NXOpen::CurveDumbRule *curveDumbRule1;
    # g% w2 {# v& U( h2 n6 F: V
  35. " k- J- l& ?. h0 m( Q. Q* z
  36.                 curveDumbRule1 = workPart->ScRuleFactory()->CreateRuleBaseCurveDumb(curves1);7 I. @3 ?# L0 L+ K
  37. 0 O7 f, ^! j/ P  @8 h/ u$ N# F" M
  38.                 projectCurveBuilder1->SectionToProject()->AllowSelfIntersection(true);
    " @. i# Q3 g# a; S: p: a
  39. 2 e  y, Z+ J5 p) ]0 `
  40.                 std::vector<SelectionIntentRule *> rules1(1);
    / B7 g5 b/ {7 n7 F" n
  41.                 rules1[0] = curveDumbRule1;; D* O- V# w0 n8 ~) C' f2 s
  42.                 NXObject *nullNXObject(NULL);( _3 x  s+ |7 t: d( i
  43.                 Point3d helpPoint1(0, 0, 0);
    ' S1 u; @1 Z& S; O, k
  44.                 projectCurveBuilder1->SectionToProject()->AddToSection(rules1, nullNXObject, nullNXObject, nullNXObject, helpPoint1, Section::ModeCreate, false);
    0 M7 |* v7 ~* X" @1 b5 f( x3 n
  45.   c6 J) c# r' \4 z. r$ U$ Z" I7 A
  46.                 plane1->Evaluate();& `0 z: l5 X) O9 B$ q8 B, c9 R
  47. ; B4 {6 o# h- j/ ]5 R0 y0 u3 F4 z3 L
  48.                 projectCurveBuilder1->SetPlaneToProjectTo(plane1);0 c3 A9 V3 n" T0 r- R, t* N2 e

  49. 9 i$ t  G( o( U) u/ n5 s
  50.                 projectCurveBuilder1->SetGapOption(true);
    ) t  J% _0 d( Z9 @

  51. ! T" \4 c+ {4 m; E& [0 l. A! K. u8 B% d
  52.                 projectCurveBuilder1->CurveFitData()->SetCurveJoinMethod(GeometricUtilities::CurveFitData::JoinGeneral);4 y) i6 a3 F) e: [

  53. 3 h4 S" ~; O) v( Z6 v
  54.                 NXObject *nXObject1;
    4 ]1 E* N$ [" S; [
  55.                 nXObject1 = projectCurveBuilder1->Commit();; Y$ w. V+ \5 y& f, }
  56. / t& D) w2 c4 l
  57.                 projectCurveBuilder1->SectionToProject()->CleanMappingData();2 Z# K$ F0 g: b& i' }! `. X3 \

  58. 8 F  c. x$ D5 w3 `& O
  59.                 projectCurveBuilder1->Destroy();6 n: {& z* |! X3 W- Y1 M
  60. 7 @! o' H* C$ _9 m8 o4 i
  61.         }6 |- H6 ^6 ~3 ]. P/ d
  62.         catch(exception& ex)) H. j- R" \! H: d1 p: r
  63.         {* x0 P6 q( R$ `
  64.                 //---- Enter your exception handling code here -----& [8 V  E/ t9 M% u( k+ t0 a
  65.                 errorCode = 1;
    9 {5 y2 V5 F; ]% S! w
  66.                 trimSteels::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeError, ex.what());5 U/ u& r& C! R9 c# {5 g
  67.         }7 z" b. |. c7 f* R& N) b

  68. " Y/ J. a* i1 A, z+ w
  69.         return errorCode;  Q- ~. n; q* Y  P( i# o; u) U
  70. }! O( d7 y* I' A* ], u
复制代码

5 l0 ^& h9 A$ p( y# q4 [2 r
! N0 A9 Q4 n7 s! n. z
6 F8 k! E! C/ Q' h- ^) H, 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二次开发专题模块培训报名开始啦

    我知道了