danpapa blog

趣味のプログラミング等について

nanoCADーLISP

LISPの書き方

今回で、nanoCADのカスタマイズ方法については終わるはずです。

nanoCAD カスタマイズ1
この動画でやったことを説明してきて、後はLISPと最後におまじないです。

それではLISP行ってみましょう

;*****************************************************************************
(defun c:H-test()
	(command "line")
)
;*****************************************************************************
(defun c:補助線削除()
	(command "-layer LO *" "")
	(command "-layer U 99 補助線" "")
	(command "selectall")
	(command "delete")
	(command "-layer U *" "")
)
;*****************************************************************************
(defun c:中心線付円()
	(setq pos1 (getpoint "挿入点を選択"))
	(command "circle" pos1)
	(setq dist1 (* (半径取得 (entget (entlast))) 1.2))
	(setq x_val (car pos1))
	(setq y_val (cadr pos1))
	(setq x_right (+ x_val dist1))
	(setq x_left (- x_val dist1))
	(command "line" (list x_right y_val) (list x_left y_val) "")
	(setq ed (entget (entlast)))
	(changeLayer ed "20 中心線")
	(setq y_up (+ y_val dist1))
	(setq y_down (- y_val dist1))
	(command "line" (list x_val y_up) (list x_val y_down) "")
	(setq ed (entget (entlast)))
	(changeLayer ed "20 中心線")
	(command "中心線付円")
)
;*****************************************************************************
(defun changeLayer(ent lay)
	(setq ed (subst (cons 8 lay) (assoc 8 ed) ed ))
	(entmod ed)
)
;*****************************************************************************
(defun 半径取得(ed / ret)
	(cdr (assoc 40 ed))
)
;*****************************************************************************
(defun c:十字補助線()
	(setq pos1 (getpoint "挿入点を選択"))
	(command "_xline h" pos1 "")
	(setq ed (entget (entlast)))
	(changeLayer ed "99 補助線")
	(command "_xline v" pos1 "")
	(setq ed (entget (entlast)))
	(changeLayer ed "99 補助線")
	(command "十字補助線")
)
;*****************************************************************************
(defun c:reLoadScript()
	(load "C:/Program Files (x86)/Nanosoft/nanoCAD en 5.0/bin/H-Tools/H-Custom.lsp")
)

こんな感じです。コメントや説明は特にありません。AutoCADやってた時もLISPってほとんど書いたことなくて、こんな感じで良いのかしら?

このファイル「H-Custom.lsp」としていますが、これをnanoCADでロード、又は自動ロードしておけば良いです。ロード後に先回作ったツールバーをクリックすると対応したLISPが起動します。

さて、最後のおまじないです。

おまじないとは?

よく理解してないのですが、推測で説明してみますw
nanoCADのカスタマイズは説明してきたことだけでは反映されません。特にメニューやツールバーが反映されないはずです。これはレジストリに情報を書き込んでいて、ファイルより優先されるからではないでしょうか?

反映させる方法
カスタマイズを反映させるにはインストールフォルダに「userdat.ini」というファイルを作ります。中身はこれだけです。

[\Configuration]
ClearRegistry=f1

このファイルを作った後にnanoCADを起動するとレジストリよりファイル優先になりカスタマイズが反映されるはずです。ただし、ツールバーの配置など、全てリセットされます。予めプロフィールに保存して復元できるようにしておくことをお勧めします。

あと、カスタマイズが反映されたら「userdat.ini」を下記のように書き換えてください。

[\Configuration]
;ClearRegistry=f1

「;」これでコメント化できるようです。これやらないと起動のたびに初期化されるのでストレス満載ですw

ふぅ、ここまで長かった(手抜きの説明ですがw)
これでdanpapaが読み取れた、カスタマイズ方法の説明はおしまいです。
さぁ、みんなも便利なLISP書いて公開しましょうw

カスタマイズしやすいようにソフトも作成途中ですが、まぁ気長にお待ちくださいw他にもやりたいことが・・・
ん?何もないかもw・・・いやOpenCVDeep Learningも修正とか試したいことあるし。。。