- 积分
- 424
- 明经币
- 个
- 注册时间
- 2004-3-10
- 在线时间
- 小时
- 威望
-
- 金钱
- 个
- 贡献
-
- 激情
-
|
楼主 |
发表于 2004-3-14 20:33:00
|
显示全部楼层
Sub 镜像() Dim 用户选择集合 As AcadSelectionSet Dim 轴线集合 As AcadSelectionSet Dim 标注集合 As AcadSelectionSet Dim 轴线(0 To 0) As AcadLine Dim 标注(0 To 0) As AcadText
SetVariable "MIRRTEXT", 0 MsgBox "MIRRTEXT的值是:" & GetVariable("MIRRTEXT")
Set 用户选择集合 = ThisDrawing.SelectionSets.Add("用户选择集合") Set 轴线集合 = ThisDrawing.SelectionSets.Add("轴线集合") Set 标注集合 = ThisDrawing.SelectionSets.Add("标注集合")
' 提示用户选择对象并将它们添加到选择集中。 ' 要完成选择,按回车。 用户选择集合.SelectOnScreen ' 在选择集中循环并将每一对象的颜色改为蓝色。
''' '''过虑选择集,筛选出垂直钢筋和paixs ''' For Each 图元 In 用户选择集合
Select Case 图元.EntityName
Case "AcDbLine" Set 轴线(0) = 图元 If 图元.Layer = "PAXIS" And _ 图元.StartPoint()(0) - 图元.EndPoint()(0) < 10 Then 轴线集合.AddItems 轴线
End If Case "AcDbText" If 图元.Layer = "垂直钢筋" Then Set 标注(0) = 图元 标注集合.AddItems 标注
End If Case Else
End Select
Next 图元
''' '''进行镜像 ''' For Each 标注文字 In 标注集合
Dim 文字的x坐标 As Double Dim 最近的x坐标 As Double Dim 最小值 As Double 最小值 = 0 标注文字的x坐标 = 标注文字.InsertionPoint()(0) For Each 对称轴线 In 轴线集合 If 最小值 = 0 Then 最小值 = Abs(标注文字的x坐标 - 对称轴线.StartPoint()(0)) 最近的x坐标 = 对称轴线.StartPoint()(0) End If If 最小值 > Abs(标注文字的x坐标 - 对称轴线.StartPoint()(0)) Then 最小值 = 标注文字的x坐标 - 对称轴线.StartPoint()(0) 最近的x坐标 = 对称轴线.StartPoint()(0) End If Next 对称轴线 ' 定义镜像轴 Dim point1(0 To 2) As Double Dim point2(0 To 2) As Double point1(0) = 最近的x坐标: point1(1) = 0: point1(2) = 0 point2(0) = 最近的x坐标: point2(1) = 1: point2(2) = 0 'MsgBox "被镜像的文字是:" & _ '&"镜像的坐标是:" &最近的x坐标 Dim 镜像文字 As AcadText Set 镜像文字 = 标注文字.Mirror(point1, point2)
Next 标注文字
End Sub
这段代码还会时不时的出错
不知道是为什么
在autocad2000里面可以运行而且文字镜像好好的,但是在r14里面不可以
昨天是不可以,刚刚就出错了,在"For Each 图元 In 用户选择集合"这个位置
谢谢 |
|