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

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

admin 楼主

2023-2-28 20:27:29

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

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

x

; j$ Z, r) s$ F3 e, t* _
' @5 |; g1 l( d/ Z
. |" s1 r- G% ]+ A& X5 L  I8 p【二次开发源码】一种基于点投影,获取投影原始点的方法
$ M. n2 V8 J% @, R) ^7 a7 x0 {+ f0 R) C- m$ Z) ~, E; M
一直斜边和一个直边的向量,单位向量可以通过dot 获取 夹角
* p& y6 k  s: U7 d然后通过勾股定理,计算得到长边值,最后进行基于点的affine,即可获取斜边向量
( Q2 A& F& j6 q: r/ w% O( k: ]; G6 Q

  1. 9 j' }& F9 e& \
  2. //这里仅仅考虑Z轴方向
    & ?/ t. P6 F% Q" B& X
  3. void Get_Projection_OrignalPoint(double basePoint[3],double maxZValue,double projectOrignialUnitDir[3], double newOriginalPoint[3]): r- q+ b7 z# M! k
  4. {
    ) B7 G/ W; F9 O
  5.         double dotResult;
    & t5 }0 @% t, W2 O+ G# H6 K
  6.         double longDistance;
    6 B9 Q- I2 B" x# Y% A9 P3 e
  7.         double zDir[3] = { 0.0,0.0,1.0 };
    3 L8 s0 Y5 E, G
  8.         //直线距离
    / a) e) B+ g& N/ @* u
  9.         double deltaProjectDistance = fabs(maxZValue - basePoint[2]);* c, c* O* ~  g- i9 o) i* r' }6 f

  10. , N5 [, R* t$ r$ w
  11.         Echo("斜度垂直直线距离:%.3f maxZValue:%.3f", deltaProjectDistance, maxZValue);
    4 F) f/ c& a( A" f9 E4 W
  12. $ x% Q, ?2 S1 r# h) {
  13.         if ( EQ_is_eq(deltaProjectDistance,0.0,MINTOL)) //就是最高点 ,直接返回$ K; ~8 b, y# k5 G' w. K7 s
  14.         {8 c4 [3 L: o/ w/ C0 U7 L  a4 C
  15.                 UF_VEC3_copy(basePoint, newOriginalPoint);+ g& _8 D. H& H% M5 [( r
  16.                 return;
    : {2 M3 [7 `+ f$ O$ D7 g. l+ T
  17.         }
    8 R! e& V# _) r# Q) d; a; d

  18.   F- Z" z1 D6 p* P
  19.         //计算夹角,通过单位矢量
    4 y+ k* [8 B# Z5 w: m! w
  20.         //faceDir 可能反向 # c0 b/ r5 l5 c' Y' r, g
  21.         UF_VEC3_dot(projectOrignialUnitDir, zDir, &dotResult);1 v, j( l5 L! I9 J$ D. q
  22.         // cos() faceDir.zDir = |FaceDir||ZDir|cos(angle)
    & K) W" D7 e' ~. Y/ D
  23.         double cosAngle = fabs(dotResult);7 ]$ p* V. b8 |- O( G
  24.        
    % u1 q. e& S& j% B
  25.         //斜边距离
    9 B% l2 X8 Y9 @
  26.         if (EQ_is_zero(cosAngle, MINTOL))3 ]% [. Q; ]5 P! C
  27.         {6 t5 D7 H: y  I8 A. h- q) W
  28.                 longDistance = deltaProjectDistance;
    : D6 e! {! i" C
  29.         }3 ^. D! \; W, {3 U/ u
  30.         else
    ' Y6 g. Z/ h2 H0 [
  31.         {4 x* d) F8 ]7 f' p
  32.                 longDistance = deltaProjectDistance / cosAngle;- {# E. k* t$ G
  33.         }7 M8 @9 _' I' Q; b- j# L7 ~
  34.        
      T# z! V4 ~/ c: l+ {
  35.         //这里可能出现方向相反,我们需要进行一次判定3 m) z; D/ ^7 r+ N3 c$ g9 E3 M
  36. + Y& A9 E7 t1 @' P$ V
  37.         UF_VEC3_affine_comb(basePoint, longDistance, projectOrignialUnitDir, newOriginalPoint);: O: ?% S3 J7 s+ Q) @
  38. 1 T3 @( f; P! O0 P1 y8 [
  39.         Echo("maxZValue: %f ,newOriginalPoint[2]:%.3f", maxZValue, newOriginalPoint[2]);. h' @* ]( m* a: u7 q, M3 n

  40. ! y) u9 A( Y) {9 i
  41.         if (!EQ_is_eq(maxZValue,newOriginalPoint[2],MINTOL))( Q4 |, v! Q. g$ M. t2 M9 c
  42.         {
    4 l7 @9 S% E9 Y! V1 D: q8 `7 U- e0 y
  43.                 UF_VEC3_affine_comb(basePoint, -longDistance, projectOrignialUnitDir, newOriginalPoint);
    1 W0 O& t* c9 Y# c" C
  44.         }, @% H. q" L2 j, e& \

  45. / h1 A+ A# b4 O

  46. * N" k8 e' O- B) r
  47.         Echo("cosAngle: %f ,longDistance:%.3f", cosAngle, longDistance);6 j% F  |% \6 ^3 k* f1 \( L4 ?3 N" G7 H
  48. }
复制代码
; H! j# ]! `4 o3 T5 A

* k1 J) H1 }* i0 G8 B/ 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二次开发专题模块培训报名开始啦

    我知道了