イベントは、ユーザがユーザ フォーム上のコントロールを操作した結果だけでなく、事前定義されたアクションがユーザ フォームに対して発生したときにもトリガされます。
[AutoCAD Objects]フォルダを開くと(すでに開いている場合もあります)、図面のアイコンと ThisDrawing という名前が表示されます。[フォーム]フォルダを開くと(すでに開いている場合もあります)、フォームのアイコンと、今作成したフォームの名前 gpDialog が表示されます。
次の手順では、プロジェクト エクスプローラ ウィンドウを使用する方法を学習します。
[プロジェクト エクスプローラ ウィンドウ]を選択するか、[Ctrl]+[R]を押して、プロジェクト エクスプローラ ウィンドウを表示します。 コード ウィンドウでコード モジュールが開き、フォーム エディタ ウィンドウでユーザ フォームが開きます。
次の手順では、ThisDrawing モジュールの既存のコードを更新します。
Public trad As Double ' Updated Public tspac As Double ' Updated Public tsides As Integer ' Add Public tshape As String ' Add
変数は、ユーザ フォームのコードからアクセスして修正できるように、Public として設定する必要があります。tsides 変数はポリゴン タイルの辺数を保持し、tshape 変数は選択されたタイルの形状(円形またはポリゴン)を保持します。
trad = ThisDrawing.Utility.GetDistance(sp, "Radius of tiles: ") tspac = ThisDrawing.Utility.GetDistance(sp, "Spacing between tiles: ")
アポストロフィを追加すると、コード文がコメントになるので、コードの実行は許可されなくなり、プロジェクトにコードを保持できるようになります。コードは、次のようになっているはずです。
' trad = ThisDrawing.Utility.GetDistance(sp, "Radius of tiles: ") ' tspac = ThisDrawing.Utility.GetDistance(sp, "Spacing between tiles: ")
' Load and display the Garden Path user form Load gpDialog gpDialog.Show
' Draw the tile with the designated shape
Sub DrawShape(pltile)
Dim angleSegment As Double
Dim currentAngle As Double
Dim angleInRadians As Double
Dim currentSide As Integer
Dim varRet As Variant
Dim aCircle As AcadCircle
Dim aPolygon As AcadLWPolyline
ReDim points(1 To tsides * 2) As Double
' Branch based on the type of shape to draw
Select Case tshape
Case "Circle"
Set aCircle = ThisDrawing.ModelSpace.AddCircle(pltile, trad)
Case "Polygon"
angleSegment = 360 / tsides
currentAngle = 0
For currentSide = 0 To (tsides - 1)
angleInRadians = dtr(currentAngle)
varRet = ThisDrawing.Utility.PolarPoint(pltile, angleInRadians, trad)
points((currentSide * 2) + 1) = varRet(0)
points((currentSide * 2) + 2) = varRet(1)
currentAngle = currentAngle + angleSegment
Next currentSide
Set aPolygon = ThisDrawing.ModelSpace.AddLightWeightPolyline(points)
aPolygon.Closed = True
End Select
End Sub
Set cir = ThisDrawing.ModelSpace.AddCircle(pltile, trad)
DrawShape pltile ' Updated
次の手順では、gpDialog ユーザーフォームにコードを追加して、フォームのコントロールの動作とユーザ フォームがロードされたときに起こることを定義します。

gp_tsides.Enabled = True ThisDrawing.tshape = "Polygon"
このコードは、gp_tsides テキスト ボックスを有効にし、ThisDrawing モジュールの tshape 変数を文字列 Polygon に設定します。
gp_tsides.Enabled = False ThisDrawing.tshape = "Circle"
このコードは、gp_tsides テキスト ボックスを無効にし、ThisDrawing モジュールの tshape 変数を文字列 Circle に設定します。
Private Sub accept_Click()
If ThisDrawing.tshape = "Polygon" Then
ThisDrawing.tsides = CInt(gp_tsides.text)
If (ThisDrawing.tsides < 3#) Or (ThisDrawing.tsides > 1024#) Then
MsgBox "Enter a value between 3 and " & _
"1024 for the number of sides."
Exit Sub
End If
End If
ThisDrawing.trad = CDbl(gp_trad.text)
ThisDrawing.tspac = CDbl(gp_tspac.text)
If ThisDrawing.trad < 0# Then
MsgBox "Enter a positive value for the radius."
Exit Sub
End If
If (ThisDrawing.tspac < 0#) Then
MsgBox "Enter a positive value for the spacing."
Exit Sub
End If
GPDialog.Hide
End Sub
このコードは、ユーザがタイルの形状としてポリゴンを選択し、ポリゴンの有効な辺数を指定したかどうかをテストします。テキスト ボックスに入力された半径と間隔の値は変数 trad と tspac に保存されます。条件文も、trad と tspac の値が 0 (ゼロ)でないことを確認するために使用されます。
値が取得され、検証された後、gpDialog.Hide 文によってフォームが非表示にされ、最初にフォームを呼び出したサブルーチンにコントロールが戻されます。
Private Sub cancel_Click() Unload Me End End Sub
このイベント ハンドラは、フォームをロード解除し、マクロ全体を終了します。
Private Sub UserForm_Initialize() gp_circ.Value = True gp_trad.Text = ".2" gp_tspac.Text = ".1" gp_tsides.Text = "5" gp_tsides.Enabled = False ThisDrawing.tsides = 5 End Sub
このイベント ハンドラは、ユーザ フォームがセッションで初めてロードされたときに実行されます。
次の手順では、gpDialog ユーザ フォームに追加したコードをテストします。
をクリックします。 検索
