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

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

admin 楼主

2023-2-28 20:27:29

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

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

x
8 a) H6 C% N4 v( g4 s

7 _: J0 W5 s4 n& C$ i
3 B* a- W# U. H: a  r【二次开发源码】一种基于点投影,获取投影原始点的方法
9 s* _/ W9 k) Q; A
$ X1 D- ~% S4 e9 s: L! v一直斜边和一个直边的向量,单位向量可以通过dot 获取 夹角: {1 [0 ?$ l, W5 M, t% a
然后通过勾股定理,计算得到长边值,最后进行基于点的affine,即可获取斜边向量/ ~+ U$ \+ }4 P0 u0 _1 d# j

4 M/ U3 o4 _& i0 g! a
  1. 6 k5 O5 ^$ n* t8 d. Y/ ?7 v
  2. //这里仅仅考虑Z轴方向" \/ u& @$ ^, o
  3. void Get_Projection_OrignalPoint(double basePoint[3],double maxZValue,double projectOrignialUnitDir[3], double newOriginalPoint[3])6 t# }3 {0 J6 R, k5 P
  4. {
    2 O# g) u/ v) g" _
  5.         double dotResult;, K+ P# w* w. _+ o+ w; k
  6.         double longDistance;
    $ v8 n% R5 V- ?; z0 k
  7.         double zDir[3] = { 0.0,0.0,1.0 };& ^5 U+ w( d9 q- @- W# ~/ V3 T8 n1 i
  8.         //直线距离3 x9 h6 L6 N) S( ?. ^: g3 }( L# z
  9.         double deltaProjectDistance = fabs(maxZValue - basePoint[2]);
    + {8 M* d: ?' J& {

  10. 4 |- U, G& K" f8 m
  11.         Echo("斜度垂直直线距离:%.3f maxZValue:%.3f", deltaProjectDistance, maxZValue);
    / u8 N$ H* @& F& D3 L& n6 |; r+ w
  12. 2 B2 }1 H& Y, [
  13.         if ( EQ_is_eq(deltaProjectDistance,0.0,MINTOL)) //就是最高点 ,直接返回0 z- I# x2 j9 m/ a! l
  14.         {0 x+ N) M: N; X& o
  15.                 UF_VEC3_copy(basePoint, newOriginalPoint);
    ! n( e4 C; |( s6 \0 u* s2 N
  16.                 return;
    ! Z; s6 Z7 @9 {# [
  17.         }
    ( V/ ^& `" D  F, N

  18. . ~( N# @! [$ o2 b3 w
  19.         //计算夹角,通过单位矢量
    0 R2 D8 s, u( U
  20.         //faceDir 可能反向
    + ^  Y* c$ H, N- v
  21.         UF_VEC3_dot(projectOrignialUnitDir, zDir, &dotResult);8 E: [  n0 D. u  J" h4 f) u
  22.         // cos() faceDir.zDir = |FaceDir||ZDir|cos(angle) 4 _' Y" |( v. _9 s3 V& o
  23.         double cosAngle = fabs(dotResult);
    1 i0 ~0 X( s# r. {& R
  24.         , a! Z+ J/ g5 U. x  K, b
  25.         //斜边距离
    6 C4 j  N. _+ K" I6 X
  26.         if (EQ_is_zero(cosAngle, MINTOL))
    + s9 P2 m% i. ~4 _$ q1 D5 ^
  27.         {$ Y! @& P% ^7 Q8 m
  28.                 longDistance = deltaProjectDistance;
    ! G# ?# R3 t: p( ]
  29.         }. \9 u% R9 z. U) M$ i& m  A# s- g
  30.         else, K& _+ C) k7 |, X6 K2 m; b- j2 O
  31.         {
    ' v) ~! t5 w4 t( Z* [
  32.                 longDistance = deltaProjectDistance / cosAngle;8 _. R) Y9 |; y5 _
  33.         }
    ! i- O  v( o0 D4 {( V" z
  34.         9 W$ d! f4 X  ~1 g0 T4 y
  35.         //这里可能出现方向相反,我们需要进行一次判定* [7 y5 S5 x! R" X

  36. 9 ]) X0 }+ u9 w+ A! ^  A
  37.         UF_VEC3_affine_comb(basePoint, longDistance, projectOrignialUnitDir, newOriginalPoint);+ L$ l& S' ~! T" i) q9 @
  38. % m- r* u8 @- ]
  39.         Echo("maxZValue: %f ,newOriginalPoint[2]:%.3f", maxZValue, newOriginalPoint[2]);+ H1 S8 R* [% ?  }& [! z4 B

  40. 3 c: A5 ^$ A9 v" d3 i9 G
  41.         if (!EQ_is_eq(maxZValue,newOriginalPoint[2],MINTOL))
    & Z" j; F6 _- Y9 I) S$ ?
  42.         {
    % N& p0 [0 d2 a# G$ f" L" V+ r
  43.                 UF_VEC3_affine_comb(basePoint, -longDistance, projectOrignialUnitDir, newOriginalPoint);
    4 T. O4 N$ [: z+ p
  44.         }
    % u" Z" [1 n; T& {( D

  45. ! r' k# Y: L* z* K. `9 o$ \0 _
  46. 3 a! e  m4 L! y' }* C$ n
  47.         Echo("cosAngle: %f ,longDistance:%.3f", cosAngle, longDistance);* Q! _' l5 H( r4 w5 d+ g& J( C
  48. }
复制代码

6 x* U% B% R# M# |  W: o' z' W% Z3 o2 g- y( R) I7 f$ b5 u
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了