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

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

admin 楼主

2023-2-28 20:27:29

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

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

x

8 F( r) _! P/ n+ t8 |3 z  w/ Z+ s$ v3 `0 ^; A

- p8 K6 z4 o/ l4 k【二次开发源码】一种基于点投影,获取投影原始点的方法
3 x6 m2 y1 d' w+ D/ t. |0 Y3 l
# ^5 K5 l/ ]8 |一直斜边和一个直边的向量,单位向量可以通过dot 获取 夹角
) P6 S4 \" M5 Q4 b然后通过勾股定理,计算得到长边值,最后进行基于点的affine,即可获取斜边向量
2 G' S& u. R2 E" H) `& V4 x- q  ?* V( m- V7 F/ r: G
  1. ; A6 o  i% O8 f* i/ J
  2. //这里仅仅考虑Z轴方向% h- R0 W+ U+ a! w( K/ Q
  3. void Get_Projection_OrignalPoint(double basePoint[3],double maxZValue,double projectOrignialUnitDir[3], double newOriginalPoint[3])
    0 N% L0 k" p. Y0 @) Y  j% K
  4. {/ f7 F8 R9 r  o; E+ A4 g  L5 B3 N4 y
  5.         double dotResult;
    5 g* P! U* I% Z$ S. M4 c
  6.         double longDistance;) h, _' W; a' P2 S- T# X
  7.         double zDir[3] = { 0.0,0.0,1.0 };
    , U3 H0 ^" c0 T2 U
  8.         //直线距离
    * _0 v- `' j6 E9 C( o
  9.         double deltaProjectDistance = fabs(maxZValue - basePoint[2]);5 }9 y4 u3 J( ~
  10. ) |0 u( X( j! s
  11.         Echo("斜度垂直直线距离:%.3f maxZValue:%.3f", deltaProjectDistance, maxZValue);
    ; F, _# p8 A; R" M- ?; I

  12. 9 d: {( v& L- H, {% E" j5 ?) Y
  13.         if ( EQ_is_eq(deltaProjectDistance,0.0,MINTOL)) //就是最高点 ,直接返回9 w6 Q: B; l; I: c
  14.         {
    & e2 m' c& {$ F
  15.                 UF_VEC3_copy(basePoint, newOriginalPoint);
    & v3 W5 ~( l/ v& \, ^' f- P+ ^- w
  16.                 return;
    1 M  v2 V* F5 q8 p2 |; |2 |2 ]
  17.         }
    % d6 I# L4 p3 l8 ~5 n, b
  18.   ^9 G- R# Q7 z  _# O* {
  19.         //计算夹角,通过单位矢量+ l  J! S6 P+ ~& r4 a  p7 K/ g
  20.         //faceDir 可能反向
    . P# g5 q" b4 p9 q0 u
  21.         UF_VEC3_dot(projectOrignialUnitDir, zDir, &dotResult);  {5 Z$ ~. y6 x4 d  ~
  22.         // cos() faceDir.zDir = |FaceDir||ZDir|cos(angle)
    * q" S8 H$ s  l; O  u7 A' T
  23.         double cosAngle = fabs(dotResult);& ~% J" }, ?* B# x% G* V4 H+ s
  24.        
    ( w. B% T2 v& c* M
  25.         //斜边距离6 l) }0 F+ o1 d& |4 \0 G
  26.         if (EQ_is_zero(cosAngle, MINTOL))) g5 Z5 h% M+ j) J' R0 ~2 i
  27.         {/ f% Z8 }" V6 F1 G& [  z3 P: b( y
  28.                 longDistance = deltaProjectDistance;4 M8 h$ r( l, h# X
  29.         }
    # ?0 a- {- w3 N* x
  30.         else
    # B6 y* c% f2 g/ R# Q8 |
  31.         {4 I7 Y' C9 A0 S6 C5 t
  32.                 longDistance = deltaProjectDistance / cosAngle;( N3 B& r: B7 l+ l" C3 C! r! i8 j$ V
  33.         }
    ) W" |0 `/ l& q! N, g
  34.        
    + [9 ~4 N" G9 ^3 n
  35.         //这里可能出现方向相反,我们需要进行一次判定/ _) W" l0 O$ }; ^' r6 e
  36. & L/ d7 x1 Y6 i" _, Z6 E" d" Y
  37.         UF_VEC3_affine_comb(basePoint, longDistance, projectOrignialUnitDir, newOriginalPoint);
    3 Y5 u. W7 t7 F3 J3 @

  38. . h9 ~' g9 Z; b, a+ ^
  39.         Echo("maxZValue: %f ,newOriginalPoint[2]:%.3f", maxZValue, newOriginalPoint[2]);% X: A) H  X) ?) }9 n

  40. 9 o( |* A, f" C$ t  J. U- A
  41.         if (!EQ_is_eq(maxZValue,newOriginalPoint[2],MINTOL))
    3 ^' ]2 g( l9 i2 R8 {& |! l/ V
  42.         {/ j. a# n; b' V5 B  ]. z$ Y
  43.                 UF_VEC3_affine_comb(basePoint, -longDistance, projectOrignialUnitDir, newOriginalPoint);
    " N4 L6 R7 ?1 _; q  M8 S
  44.         }
    $ H% m! F( f- F! `9 d/ W
  45. 2 ~( d: j# m, f2 b1 ?

  46. 4 K7 Q6 r7 n& B4 O0 G: ]
  47.         Echo("cosAngle: %f ,longDistance:%.3f", cosAngle, longDistance);
    , F# U" x3 P9 F  s
  48. }
复制代码
* Z! @+ h- {: {' F

  d. J3 |. _* `' 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二次开发专题模块培训报名开始啦

    我知道了