|
|
请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
x
6 G( g3 u3 w- k" V; A7 K' |NX二次开发源码分享: 在绝对坐标系和视图上点映射
# R1 z5 y2 O$ _+ H0 m4 i9 J) H) i4 X+ U( _
( `/ D! X6 w9 O( X) Y4 t
[mw_shl_code=c,true]7 o6 K& V8 n G) u) l7 R& D
Function MapView2Abs(ByVal aView As View, ByVal coords As Point3d)5 b1 p5 N" ]8 X- D9 r2 p
Dim vmx As Matrix3x3 = aView.Matrix6 m1 D/ J: c r! {; Y
Dim vw() As Double = {0, 0, 0, vmx.Xx, vmx.Xy, vmx.Xz, vmx.Yx, vmx.Yy, vmx.Yz}$ B7 W; [0 D" d' `, F
Dim abs() As Double = {0, 0, 0, 1, 0, 0, 0, 1, 0}
. e9 }3 \ ]+ P& s. w Dim mx(11) As Double( [+ r2 w8 T1 P) C# r. _5 d
Dim irc As Integer
( r6 d0 X% s' e1 w9 a. s Dim c() As Double = {coords.X, coords.Y, coords.Z}, C/ K! [% H' X& l3 `7 T
' ^& F" ?" P5 v( B$ V% d6 ` ufs.Trns.CreateCsysMappingMatrix(vw, abs, mx, irc)3 o: \! L! R M6 O$ O
ufs.Trns.MapPosition(c, mx)
$ [! s: M& e. A- B
9 G( H/ a/ \/ I: a i, Z MapView2Abs = New Point3d(c(0), c(1), c(2))
) y- \7 Z7 `, T+ w9 D% i+ n1 h End Function# I8 j9 n( \* z; q/ t
, p6 z1 f* i: C
Function MapAbs2View(ByVal aView As View, ByVal coords As Point3d)2 B" |2 f% q. L4 u. m+ \
Dim vmx As Matrix3x3 = aView.Matrix; j1 A0 Q% A% H
Dim vw() As Double = {0, 0, 0, vmx.Xx, vmx.Xy, vmx.Xz, vmx.Yx, vmx.Yy, vmx.Yz}
* Z( t* q7 S. [, a Dim abs() As Double = {0, 0, 0, 1, 0, 0, 0, 1, 0}; `' O$ I' U1 w
Dim mx(11) As Double9 H% N0 i% s, W2 y! V; ?
Dim irc As Integer
9 p w( g/ G* J& ~ Dim c() As Double = {coords.X, coords.Y, coords.Z}
, Q6 \" ]" K: y. j5 Q
! h2 C e" ^8 j3 i& g ufs.Trns.CreateCsysMappingMatrix(abs, vw, mx, irc)4 Y; o. d8 V& w; z" l# y Z# T
ufs.Trns.MapPosition(c, mx)
/ E6 F C3 `5 }6 n7 z5 g
1 R O3 Z8 k! g7 b MapAbs2View = New Point3d(c(0), c(1), c(2))- P, I0 j/ p0 e$ \8 y
End Function
& c$ K5 ]( G# D" z, @* ^. `[/mw_shl_code]3 C+ z2 {" U, Q! N4 _, O1 d& f
|
|