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-国产软件践行者

[二次开发源码] 【二次开发源码】一种基于点投影,获取投影原始点的方法

[复制链接]

2023-2-28 20:27:29 860 0

admin 发表于 2023-2-28 20:27:29 |阅读模式

admin 楼主

2023-2-28 20:27:29

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

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

x
8 M( p* u: _5 X. n8 b9 o' r1 |- i

' a: B3 @! I( i6 B4 l! M7 s  U
  A- Z. h/ S! `3 }【二次开发源码】一种基于点投影,获取投影原始点的方法$ P0 b6 B% G8 b+ r! N+ v

4 Z( x8 ?  [$ H% i一直斜边和一个直边的向量,单位向量可以通过dot 获取 夹角
2 B4 k6 }4 a% G7 t8 I4 d3 z# S2 [然后通过勾股定理,计算得到长边值,最后进行基于点的affine,即可获取斜边向量
. w* ~/ {! K2 r
+ I: v% d- ?) X* h

  1. 4 e6 s% Q. P9 V* F! B
  2. //这里仅仅考虑Z轴方向
    ! J8 _/ u) s' u3 a& Z
  3. void Get_Projection_OrignalPoint(double basePoint[3],double maxZValue,double projectOrignialUnitDir[3], double newOriginalPoint[3])7 I7 o4 v  g; r
  4. {
    6 r4 X; m" V4 T5 F8 ~( _
  5.         double dotResult;( |! ?4 \+ i+ R; ], G: K* L$ A7 w9 M
  6.         double longDistance;3 ?& l# R7 ^" k+ I, N
  7.         double zDir[3] = { 0.0,0.0,1.0 };" i$ i1 f+ P2 P$ [1 x' W0 G6 g( \- v' E+ {
  8.         //直线距离- R% W) ?) a+ l/ B
  9.         double deltaProjectDistance = fabs(maxZValue - basePoint[2]);
    3 V3 I# L0 d  O

  10. 4 \0 A! m8 n& S! L$ _& d2 F
  11.         Echo("斜度垂直直线距离:%.3f maxZValue:%.3f", deltaProjectDistance, maxZValue);
    2 X8 M* B$ f7 u. J' b  F

  12. 5 W; J6 t# N0 r) e: v( B; N& ?/ D
  13.         if ( EQ_is_eq(deltaProjectDistance,0.0,MINTOL)) //就是最高点 ,直接返回
    : N1 Z. _3 w' R" P, a
  14.         {
    6 a9 z% T! D; D% a$ Y3 u
  15.                 UF_VEC3_copy(basePoint, newOriginalPoint);6 ~; s/ g9 _' D5 j
  16.                 return;& E5 z4 v& J$ a
  17.         }
    9 _" m: i- v8 }! k3 x$ I, V

  18. : O; o+ n& o4 |" s- U
  19.         //计算夹角,通过单位矢量
    ! T- x+ J9 D) _8 _
  20.         //faceDir 可能反向
    / O/ y0 h, _2 X. v
  21.         UF_VEC3_dot(projectOrignialUnitDir, zDir, &dotResult);; P/ C8 Y# t% [( M" b5 s
  22.         // cos() faceDir.zDir = |FaceDir||ZDir|cos(angle)
    4 y  l* X1 Q, X" B/ k
  23.         double cosAngle = fabs(dotResult);- W9 }& Z' [( M5 _: i- B0 s7 [
  24.         " I, l) n7 N/ ^
  25.         //斜边距离
    ! w2 Q# V5 ]' T
  26.         if (EQ_is_zero(cosAngle, MINTOL))
    " T7 h1 ~4 K* D0 o. X
  27.         {4 _: Z8 d1 l/ h: g
  28.                 longDistance = deltaProjectDistance;
    : G- R  n) S; h) y% ?# L, v6 d) a
  29.         }
    , F+ {0 v3 m& t7 X/ O
  30.         else
      ]0 B0 _3 k1 d/ ~2 N
  31.         {- r+ H7 G" O) n; S) S5 x/ }, P
  32.                 longDistance = deltaProjectDistance / cosAngle;7 W  D$ p2 v8 j- @* f4 x
  33.         }$ k8 s: E% V: |  H( u/ L, @
  34.         + ?- a1 \4 ]3 `# k* y  W) l0 S
  35.         //这里可能出现方向相反,我们需要进行一次判定. s% O, s6 y/ B9 e& i
  36. # `% j3 @. V2 {4 C, v6 ?) [
  37.         UF_VEC3_affine_comb(basePoint, longDistance, projectOrignialUnitDir, newOriginalPoint);1 f" q" x8 c1 }1 X$ [6 t

  38. # h0 }0 b2 N9 N6 e
  39.         Echo("maxZValue: %f ,newOriginalPoint[2]:%.3f", maxZValue, newOriginalPoint[2]);& E$ Q& Y3 n# J) N% [9 j# u$ `

  40. 6 {- [: D/ J0 q* P, F' w  d
  41.         if (!EQ_is_eq(maxZValue,newOriginalPoint[2],MINTOL))
    % `# Z7 f( k6 D% K
  42.         {
    + d. b: ^+ M5 H; [; M5 [
  43.                 UF_VEC3_affine_comb(basePoint, -longDistance, projectOrignialUnitDir, newOriginalPoint);
    - K5 a2 v. f# q0 Z
  44.         }+ R4 L( h% L( k6 j5 N( i+ d9 n+ b2 A  D

  45. 2 y& l; u2 q: c& M4 Y; P
  46. 8 _) F1 B1 `4 y' @$ Z% Y
  47.         Echo("cosAngle: %f ,longDistance:%.3f", cosAngle, longDistance);
    4 Q3 i8 ^4 n6 h2 I( V! U- C5 P" y
  48. }
复制代码
! ^2 _' ?# g) B  A7 V& b

0 a4 n% c% G8 J+ S- H8 V
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了