PLM之家精品课程培训

PLM之家精品课程培训

联系电话:18301858168   |   QQ咨询:939801026
NX二次开发培训

NX二次开发培训

UFUN/NXOpen C++和实战案例

适合初级入门或想深入了解二次开发的工程师,本培训结合ufun,NXOpen C++,大量的实例及官方内部的开发技术。
公众号二维码

关注公众号

点击扫描二维码免费在线高清教程

课程详情
Catia二次开发培训

Catia二次开发培训

市场需求大,掌握核心技术前景广阔

Catia二次开发的市场需求大,人才稀缺。掌握开发技能潜力巨大,随着经验积累将在汽车、航空等领域有所作为。
B站二维码

在线原创B站视频

点击关注工业软件传道士主页

课程详情
Teamcenter培训

Teamcenter培训

全方位培训,从基础应用到高级开发全覆盖

涵盖用户应用基础培训、管理员基础培训、管理员高级培训及二次开发培训等全方位内容,由多年经验讲师打造。
QQ群二维码

加入同行交流

点击扫描二维码加入QQ群

课程详情
×

PLM之家plmhome公众号

课程涵盖: PLM之家所有原创视频

×

关注B站视频

所有高清视频一览无余,全部在线播放学习

×

加入PLM之家QQ群

同行交流,疑问解答,更多互助

PLM之家PLMHome-国产软件践行者

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

[复制链接]

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

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

admin 楼主

2023-2-28 20:27:29

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

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

x

3 O2 N2 l3 C9 }1 I8 P
2 x7 ~- v( O1 w% J# Y6 ]6 O3 n2 V4 a+ e1 A' Q
【二次开发源码】一种基于点投影,获取投影原始点的方法
7 O8 L5 r  j8 @, d8 q. C- O9 ^6 m& G/ t  y+ J
一直斜边和一个直边的向量,单位向量可以通过dot 获取 夹角, V8 a2 o+ U' k, H% C" W2 o
然后通过勾股定理,计算得到长边值,最后进行基于点的affine,即可获取斜边向量
7 c1 y# w3 P# p# y; t* i1 D$ d' n  O2 H. |3 ]  j
  1. * O# H2 u0 B, J
  2. //这里仅仅考虑Z轴方向
    , W- o( ~4 C& t! l9 v! w
  3. void Get_Projection_OrignalPoint(double basePoint[3],double maxZValue,double projectOrignialUnitDir[3], double newOriginalPoint[3])) Z  J7 w3 R$ m0 l
  4. {
    7 `1 Q* M( s/ s
  5.         double dotResult;& N0 C" O4 L5 i. U1 E6 h
  6.         double longDistance;
    - P( A- i. j! X' ?* V7 ^0 d
  7.         double zDir[3] = { 0.0,0.0,1.0 };
    * H2 r& u! C/ `# J* k" J: s( a) \5 N
  8.         //直线距离8 g& o, m2 X" i* o8 `
  9.         double deltaProjectDistance = fabs(maxZValue - basePoint[2]);
    & J" n" N  T+ P( n
  10. ) v4 A: ]7 L( F2 d9 V
  11.         Echo("斜度垂直直线距离:%.3f maxZValue:%.3f", deltaProjectDistance, maxZValue);
    ; E, Z1 u; e$ o7 N# E
  12. ! @4 k6 v# {8 i( H9 ~0 J( a( G% W
  13.         if ( EQ_is_eq(deltaProjectDistance,0.0,MINTOL)) //就是最高点 ,直接返回
    1 I9 |. @5 N) T3 ?+ X! b" V( a& ?/ w
  14.         {
    ' o7 K+ w. _5 q" z4 ^& G4 Q0 j
  15.                 UF_VEC3_copy(basePoint, newOriginalPoint);4 ~5 @) l5 D; G& |9 Y
  16.                 return;
    . [# D0 Q2 J) Q; I# U9 b& D
  17.         }) E# U, j9 o' D% X
  18. & J9 D; }- W# q$ N3 l3 I3 d$ z
  19.         //计算夹角,通过单位矢量
    % ^& l$ Q7 A/ m3 r8 n' {1 C& f1 n
  20.         //faceDir 可能反向
    $ y5 f6 Z4 P  L/ z8 \6 h+ k* f4 i. l
  21.         UF_VEC3_dot(projectOrignialUnitDir, zDir, &dotResult);% b- \" }! h& F
  22.         // cos() faceDir.zDir = |FaceDir||ZDir|cos(angle) 0 J. ]3 `1 X- L/ P
  23.         double cosAngle = fabs(dotResult);3 |6 |3 M8 B' |2 d
  24.        
    : S9 ^6 x! K4 z, R6 C
  25.         //斜边距离# d7 o% V4 r( n" v; J' A) n6 C$ ~. m0 x
  26.         if (EQ_is_zero(cosAngle, MINTOL))
    3 A3 M! ?) ?- z$ ?
  27.         {
    5 g5 {3 q; o: H  o. n1 d" D
  28.                 longDistance = deltaProjectDistance;& j# h! v3 @. |$ u5 _7 A9 g6 [' ?
  29.         }
    - m1 O: Z: e6 L- r; t
  30.         else
    $ L, p* v, [9 G# h) i; r2 `
  31.         {. D# m# L5 f+ W! L4 j
  32.                 longDistance = deltaProjectDistance / cosAngle;$ `+ T5 W- u! c* Z8 h4 d# @
  33.         }
    9 V7 o/ `+ g- \) ?/ a1 `8 t. u8 n: {
  34.        
    + Z: q8 T/ f& x6 p4 T
  35.         //这里可能出现方向相反,我们需要进行一次判定+ \/ D0 V" A4 a

  36. 3 w4 e+ }6 z/ p
  37.         UF_VEC3_affine_comb(basePoint, longDistance, projectOrignialUnitDir, newOriginalPoint);
    & ~+ R$ t8 ?+ V
  38. ) K6 m* s5 o, j" f' P
  39.         Echo("maxZValue: %f ,newOriginalPoint[2]:%.3f", maxZValue, newOriginalPoint[2]);
    * D% [( X/ P- k. J' y

  40. % l6 D2 r$ m: a, C9 j6 K( ]% W
  41.         if (!EQ_is_eq(maxZValue,newOriginalPoint[2],MINTOL))
    8 z' p  @7 ?# E) I, L7 ?) T" C
  42.         {
    ! X+ a3 w& N+ @3 Q" m* M
  43.                 UF_VEC3_affine_comb(basePoint, -longDistance, projectOrignialUnitDir, newOriginalPoint);  N7 w6 r' B2 _4 v5 J
  44.         }( l& h/ [# i+ V7 x1 q
  45. 3 I% k* R/ Z9 C, J7 ]% `1 {+ {7 w" \

  46.   K0 j( a  F; z& Z
  47.         Echo("cosAngle: %f ,longDistance:%.3f", cosAngle, longDistance);; [9 J4 P# @& P6 o
  48. }
复制代码

! ^5 E' ?, \6 P( ?2 k& ^
0 y- a) _3 @( C; s
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了