wujimmy 发表于 2004-3-14 19:38:00

[求助]文字镜像的问题

我用这个


SetVariable "MIRRTEXT", 0


然后用mirror这个函数镜像出来的文字还是倒过来的?


为什么?该怎么做?谢谢

subtlation 发表于 2004-3-14 19:55:00

把你的代码放上来,别人试一下,看是否有你说的情况。

wujimmy 发表于 2004-3-14 20:33:00

Sub 镜像()<BR>Dim 用户选择集合 As AcadSelectionSet<BR>Dim 轴线集合 As AcadSelectionSet<BR>Dim 标注集合 As AcadSelectionSet<BR>Dim 轴线(0 To 0) As AcadLine<BR>Dim 标注(0 To 0) As AcadText


SetVariable "MIRRTEXT", 0<BR>MsgBox "MIRRTEXT的值是:" &amp; GetVariable("MIRRTEXT")


Set 用户选择集合 = ThisDrawing.SelectionSets.Add("用户选择集合")<BR>Set 轴线集合 = ThisDrawing.SelectionSets.Add("轴线集合")<BR>Set 标注集合 = ThisDrawing.SelectionSets.Add("标注集合")


' 提示用户选择对象并将它们添加到选择集中。<BR>' 要完成选择,按回车。<BR>用户选择集合.SelectOnScreen<BR>' 在选择集中循环并将每一对象的颜色改为蓝色。


'''<BR>'''过虑选择集,筛选出垂直钢筋和paixs<BR>'''<BR>For Each 图元 In 用户选择集合


Select Case 图元.EntityName


Case "AcDbLine"<BR>                       Set 轴线(0) = 图元<BR>                       If 图元.Layer = "PAXIS" And _<BR>                       图元.StartPoint()(0) - 图元.EndPoint()(0) &lt; 10 Then<BR>                       <BR>                       轴线集合.AddItems 轴线


End If<BR>Case "AcDbText"<BR>                       If 图元.Layer = "垂直钢筋" Then<BR>                       Set 标注(0) = 图元<BR>                       标注集合.AddItems 标注


                       End If<BR>Case Else


End Select


Next 图元


'''<BR>'''进行镜像<BR>'''<BR>For Each 标注文字 In 标注集合


               Dim 文字的x坐标 As Double<BR>               Dim 最近的x坐标 As Double<BR>               Dim 最小值 As Double<BR>               最小值 = 0<BR>               标注文字的x坐标 = 标注文字.InsertionPoint()(0)<BR>                       <BR>               For Each 对称轴线 In 轴线集合<BR>                               If 最小值 = 0 Then<BR>                                       最小值 = Abs(标注文字的x坐标 - 对称轴线.StartPoint()(0))<BR>                                       最近的x坐标 = 对称轴线.StartPoint()(0)<BR>                                       End If<BR>                               If 最小值 &gt; Abs(标注文字的x坐标 - 对称轴线.StartPoint()(0)) Then<BR>                               最小值 = 标注文字的x坐标 - 对称轴线.StartPoint()(0)<BR>                               最近的x坐标 = 对称轴线.StartPoint()(0)<BR>                               End If<BR>               Next 对称轴线<BR>               ' 定义镜像轴<BR>Dim point1(0 To 2) As Double<BR>Dim point2(0 To 2) As Double<BR>point1(0) = 最近的x坐标: point1(1) = 0: point1(2) = 0<BR>point2(0) = 最近的x坐标: point2(1) = 1: point2(2) = 0<BR>'MsgBox "被镜像的文字是:" &amp; _<BR>'&amp;"镜像的坐标是:" &amp;最近的x坐标<BR>Dim 镜像文字 As AcadText<BR>Set 镜像文字 = 标注文字.Mirror(point1, point2)


       <BR>Next 标注文字


End Sub


       


这段代码还会时不时的出错


不知道是为什么


在autocad2000里面可以运行而且文字镜像好好的,但是在r14里面不可以


昨天是不可以,刚刚就出错了,在"For Each 图元 In 用户选择集合"这个位置


谢谢

subtlation 发表于 2004-3-15 08:43:00

镜像文字时不会有问题。


程序在创建选择集时没有判断选择集是否已经存在。这样第二次运行时就会出错。
页: [1]
查看完整版本: [求助]文字镜像的问题