CyberChaos(さいばかおす)

プログラミング言語、トランスパイラ、RPA、ChatGPT、データマイニング、リバースエンジニアリングのための忘備録

VisualBasic.NetでAutoCAD直線描画CHATBOT作成に成功!

2024-04-27 16:31:20 | Autocad

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はいちいち座標を入力する必要がない。マウスを動かして任意の位置にポインターをあわせてワンクリックし、始点や終点として選べるようになっている。

すでに出来上がったエレメントの端点にポインターを合わせれば、そこを始点に直線をひける。



最新の画像もっと見る