掲示板でフィールドコードで調べた面積を、mm2単位から100万分の1にしてm2にする方法をさがしていました。以前、どっかでプログラムを組んだような気がして、やってみましたけどそのときは別の方法を使っていました。 というわけで、結論はやっぱり無理で・・・検証のための作りかけのVBAだけが残りました。 もったいないのでここに書いて、後から使い回ししよう。
'-------------------------------------------------------------
' -フィールドコード追加サンプルプログラム
' - http://www.mura.sh/
' - (c) mura. 2004 All rights reserved
'-------------------------------------------------------------
Public Sub AddField()
Dim returnObj As AcadObject
Dim basePnt As Variant
Dim acPline As AcadLWPolyline
Dim acMtext As AcadMText
Dim strCode As String
Dim width As Double
RETRY:
On Error Resume Next
'面積を調べるポリラインを選択
ThisDrawing.Utility.GetEntity returnObj, basePnt, vbCr + "ポリラインを選択: "
If Err <> 0 Then
MsgBox "Program ended." & Err, , "フィールドコード プログラム"
Err.Clear
Exit Sub
Else
If (returnObj.ObjectName = "AcDbPolyline") Then
Set acPline = returnObj
'フィールド式の定義
strCode = "%<\AcObjProp Object(%<\_ObjId " & acPline.ObjectID & ">%).Area \f ""%.1f ÷1000000が面積"">%"
'width = 1000
'フィールド式を入れるマルチテキストの作成位置を指定
basePnt = ThisDrawing.Utility.GetPoint(, "マルチテキストの左上コーナーを指定: ")
Set textObj = ThisDrawing.ModelSpace.AddMText(basePnt, width, strCode)
acMtext.Update
Exit Sub
End If
End If
GoTo RETRY
End Sub
(2004年12月28日)
|