PLM之家PLMHome-工业软件与AI结合践行者

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

  [复制链接]

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

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

PLM之家NX 楼主

2014-5-5 22:45:05

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

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

x

( c7 u1 F7 \& @1 `+ R+ L3 n. n' p$ X0 H0 X" b% s

' W$ e2 C% [( w$ x7 z1 wUG NX二次开发源码分享: NX Open C++ 创建投影曲线 project curves0 k5 S# p6 L/ M: H
- T* `& Z* q; B# l
此处使用的是 通过面的法向创建投影曲线,可以参考下!
! Z; Z) n* Z  e/ f4 ~. M% Z7 _& D) M0 b! V6 x5 Z. \# W4 G' }# R

# f# F7 @. }; U& O4 @$ M- V7 G7 C* f% S5 }

! ?( V8 C4 E( k, U# ?: `0 ?
8 e: S% t) V' h1 Q! \
+ y8 O! ?7 t8 g, ]1 j$ \; G
1 x: m& U: I/ n4 L/ t" [& h0 {

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

 NX Open C++ 创建投影曲线 project curves
5 |4 K! c% t3 Y' U7 u

; A9 E1 @1 i, A/ W0 S# c$ a& n: ~& y4 {- U% c$ e2 K6 _, q

  1. 1 G! B3 w9 U, |$ h
  2. int trimSteels::project_curves(vector<TaggedObject *>inputObjects,Plane *plane1)% L& h) @8 W: t& ^1 ~4 i3 h
  3. {+ C2 ]2 m# K- R, `6 G1 p7 }; s
  4.         int errorCode = 0;
    ( W. N  K  z* q& u/ d. X2 i
  5.         try4 m7 j" O% f" e" j
  6.         {0 ?% ]1 }! |6 o/ {% P
  7.                 // createProject curves- u4 }+ R( H7 E4 D0 U

  8. " Q" K$ B# D' M2 D: e- _
  9.                 Features::Feature *nullFeatures_Feature(NULL);
    * t/ H% z2 V* l* x* f! q* n

  10. ' E' |# _4 y8 ^
  11.                 Features::ProjecTCurveBuilder *projectCurveBuilder1;
    : A/ R% C* {3 _; f$ x7 f0 F1 I
  12. ' o) R5 H* ]/ z$ m7 o$ [9 d
  13.                 projectCurveBuilder1 = workPart->Features()->CreateProjectCurveBuilder(nullFeatures_Feature);% M. }$ O# p9 Y5 q
  14. + O: I, B  m# ?9 o: [( }# O7 X# D
  15.                 projectCurveBuilder1->SectionToProject()->SetDistanceTolerance(DISTANCETOLERANCE);( Q: Q9 ^6 P5 J4 }

  16. 4 b4 s: i2 n: D% T* T' H0 U
  17.                 projectCurveBuilder1->SectionToProject()->SetChainingTolerance(CHAININGTOLERANCE);% Z" T+ l% y5 f$ u  c
  18. + |4 z, v9 y3 \, l) o
  19.                 projectCurveBuilder1->SectionToProject()->SetAngleTolerance(ANGLETOLERANCE);
    : h" o+ ]: v3 _% v

  20. , {& ?& a* j, p2 p. z2 d  i
  21.                 projectCurveBuilder1->SectionToProject()->SetAllowedEntityTypes(Section::AllowTypesOnlyCurves);
    1 D( b' Y+ I- h+ P

  22. " F2 N/ v1 V& }: c; F1 C1 y
  23.                 projectCurveBuilder1->CurveFitData()->SetTolerance(DISTANCETOLERANCE);
    # ?5 w: n# M. {
  24. # e. u: F, H9 {
  25.                 projectCurveBuilder1->CurveFitData()->SetAngleTolerance(ANGLETOLERANCE);
    5 h2 ^% A# A" S& s; @" ]
  26. * z! C3 u0 d) k
  27.                 int size = (int)inputObjects.size();: p" X, y* v, B
  28.                 std::vector<IBaseCurve *> curves1;
    : O( }7 g6 o2 q0 _  i7 r
  29.                 for (int ii = 0 ; ii < size; ++ii)  p' F' ^% l( P6 h/ f( B
  30.                 {, v" G+ N/ ~7 e# r* [) J$ s4 A
  31.                         curves1.push_back(dynamic_cast<IBaseCurve*>(inputObjects[ii]));: w, `' G6 n8 M3 Y( z& n" ~. y* q2 I' A
  32.                 }: ^$ y+ W5 h& e! K# O5 W

  33. , x' F6 @# u  k: e1 y
  34.                 NXOpen::CurveDumbRule *curveDumbRule1;9 G7 W6 W& U* W& g$ Q8 [
  35. & y9 g3 @- ]* \, m" ^8 s% n
  36.                 curveDumbRule1 = workPart->ScRuleFactory()->CreateRuleBaseCurveDumb(curves1);
    # s# c& _) Y$ X2 n, z( F9 a: M' P

  37. : O2 G, B7 N! B3 p2 H5 I+ ^# H
  38.                 projectCurveBuilder1->SectionToProject()->AllowSelfIntersection(true);
    : q7 i- Z4 |+ r1 A9 P

  39. 9 d* L. @1 K) t6 y7 ~* g- K& d
  40.                 std::vector<SelectionIntentRule *> rules1(1);
    % I0 o6 N# {! _5 `5 `  l7 j
  41.                 rules1[0] = curveDumbRule1;, g8 q+ p8 t8 T8 l! N& u- H
  42.                 NXObject *nullNXObject(NULL);0 t4 D+ ^3 q) F2 Y# q% k
  43.                 Point3d helpPoint1(0, 0, 0);& l' M6 n  K  {$ }% i+ ^
  44.                 projectCurveBuilder1->SectionToProject()->AddToSection(rules1, nullNXObject, nullNXObject, nullNXObject, helpPoint1, Section::ModeCreate, false);
    % @8 G- S3 M2 A

  45. 1 U1 u" y' c1 K& h
  46.                 plane1->Evaluate();3 S9 e( ^0 M3 ]' o9 {# N' t$ Z4 w

  47. ( u' D/ e$ G' w+ e' n
  48.                 projectCurveBuilder1->SetPlaneToProjectTo(plane1);2 B# B; ?4 V1 P# |
  49. ( C! e, I5 E1 F! m$ ]; [
  50.                 projectCurveBuilder1->SetGapOption(true);
    ( W+ n$ G8 L' h5 y8 d  y5 d

  51. & I$ u, q/ Z, F4 G
  52.                 projectCurveBuilder1->CurveFitData()->SetCurveJoinMethod(GeometricUtilities::CurveFitData::JoinGeneral);5 N( ]) d( o% y$ ?5 S6 k
  53. # J" ^2 @8 k& |' j! {" k6 d
  54.                 NXObject *nXObject1;
    ; @5 w1 e# b1 P: O1 L
  55.                 nXObject1 = projectCurveBuilder1->Commit();% l5 {$ o% x# _5 g) A: ^& b+ `

  56. 7 L8 B& G1 E) B# V
  57.                 projectCurveBuilder1->SectionToProject()->CleanMappingData();
    6 M2 p: [5 G4 w
  58. 2 |4 J. j3 H* }1 s
  59.                 projectCurveBuilder1->Destroy();! }: q: U7 h3 b( q8 L

  60. , H2 J( H0 {: M# ]5 @
  61.         }3 N7 p4 V; f! ^9 H5 D. W' q! k, o3 G
  62.         catch(exception& ex)% G, e! x" Y: u, }0 E) [1 F
  63.         {, u% [: D6 N. l& I' f  U+ S' C
  64.                 //---- Enter your exception handling code here -----# S2 a% h1 j, \- }& H7 p
  65.                 errorCode = 1;- ~4 x+ W* X9 b% O' @# K& j  ]1 C
  66.                 trimSteels::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeError, ex.what());+ y) H; K/ u# u) {+ x- m
  67.         }
    # g4 j" \1 [. P$ P
  68. + |7 F2 f+ k9 k' m  v5 |2 H
  69.         return errorCode;  _  v" }6 W8 z
  70. }% o: r4 j  @% ]0 U0 N
复制代码

1 Q1 Z; d4 ]( G- d8 v3 O$ l+ u
* Q' x# c, s' Z( V. e
9 B9 C. T- w3 z9 v6 u: b( u
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了