概要 - オブジェクトを鏡像化する(VBA/ActiveX)

鏡像化をすると、オブジェクトの鏡像が対称軸に基づいて複写されます。図形オブジェクトはすべて鏡像化できます。

オブジェクトを鏡像化するには、そのオブジェクトの Mirror メソッドを使用します。このメソッドには、2 つの座標を入力します。指定した座標は対称軸の端点になり、その反対側に元のオブジェクトの鏡像が作成されます。3D の場合、この線分を含む UCS の XY 平面に垂直な鏡像平面が対称軸として使用されます。

AutoCAD の MIRROR[鏡像]コマンドとは違って、このメソッドは鏡像を図面内に配置しても、元のオブジェクトは保持されます。(元のオブジェクトを削除するには、Erase メソッドを使用します)。



Text オブジェクトの反転プロパティを管理するには、AutoCAD システム変数 MIRRTEXT を使用します。システム変数 MIRRTEXT の既定設定はオン(1)で、これにより Text オブジェクトは他のオブジェクトと同じように鏡像化されます。 システム変数 MIRRTEXT がオフ(0)の場合、文字は鏡像化されません。GetVariable メソッドと SetVariable メソッドを使用して、システム変数 MIRRTEXTの設定を確認したり、設定することができます。



Viewport オブジェクトはペーパー空間で鏡像化できますが、そのモデル空間ビューやモデル空間オブジェクトには影響ありません。

軸を中心にポリラインを鏡像化する

次の例は、最適化ポリラインを作成し、軸を中心にそのポリラインを鏡像化します。新しく作成したポリラインは赤く色付けします。

Sub Ch4_MirrorPolyline()
  ' Create the polyline
  Dim plineObj As AcadLWPolyline
  Dim points(0 To 11) As Double
  points(0) = 1: points(1) = 1
  points(2) = 1: points(3) = 2
  points(4) = 2: points(5) = 2
  points(6) = 3: points(7) = 2
  points(8) = 4: points(9) = 4
  points(10) = 4: points(11) = 1
  Set plineObj = ThisDrawing.ModelSpace.AddLightWeightPolyline(points)
  plineObj.Closed = True
  ZoomAll

  ' Define the mirror axis
  Dim point1(0 To 2) As Double
  Dim point2(0 To 2) As Double
  point1(0) = 0: point1(1) = 4.25: point1(2) = 0
  point2(0) = 4: point2(1) = 4.25: point2(2) = 0

  ' Mirror the polyline
  Dim mirrorObj As AcadLWPolyline
  Set mirrorObj = plineObj.Mirror(point1, point2)

  Dim col As New AcadAcCmColor
  Call col.SetRGB(125, 175, 235)
  mirrorObj.TrueColor = col

  ZoomAll
End Sub