CAD vba转换对象_升降机,升降平台_百度空间

可使用TransformBy方法给定一个4×4转换矩阵移动、比例缩放或旋转对象。

下表示范了转换矩阵结构,这里R为旋转,T为转换:

转换矩阵结构

R00 R01 R02 T0
R10 R11 R12 T1
R20 R21 R22 T2
0 0 0 1

转换对象,首先要初始化转换矩阵。下例显示了一个分配给变量tMatrix的转换矩阵,它将围绕点(0, 0, 0)90度旋转图元:

tMatrix(0,0) = 0.0
tMatrix(0,1) = -1.0
tMatrix(0,2) = 0.0
tMatrix(0,3) = 0.0
tMatrix(1,0) = 1.0
tMatrix(1,1) = 0.0
tMatrix(1,2) = 0.0
tMatrix(1,3) = 0.0
tMatrix(2,0) = 0.0
tMatrix(2,1) = 0.0
tMatrix(2,2) = 1.0
tMatrix(2,3) = 0.0
tMatrix(3,0) = 0.0
tMatrix(3,1) = 0.0
tMatrix(3,2) = 0.0
tMatrix(3,3) = 1.0

当完成了转换矩阵后,使用TransformBy方法应用矩阵到对象上。以下代码行示范了应用矩阵(tMatrix)到对象(anObj)

anObj.TransformBy tMatrix

使用转换矩阵旋转直线

本例创建一直线并使用转换矩阵将其旋转90度。

Sub Ch4_TransformBy()
'
创建一直线

Dim lineObj As AcadLine
Dim startPt(0 To 2) As Double
Dim endPt(0 To 2) As Double
startPt(0) = 2
startPt(1) = 1
startPt(2) = 0
endPt(0) = 5
endPt(1) = 1
endPt(2) = 0
Set lineObj = ThisDrawing.ModelSpace. _
AddLine(startPt, endPt)
ZoomAll
'
初始化transMat转换矩阵的变量,
'
以使其围绕点(0,0,0)并按90度旋转对象。
Dim transMat(0 To 3, 0 To 3) As Double
transMat(0, 0) = 0#: transMat(0, 1) = -1#
transMat(0, 2) = 0#: transMat(0, 3) = 0#
transMat(1, 0) = 1#: transMat(1, 1) = 0#
transMat(1, 2) = 0#: transMat(1, 3) = 0#
transMat(2, 0) = 0#: transMat(2, 1) = 0#
transMat(2, 2) = 1#: transMat(2, 3) = 0#
transMat(3, 0) = 0#: transMat(3, 1) = 0#
transMat(3, 2) = 0#: transMat(3, 3) = 1#
'
使用定义了的转换矩阵转换直线
lineObj.TransformBy transMat
lineObj.Update
End Sub

以下为转换矩阵的更多例子:

旋转矩阵:围绕点(0,0,0)90

0.0 -1.0 0.0 0.0
1.0 0.0 0.0 0.0
0.0 0.0 1.0 0.0
0.0 0.0 0.0 1.0

旋转矩阵:围绕点(5, 5, 0)45

0.707107 -0.707107 0.0 5.0
0.707107 0.707107 0.0 -2.071068
0.0 0.0 1.0 0.0
0.0 0.0 0.0 1.0

转换矩阵:通过(10,10,0)移动图元

1.0 0.0 0.0 10.0
0.0 1.0 0.0 10.0
0.0 0.0 1.0 0.0
0.0 0.0 0.0 1.0

比例矩阵:按点(0, 0, 0)比例为10,10缩放

10.0 0.0 0.0 0.0
0.0 10.0 0.0 0.0
0.0 0.0 10.0 0.0
0.0 0.0 0.0 1.0

比例矩阵:按点(2, 2, 0)比例10,10缩放

10.0 0.0 0.0 -18.0
0.0 10.0 0.0 -18.0
0.0 0.0 10.0 0.0
0.0 0.0 0.0 1.0



郑重声明:资讯 【CAD vba转换对象_升降机,升降平台_百度空间】由 发布,版权归原作者及其所在单位,其原创性以及文中陈述文字和内容未经(企业库qiyeku.com)证实,请读者仅作参考,并请自行核实相关内容。若本文有侵犯到您的版权, 请你提供相关证明及申请并与我们联系(qiyeku # qq.com)或【在线投诉】,我们审核后将会尽快处理。
—— 相关资讯 ——