|
请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
x
) I1 J- }2 x# [5 KNX二次开发源码分享: 在绝对坐标系和视图上点映射
% i2 E3 b @+ U* B- {3 N7 c' [7 b/ l7 e$ {1 z0 U
6 T1 f! e# V( u% _4 f' M
[mw_shl_code=c,true]$ S1 K1 O8 E: Q% o
Function MapView2Abs(ByVal aView As View, ByVal coords As Point3d)7 W1 O. j! k3 I6 t y
Dim vmx As Matrix3x3 = aView.Matrix
# c$ s' f2 v" X+ h6 k; M Dim vw() As Double = {0, 0, 0, vmx.Xx, vmx.Xy, vmx.Xz, vmx.Yx, vmx.Yy, vmx.Yz}
- ]" Y3 p% G7 N# q Dim abs() As Double = {0, 0, 0, 1, 0, 0, 0, 1, 0}8 G4 X, F+ [/ S9 N
Dim mx(11) As Double
$ T: |4 T' [3 l, u0 ?% g% l. B2 H" Q Dim irc As Integer! M; Q8 s: m0 \9 x, f
Dim c() As Double = {coords.X, coords.Y, coords.Z}
; u# g+ O) ]% \% ?
# T% L' g/ S" w0 {2 U ufs.Trns.CreateCsysMappingMatrix(vw, abs, mx, irc)% v- t* H- _+ S
ufs.Trns.MapPosition(c, mx)1 x& X7 P$ k. Y) X, X
6 `- T+ ?6 c2 C! A, }+ l3 L
MapView2Abs = New Point3d(c(0), c(1), c(2))- _0 F0 ?! |# H1 E) G" ?% ] p( }
End Function
' Q. b6 w$ |6 q+ F; }0 u! R
3 ~: A9 Z. r9 d- h% ` Function MapAbs2View(ByVal aView As View, ByVal coords As Point3d)
6 l/ u' R: S7 P! Y$ v Dim vmx As Matrix3x3 = aView.Matrix, f- K4 `3 t8 F! @1 U4 D
Dim vw() As Double = {0, 0, 0, vmx.Xx, vmx.Xy, vmx.Xz, vmx.Yx, vmx.Yy, vmx.Yz}" g6 u/ }7 U5 f( ~. v
Dim abs() As Double = {0, 0, 0, 1, 0, 0, 0, 1, 0}: f. K u! n m( g4 O9 h- h
Dim mx(11) As Double
$ P ~. z% J- p' Q Dim irc As Integer. K$ Y+ {- V8 ?( z5 n
Dim c() As Double = {coords.X, coords.Y, coords.Z}1 y1 ]& A: j* i' }! M3 a
) S$ d# H9 @# a3 Q; N4 U) c ufs.Trns.CreateCsysMappingMatrix(abs, vw, mx, irc)* t8 `) N( `7 T2 w- a
ufs.Trns.MapPosition(c, mx)2 c- T7 L+ ` b4 g9 s
5 A3 U% w- y2 v7 d {" p
MapAbs2View = New Point3d(c(0), c(1), c(2))
/ [6 ~" ^! Q E0 y7 k2 q8 l$ M/ | End Function
5 v0 f$ I8 } I4 D X[/mw_shl_code] E' E' ]! p8 ^% ~/ d" S# t& h/ Y# `5 s
|
|