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

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

admin 楼主

2023-2-28 20:27:29

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

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

x
3 B7 K9 q2 F, G) Z% h$ T

+ Q; B; N+ t, G6 Q7 a' t3 g) L( ^+ p3 A" L3 J
【二次开发源码】一种基于点投影,获取投影原始点的方法" S! t' P6 D6 k0 i& |* T  t

8 h  b$ _4 @9 x8 b一直斜边和一个直边的向量,单位向量可以通过dot 获取 夹角9 s0 p3 s) V* q5 ]$ h4 j
然后通过勾股定理,计算得到长边值,最后进行基于点的affine,即可获取斜边向量
5 N" `+ [: r, L" q6 D( M& ^( ~9 b. ]/ x6 T5 D, Z8 v1 P* R" X# M

  1. % \9 v; W2 @" D4 `# H
  2. //这里仅仅考虑Z轴方向
    ! f3 N3 s( x$ n3 L7 `3 r$ e
  3. void Get_Projection_OrignalPoint(double basePoint[3],double maxZValue,double projectOrignialUnitDir[3], double newOriginalPoint[3])6 R" H; n& N% m0 _& |6 [3 V
  4. {3 A8 X- J- }9 H- t
  5.         double dotResult;
    ! R8 h9 ~" |+ ~
  6.         double longDistance;
    + n+ _- D1 H' P
  7.         double zDir[3] = { 0.0,0.0,1.0 };! ~% B7 H6 }8 n
  8.         //直线距离
    / Q7 A; O% k1 U, ]# a1 \+ m
  9.         double deltaProjectDistance = fabs(maxZValue - basePoint[2]);
    + ^. l* N" G+ `+ x, b) Y! H, c
  10. 3 y4 m1 u9 L8 S! y
  11.         Echo("斜度垂直直线距离:%.3f maxZValue:%.3f", deltaProjectDistance, maxZValue);7 ?# C: k* Q+ K! ?; P
  12. 1 D" u" G5 y  G* x& F
  13.         if ( EQ_is_eq(deltaProjectDistance,0.0,MINTOL)) //就是最高点 ,直接返回
    3 ]5 z$ Y" o$ T8 j: t4 Q8 K% V
  14.         {
    ' `0 V# p5 x0 v, b* X- U& j
  15.                 UF_VEC3_copy(basePoint, newOriginalPoint);
    ) p0 q& @* _$ W" Q: }  w
  16.                 return;' o3 N( }8 P* ]9 z8 j" H: u: h
  17.         }
    * X6 a0 T! a$ v: ~% P5 j2 E

  18. ' i9 P; V/ O9 {/ C- M- n1 E
  19.         //计算夹角,通过单位矢量
    9 s/ U4 H( |6 B- y
  20.         //faceDir 可能反向
    7 i0 i  }8 @1 Q/ A3 t- [- @) x
  21.         UF_VEC3_dot(projectOrignialUnitDir, zDir, &dotResult);# |) h+ a  b+ [* E( U+ I4 O' u
  22.         // cos() faceDir.zDir = |FaceDir||ZDir|cos(angle) ! O. Z1 f8 f, P9 ~# Y2 T8 Y
  23.         double cosAngle = fabs(dotResult);
    & X7 t. A& J" D( H4 t) l7 F9 L6 g
  24.         1 R" h4 x% a5 S, z7 U3 y. D
  25.         //斜边距离8 t+ _0 k$ u% b$ ], I$ R
  26.         if (EQ_is_zero(cosAngle, MINTOL))
    0 f7 `. f. O1 f5 P) P/ @# f
  27.         {; K2 c4 x! c% C* x4 L7 s
  28.                 longDistance = deltaProjectDistance;
    6 ^0 b7 D+ k3 u  g4 v- `. n+ F; Y# f2 e
  29.         }* D! d6 |: g" \: @" ]6 p6 f, u+ T5 _
  30.         else
    ' y  v0 R) M4 E$ G2 \
  31.         {
    ( ]  n$ T  T3 @
  32.                 longDistance = deltaProjectDistance / cosAngle;9 ^& i7 e4 @: {7 ~- j
  33.         }
    3 C9 o* f- j, ?' ^$ c+ N# E
  34.         + |" H& p! C8 @: ^) J
  35.         //这里可能出现方向相反,我们需要进行一次判定
    + s& K2 F# k( X. e$ ~6 M3 E% W5 m
  36. : B9 T2 g8 n; w" L' f4 x
  37.         UF_VEC3_affine_comb(basePoint, longDistance, projectOrignialUnitDir, newOriginalPoint);
    2 B: r4 R- J& e& d
  38. $ G1 s' ?  b% j6 I+ o* X
  39.         Echo("maxZValue: %f ,newOriginalPoint[2]:%.3f", maxZValue, newOriginalPoint[2]);* I3 f; O) f: ?, n" X3 q

  40. ) v3 i) C  C) y- O( U3 J7 }
  41.         if (!EQ_is_eq(maxZValue,newOriginalPoint[2],MINTOL))
    . R6 @2 @3 v- y2 |
  42.         {
    5 A% E1 z/ f3 U8 l) Z
  43.                 UF_VEC3_affine_comb(basePoint, -longDistance, projectOrignialUnitDir, newOriginalPoint);6 C6 Z' x# u1 A) _0 c8 \
  44.         }0 J. N9 F6 ]( _5 M% s$ A4 W3 T3 _; \' X

  45. - H5 f6 b% D  p3 A. e/ P
  46. & r8 K# A) Q. F# y! p
  47.         Echo("cosAngle: %f ,longDistance:%.3f", cosAngle, longDistance);
    ) [0 P# X  n+ c( B+ E/ E
  48. }
复制代码
: U. t2 ~$ [$ I( L0 c

; c6 _; |* d, O$ w
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了