havano 发表于 2006-5-20 08:20:02

如何水平翻转层的几何图形?

我在一幅画中创建了一些几何图形。主要是多段线、线性尺寸和文本。
现在,我希望能够围绕垂直轴镜像特定层上的所有几何体(不保留原始几何体)。
我知道我可以使用sendcommands,但是我不愿意这样做。有什么建议吗?越简单越好!
**** Hidden Message *****

Bryco 发表于 2006-5-20 09:59:52

哈瓦诺,你可以使用3dmirer,它不使用轴,而是使用平面。
这是翻转东西的东西。根据您的需要调整它,如果您没有选择集功能,请下载它。

Dnereb 发表于 2006-5-20 10:58:07

谢谢你到目前为止。在你的帮助下,我写了这段代码。但是有些不对劲,我不知道是什么...
Public Sub HorizontalFlip()
'Corrected after Bryco's hint about variable declaration syntax (ver. below).
'Now it works!
Dim Thingy As AcadEntity
Dim LayerName As String
Dim MostLeftX as Double, MostRightX As Double'thanks Bryco!
Dim BBoxMin, BBoxMax 'variants, will later be specified by GetBoundingBox
Dim FlippointA(0 To 2) as Double, FlippointB(0 To 2) As Double 'thanks Bryco!
MostLeftX = 2147483647: MostRightX = -2147483647
LayerName = "0" 'can be any valid layername
For Each Thingy In ThisDrawing.ModelSpace
    If Thingy.Layer = LayerName Then
      Thingy.GetBoundingBox BBoxMin, BBoxMax
      If BBoxMin(0)MostRightX Then MostRightX = BBoxMax(0)
    End If
Next
'I now have MostLeftX and MostRightX for all geometry on layer.
'next, I define the mirror line, halfway between MostLeftX and MostRightX
FlippointA(0) = (MostLeftX + MostRightX) / 2: FlippointB(0) = FlippointA(0)
FlippointA(1) = 0: FlippointB(1) = 1
FlippointA(2) = 0: FlippointB(2) = 0 'endpoints of the vertical mirror line
'finally, I want to horizontally flip all entities on the layer
For Each Thingy In ThisDrawing.ModelSpace
    If Thingy.Layer = LayerName Then
      Thingy.Mirror FlippointA, FlippointB      'thanks Dnereb!
      Thingy.Delete
    End If
Next
End Sub
我忽略了什么?

havano 发表于 2006-5-20 13:51:42

Dim Flippoint A(0 To 2), Flippoint B(0 To 2)As Double
只有一个是双精度

Bryco 发表于 2006-5-20 14:31:06

非常感谢布莱科!
我立即回顾了我当前的项目,发现了类似的错误变量声明。显然,我和他们一起逃脱了。

havano 发表于 2006-5-20 14:47:43

谢谢,谢谢你,贝伦德。选择不是真正的出路。

Bryco 发表于 2006-5-20 16:11:12

没有Thx,
这只是一个简单的部分,我有一个简单的用户界面。
祝你们玩得开心。
页: [1]
查看完整版本: 如何水平翻转层的几何图形?