そうですね。
LISPが使えるなら、LISPで作ればいいんですけど。
ここは、LT使いの人も多いのでLTでもできる方法を書いてみたいと思います。
ちなみに、動作確認はしてませんので、あしからず。
https://totthi.bbs.fc2.com/?act=reply&tid=16461777
↑ここでやっていることの応用です。
ほぼ、そこからのコピペでやりますよ。
マクロとVBSを併用で作ってみました。
※このVBSにはAcadRemoconは必要ありません。
※VBS=AcadRemoconと思い込んでいる人も多いようですので念のため。
※「AcadRemoconって何?」って人は気にしなくて良いです。使いませんので。
まずは、下記のプログラム構文をコピーしてメモ帳に貼り付けて下さい。
そして、Dドライブの直下(フォルダを作らないでD:の中)に、「LLen2CP.vbs」の名前で保存してください。
拡張子は「.txt」ではありません。「.vbs」です。
保存する際の文字コードは「ANSI」です。(これ大事)
保存したファイルのアイコンが水色の「S」という文字のロゴに変わっていれば正常に保存された事になります。
アイコンがテキストファイルのままなら、拡張子を確認して下さい。
本来は、保存ファイル名や保存する場所は、どこでも良いのですが、
今回は、従って下さい。うまく実行出来たら、お好きに変えて下さい。
「私のパソコンにはDドライブなんて無いわよ」なんて人はお好きな場所にどうぞ。その代わり、文末のマクロ内のDドライブの記述を書き換えて。
↓ここからvbsプログラム
Option Explicit
Call Main
Sub Main
Dim s
WScript.Sleep 500
s = GetClipboardText()
s = mid(s , InStrRev(s , "PERIMETER"))
s = mid(s , InStr(s , "=") + 1)
s = mid(s , 1 , InStr(s , "(") - 1)
s = trim(s)
SetClipboard s
End Sub
Function GetClipboardText()
Dim objHTML
Set objHTML = CreateObject("htmlfile")
GetClipboardText = Trim(objHTML.ParentWindow.ClipboardData.GetData("text"))
End Function
Function SetClipboard(ScrMsg)
Dim ws, cl, si
Set ws = CreateObject("WScript.Shell")
Set cl = ws.Exec("Clip")
Set si = cl.stdIn
si.Write ScrMsg
si.Close
Set si = Nothing
Set cl = Nothing
SEt ws = Nothing
End Function
↑ここまでvbsプログラム
次に、CADに下記のマクロを登録してください。
レギュラー版の人は、このマクロ
^C^Clengthen;\dy;;perimeter;copyhist;GRAPHSCR;(STARTAPP "C:/WINDOWS/SYSTEM32/WSCRIPT.EXE" "D:LLen2CP.vbs")(PRINC);
LT版の人は、このマクロ
^C^Clengthen;\dy;;perimeter;copyhist;GRAPHSCR;AI_STARTAPP "D:LLen2CP.vbs"^M
では、マクロを実行してください。
線分をクリックすると、その長さがクリップボードにコピーされます。
マクロの冒頭に「*」を付けて、*^C^C・・・とすれば連続処理モードで動作します。その時の終了はESC。