TOP PAGE > 記事閲覧
文字の内容を別の文字に貼り付ける(lisp)
投稿日 | : 2015/08/24(Mon) 09:35 |
投稿者 | : アルサポ |
参照先 | : |
lispによる文字の編集処理についてのlispについて掲載します。
まず、文字の内容を別の文字に貼り付けるlispです。
使い方は、コピーをしたい文字を選択した後に、
その文字内容を貼付けたい文字を選択すれば、文字内容が変更されます。
;文字をコピーして、別の文字に貼り付ける
(defun C:TextCopy (/ cpyTxt entCpyTxt pstTxt entpstTxt txt)
(setq cpyTxt (entsel "\nコピー元の文字列を選択:"))
(setq entCpyTxt (entget (car cpyTxt)))
;文字の内容を取得
(setq txt (cdr (assoc 1 entCpyTxt)))
(setq pstTxt (entsel "\nペーストする文字列を選択:"))
(setq entpstTxt (entget (car pstTxt)))
;ペーストする文字列の内容にコピー元の文字内容を置き換える
(setq entpstTxt (subst (cons 1 txt) (assoc 1 entpstTxt) entpstTxt))
;entmod関数はデータの更新をする
(entmod entpstTxt)
(princ)
)
Re: 文字の内容に追加記入をする(lisp)
投稿日 | : 2015/08/24(Mon) 09:56 |
投稿者 | : アルサポ |
参照先 | : |
先ほどの「文字の内容を別の文字に貼り付けるlisp」を少し書き換えて、
文字の内容に追加記入をするlispも簡単に作成できます。
例えば、元の文字内容に「L=」と「m」を追加して「L=○○m」と文字に追加で書き替えたい時には
文字の内容を取得した行を書き換える事で実現できます。
今回は、変数の名前は同じにしています。
それは、先ほどのソースを元に書き換えて作成している事と「文字の内容を別の文字に貼り付けるlisp」
とどこが変わったか比較しやすくするためです。
;追加文字を記入する
(defun C:TextAddition (/ cpyTxt entCpyTxt txt)
(setq cpyTxt (entsel "\n追加する文字列を選択:"))
(setq entCpyTxt (entget (car cpyTxt)))
;文字の内容を取得
(setq txt (strcat "L=" (cdr (assoc 1 entCpyTxt)) "m"))
;追加した文字内容を選択した文字内容と置き換える
(setq entCpyTxt (subst (cons 1 txt) (assoc 1 entCpyTxt) entCpyTxt))
;entmod関数はデータの更新をする
(entmod entCpyTxt)
(princ)
)