Imports Autodesk.AutoCAD.ApplicationServices
Imports Autodesk.AutoCAD.DatabaseServices
Imports Autodesk.AutoCAD.EditorInput
Imports Autodesk.AutoCAD.Geometry
Imports Autodesk.AutoCAD.Runtime
Public Class DrawLineCommands
<CommandMethod("DrawLine")>
Public Sub DrawLine()
Dim doc As Document = Application.DocumentManager.MdiActiveDocument
Dim db As Database = doc.Database
Dim ed As Editor = doc.Editor
' 1. 始点の座標を入力するダイアログボックスを表示する
Dim startPoint As PromptPointResult = ed.GetPoint("始点の座標を入力してください:")
If startPoint.Status <> PromptStatus.OK Then
Return
End If
' 2. 終点の座標を入力するダイアログボックスを表示する
Dim endPoint As PromptPointResult = ed.GetPoint("終点の座標を入力してください:")
If endPoint.Status <> PromptStatus.OK Then
Return
End If
' 3. 入力された座標を反映する
Using tr As Transaction = db.TransactionManager.StartTransaction()
Dim bt As BlockTable = tr.GetObject(db.BlockTableId, OpenMode.ForRead)
Dim btr As BlockTableRecord = tr.GetObject(bt(BlockTableRecord.ModelSpace), OpenMode.ForWrite)
Dim line As New Line(startPoint.Value, endPoint.Value)
btr.AppendEntity(line)
tr.AddNewlyCreatedDBObject(line, True)
tr.Commit()
End Using
ed.WriteMessage("Line drawn successfully.")
End Sub
End Class
ChatGPTには座標入力コンポーネントの表示をしてくれと頼んだが、コマンド入力ボックスの上に始点(または終点)の座標を入力してくださいと表示されるにとどまった。
ちなみに写真では、一本目の直線の終点に二本目の直線の始点に選んでコマンド”DrawLine”を入力すると、
再度チャットボットの会話が始まり、終点の入力を促される。
まだ少々問題点が残ったが、やりたいことに向けて着々と進んでいる!
【追伸】
この直線描画CHATBOTはいちいち座標を入力する必要がない。マウスを動かして任意の位置にポインターをあわせてワンクリックし、始点や終点として選べるようになっている。
すでに出来上がったエレメントの端点にポインターを合わせれば、そこを始点に直線をひける。