Pythonで簡易CADチャットボットを作った - CyberChaos(さいばかおす) (goo.ne.jp)
でChatGPTにPythonで書いてもらったCADチャットボットプログラムを
今度はAutolisp言語で書き換えてもらった。
さて結果はどうなることやら。以下がそのコード。
(defun create-line ()
(setq start-x (atoi (vl-string->list (getstring "始点のX座標を入力してください。"))))
(setq start-y (atoi (vl-string->list (getstring "始点のY座標を入力してください。"))))
(setq end-x (atoi (vl-string->list (getstring "終点のX座標を入力してください。"))))
(setq end-y (atoi (vl-string->list (getstring "終点のY座標を入力してください。"))))
(command "_line" (list start-x start-y) (list end-x end-y))
)
(defun create-circle ()
(setq center-x (atoi (vl-string->list (getstring "中心のX座標を入力してください。"))))
(setq center-y (atoi (vl-string->list (getstring "中心のY座標を入力してください。"))))
(setq radius (atoi (vl-string->list (getstring "半径を入力してください。"))))
(setq x1 (- center-x radius))
(setq y1 (- center-y radius))
(setq x2 (+ center-x radius))
(setq y2 (+ center-y radius))
(command "_circle" (list center-x center-y) radius)
)
(defun process-user-input ()
(setq user-input (getstring "何をしましょうか?"))
(setq has-line (vl-string-search "直線" user-input))
(setq has-circle (vl-string-search "円" user-input))
(if has-line
(create-line)
(if has-circle
(create-circle)
(alert "そのような操作はできません。"))
)
)
(defun cad ()
(setq root (vlax-get-or-create-object "AutoCAD.Application"))
(setq doc (vla-get-ActiveDocument root))
(setq model-space (vla-get-ModelSpace doc))
(setq canvas (vla-AddCanvas model-space (vlax-3d-point '(0 0 0)) 400 400))
(setq button (vla-AddButton canvas "操作を入力" '(0 0 0) "process-user-input"))
(vla-put_Enabled button :vlax-true)
(vla-ShowBalloon button "CAD" "CAD" "操作を入力してください。" 1)
)
(defun c:cad ()
(cad)
(princ)
)
上記のコードは、AutoCADのカスタムコマンドとして実行することを想定しています。c:cadというコマンドを呼び出すことで、CAD環境が起動し、操作を受け付けます。
このコードをAutoCADのLISPエディタに貼り付け、保存してからc:cadというコマンドを実行すると、CADアプリケーションが起動し、指定された操作を行うことができます。
ご注意ください。
P.S.
全く動かんorz
やはり苦楽したAutocad2020ではダメなのか?
禿臆で更新できるAutocad2023とかを扱ってる輩から買い直すしかないのか?