この掲示板は AutoCADマクロ屋本舗 の掲示板です。

【 注意 】最初に必ず ↓↓ 下記内容 ↓↓ を参照ください。
① マクロが分からない方は、まず 【 マクロ講座 】 を参照ください。
② 質問の前に 【 マクロ使用前の注意事項 】 をお読みください。
③ 質問する時は、新規投稿フォーム下の【 新規投稿時のお願い 】を必ずお読みください。

文字入れ替え(マクロ+VBS)
某所で見つけた質問で、LT2019でも動くマクロ + VBS with AcadRemocon を持ってるので、公開するです。
大したVBSじゃないですが、「マクロと組み合わせることでLT2019でも使える」がウリです。
※LT2019では、VBS単体でのAcadRemoconの使用は非常に困難ですが、マクロで補助すれば、使えるパターンもあります。

①AcadRomoconをインストールしておく。
 (バージョンは3.2で大丈夫)

②下記のVBSのコードを「文字入れ替え.vbs」という名前のファイルにして、
 AutoCADのサポートフォルダに保存(サポートフォルダの場所はオプションで確認)

③AutoCADに起動用マクロを登録
^C^Cselect;$M=$(if,$(getvar,cmdactive),\)AI_STARTAPP "文字入れ替え.vbs"^M

使用方法
マクロを実行して、文字を2つ選択し、確定。

※文字を1個づつ確定してはダメ。2個選択して確定。
※選択した文字が2個以外なら、何も起こらない。
※連続モードは不可。

以下がVBSのコード

Dim Acad
If MustRun Then WScript.Quit 'MustRun制作者の極楽鳥さんに感謝

Call Main

Sub Main()
Set Acad = CreateObject("AcadRemocon.Body")
fileName = Acad.GetWindowsTemp() & "AcadRemocon.dxf"
Acad.Wait (150)
Acad.acPostCommand "justifytext^Mp^M^M^C^Cfiledia 0 dxfout^M" & fileName & "^Mo^Mp^M^Mv^M2000^M16^My^M^C^Cfiledia^M1^M"
Acad.Wait (1000)
Acad.DxfExtract Cnt, Arr, "ENTITIES", "", "TEXT", "1"
If Not Cnt = 2 Then Exit Sub
Temp = Arr(1, 1)
Arr(1, 1) = Arr(1, 2)
Arr(1, 2) = Temp
Acad.DxfUpdate(Arr)
Acad.Wait (150)
Acad.acPostCommand "^C^Cerase^MP^M^Mucs^Mw^M-insert^M*" & fileName & "^Mnon 0,0^M1^M0^Mucs^Mp^M"

End Sub

Public Function MustRun()
Const WSHOST = "wscript.exe"
Dim objWshShell
Dim ExecCmd

Set objWshShell = WScript.CreateObject("WScript.Shell")
If objWshShell.ExpandEnvironmentStrings("%PROCESSOR_ARCHITECTURE%") = "AMD64" Then
ExecCmd = objWshShell.ExpandEnvironmentStrings("%WINDIR%") & _
"\SysWOW64\" & WSHOST & " " & _
Chr(34) & WScript.ScriptFullName & Chr(34)
objWshShell.Exec(ExecCmd)
MustRun = True
Else
MustRun = False
End If

Set objWshShell = Nothing
Set ExecCmd = Nothing

End Function
  • Lon
  • 2019/08/07 (Wed) 19:49:47
Re: 文字入れ替え(マクロ+VBS)
つられて考えてみました

AcadRemoconは無いので、マクロだけで
なので文字合わせ等、制限はありますが条件揃えばいけると思います

*^C^C$M=setenv;to;0;$(nth,$(getenv,to),join;文字を選択(R-Clickで終了)^X\$M="""$(if,$(getvar,cmdactive),;select;non;@;non;@;;ucs;ob;non;@;id;ins;0<0;ucs;p;setenv;to;1,^Csetenv;to;0)""",,,,)$(nth,$(getenv,to),,;p1;$(getvar,lastpoint);expert;5;-block;txblk;$M="""$(getenv,p1)""";p;;expert;$(getvar,expert);oops;setenv;to;2,,,)$(nth,$(getenv,to),,,join;文字を選択(R-Clickで終了)^X\$M="""$(if,$(getvar,cmdactive),;erase;p;;select;non;@;non;@;;ucs;ob;non;@;id;ins;0<0;ucs;p;setenv;to;3,^Csetenv;to;0)""",,)$(nth,$(getenv,to),,,,;p2;$M=$(getvar,lastpoint);copybase;non;@;p;;erase;p;;pasteclip;non;$(getenv,p1);setenv;to;4,)$(nth,$(getenv,to),,,,,-insert;txblk;non;$(getenv,p2);;;;explode;l;-purge;b;txblk;N;setenv;to;0)^M

1.マクロ起動
2.1つ目の文字選択(R-Clickで終了)
3.2つ目の文字選択(R-Clickで終了)

※、文字合わせは同じにしてください
※、ブロック『txblk』を仮に作って処理していますので
  もし『txblk』をお使いの場合は変更してください。
  • chibi-tom
  • 2019/08/08 (Thu) 16:52:58
Re: 文字入れ替え(マクロ+VBS)
>AcadRemoconは無いので、

もし興味が有るのでしたら、下記方法で導入できます。

http://hp.vector.co.jp/authors/VA026873/
ここに行き、「AcadRemocon導入・更新支援ソフト(Aremoupd.exe)」をダウンロード。

そのファイルを右クリックして管理者として実行。(普通にダブルクリックではダメな事が多い)
表示される内容を把握しながら、「はい」「はい」・・・で進むと、3.2.0バージョンがインストールされると思います。

これでAcadRemoconの用意はできましたので、今後はVBS等を実行すれば使用できます。
※AutoCADバージョンが2011~2014でしたら、AcadRemoconのバージョンを3.4.3にアップグレードした方が良いのですが、
 AutoCADバージョンが2015以上になると、AcadRemoconのバージョンを3.4.3に上げる事に意味は無いので、
 上記のVBSを実行する分には、3.2.0でも問題ありません。
  • Lon
  • 2019/08/08 (Thu) 18:15:48
Re: 文字入れ替え(マクロ+VBS)
Lonさん

ありがとうございます

しかし、自分のPCの知識が無さすぎまして

>表示される内容を把握しながら
恥ずかしながら把握できませんでした

導入の流れが表示されてOKすると
更新終了のメッセージがでて終わってしまい
インストールできた気配はありませんでした

もう少し格闘してみます
  • chibi-tom
  • 2019/08/09 (Fri) 08:27:58
Re: 文字入れ替え(マクロ+VBS)
>更新終了のメッセージがでて終わってしまい

多分、インストール出来てると思います。

「C:\Windows\SysWOW64」の中に、「AcadRemocon.dll」が有れば成功です。
32bitパソコンなら、「C:\Windows\System32」にあります。
  • Lon
  • 2019/08/09 (Fri) 09:02:30
Re: 文字入れ替え(マクロ+VBS)
できました!

ありがとうございます

移動、コピーではないのはやっぱりすごいですね
ちゃんと文字を書き換えてる(位置合わせが元のまま)


  • chibi-tom
  • 2019/08/09 (Fri) 09:15:06

返信フォーム






プレビュー (投稿前に内容を確認)