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 734 0

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

admin 楼主

2023-2-28 20:27:29

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

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

x

) f% A, A" y6 N) o, C1 D3 R& x$ t( G' s$ e8 a
0 {! _1 b9 A' e7 p& O
【二次开发源码】一种基于点投影,获取投影原始点的方法8 `+ ]: `$ y: u3 P' z8 {

0 T! I. b. R9 V+ Z$ u7 D& b一直斜边和一个直边的向量,单位向量可以通过dot 获取 夹角
" X) ]* W: I! h+ i- R然后通过勾股定理,计算得到长边值,最后进行基于点的affine,即可获取斜边向量
# e) B8 l: n2 M1 A" r8 Y, x7 ~/ p: h, N

  1. ' j/ B. i, m% _; R6 z2 i
  2. //这里仅仅考虑Z轴方向4 Q9 i* o: r4 I6 d0 |
  3. void Get_Projection_OrignalPoint(double basePoint[3],double maxZValue,double projectOrignialUnitDir[3], double newOriginalPoint[3])
    2 h! F- J4 @4 A9 ~5 F
  4. {- Q. y% I6 p2 m; Y/ F
  5.         double dotResult;
    3 a  x6 q- Q4 L; F# Y" w3 z# ]
  6.         double longDistance;
    ) i9 g; L2 T: j
  7.         double zDir[3] = { 0.0,0.0,1.0 };& D- C2 m6 @5 j, W' u; X% W4 k
  8.         //直线距离' i7 W( g" d' }. V6 I4 u; o; v
  9.         double deltaProjectDistance = fabs(maxZValue - basePoint[2]);
    ; o1 P" s/ B4 g# i( v
  10. / @9 n; I5 ]; |" Q, i$ V* p2 O
  11.         Echo("斜度垂直直线距离:%.3f maxZValue:%.3f", deltaProjectDistance, maxZValue);5 L- E, w$ @" [6 @
  12. & u: s4 J2 i) O) K
  13.         if ( EQ_is_eq(deltaProjectDistance,0.0,MINTOL)) //就是最高点 ,直接返回. E8 ^0 w* N* B8 q( @# a" w4 P
  14.         {' M' u  H$ Z6 J! y& w
  15.                 UF_VEC3_copy(basePoint, newOriginalPoint);
    . }5 y# |1 \+ u
  16.                 return;+ Y% Y# G6 J6 O- O2 O6 @% [4 q) v
  17.         }
    7 o0 ~+ W# k1 ?7 Q
  18. ; ~' T0 V) H2 ^* n+ T1 j7 [
  19.         //计算夹角,通过单位矢量
    1 f& a; J9 i& s& O
  20.         //faceDir 可能反向
    - ^! s- ~' H* ?
  21.         UF_VEC3_dot(projectOrignialUnitDir, zDir, &dotResult);5 f8 X: ?$ O2 `8 X4 y4 [% w, O' g/ {
  22.         // cos() faceDir.zDir = |FaceDir||ZDir|cos(angle)
    / n) d1 p1 c* C$ x
  23.         double cosAngle = fabs(dotResult);
    1 l% w# m& }) O* D$ o
  24.         7 W1 a# Y& y. R( |
  25.         //斜边距离' J7 K8 l- I& M7 ^8 h" y& ~
  26.         if (EQ_is_zero(cosAngle, MINTOL))
    ; E. g4 W: U$ }% r" ^/ O% R  l
  27.         {* i6 P' t% ]6 |& W$ N
  28.                 longDistance = deltaProjectDistance;5 O5 L5 v* T6 H+ U0 \, Y  N
  29.         }$ v; y/ w$ B+ Q9 ]- Z" i9 A
  30.         else
    8 c* Q7 \# z# }' C/ o
  31.         {
    ! k1 d% J1 _. Y- Y2 x
  32.                 longDistance = deltaProjectDistance / cosAngle;1 o) B9 M. d% Q; ?$ s2 `
  33.         }0 ^; Q& m3 c" Z, C; {* Z  O
  34.        
    : ]" `, p' P8 z
  35.         //这里可能出现方向相反,我们需要进行一次判定9 u3 l% u& L! v2 B" d0 h

  36. # o. n8 q4 d/ D' j0 C
  37.         UF_VEC3_affine_comb(basePoint, longDistance, projectOrignialUnitDir, newOriginalPoint);9 H4 ]; `9 b: n

  38. $ z4 b2 L. x: ^' o' z2 c
  39.         Echo("maxZValue: %f ,newOriginalPoint[2]:%.3f", maxZValue, newOriginalPoint[2]);
    : T2 p. W: \" g/ s8 g7 U0 A
  40. 5 Z4 }( j- E" w% `+ R
  41.         if (!EQ_is_eq(maxZValue,newOriginalPoint[2],MINTOL))
    * G6 c+ n" J9 D* i! m( L0 J
  42.         {
    0 {, Q. Y' m: p! J6 x
  43.                 UF_VEC3_affine_comb(basePoint, -longDistance, projectOrignialUnitDir, newOriginalPoint);5 S: V  n) R4 m( D
  44.         }
    # z* s" U; p. J/ Z% c

  45. # g+ w( j- H: e: I9 |

  46. & H4 c  {3 V  {7 b2 U+ R
  47.         Echo("cosAngle: %f ,longDistance:%.3f", cosAngle, longDistance);4 M6 ~  U4 m( R% s
  48. }
复制代码
; P# e2 N& g2 s5 d# C
0 _! x% J8 K4 r; P- M
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了