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

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

線長をクリップボードにコピーしたい
【使用バージョン】2020

はじめまして。

autocadでオブジェクトの線長をクリップボードにコピー出来たりするものでしょうか。
そのままExcelに線長を貼り付けたいのですが、検索する限り見つけられなくて…。

わかる方いらっしゃれば教えていただきたいです。

autocadのマクロを使用しだしてまだ2日目なので右も左もわからず失礼でしたらすみません。
  • ゆうこ
  • 2021/12/17 (Fri) 11:01:37
Re: 線長をクリップボードにコピーしたい
基本的な操作ではできないと思います

参考程度でお試しください

*^C^Coffset;;オブジェクト選択(R-Clickで終了)^X\$M=$(if,$(getvar,cmdactive),;select;non;@;non;@;;lengthen;non;@;dy;;text;non;0<0;;;$M="""$(getvar,PERIMETER)""";tedit;l;erase;l;,^Cid;)^M

1.マクロ起動
2.オブジェクト選択(R-Clickで終了)※長さ計測のできるものに限ります
3.文字編集のダイアログが開くので『Ctrl+C』でコピー後エンターキーを押す
4.EXCELに移動して貼り付け
5.AutoCADに移動して2以降を繰り返し

R版をご使用のようなので
もっと良い方法があるかもしれませんが
自分はLTしか使ったことが無いためわかりません


追記です
Lonさんの
マクロとVBSが良いと思います(笑)
こちらはスルーで良いと思います(^O^)/
  • chibi-tom
  • 2021/12/17 (Fri) 14:11:09
Re: 【VBS使用】線長をクリップボードにコピーしたい
そうですね。
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。
  • Lon
  • 2021/12/17 (Fri) 14:40:43
Re: 線長をクリップボードにコピーしたい
chibi-tomさん
Lonさん

お二人とも天才すぎません…!?
私がまごまごしてる間にこんな短期間でお答えいただけるなんて凄い…!
しかも親切!

どちらの方法でも上手くいって感激です!

ありがとうございます!
レギュラー版とLTとでマクロが違う事すら知りませんでした。
次回質問させていただく際はそちらも記載させていただきます。

勉強して自分でマクロが組めるようになるよう精進します♡
本当にありがとうございました!
  • ゆうこ
  • 2021/12/17 (Fri) 15:08:40
chibi-tomさん Lonさん 改めてお礼を言わせてください
chibi-tomさん
Lonさん

しつこいんですけど組んでいただいたマクロを使っていくうちに本当に便利過ぎて…!
改めてお礼をいいたくてコメントしました。
もう本当にすごい!
ありがとうございます!!

たまに来る仕事でこの線の長さを図る作業で一度に測る量も多く(しかもDATAEXTRACTIONで一気に測るのでは意味がない鬼畜使用)
コマンドウィンドウからコピーするのも手間がかかり効率化も測れないし…と
好きではない作業だったのですが
お二人のお陰で作業時間が1/3になりました!

相談に乗っていただき…というか答えを丸々教えていただきありがとうございます!
とってもとっても便利に使っています!

空いた2/3の時間ででAutolisp勉強しちゃうことにします…!笑
  • ゆうこ
  • 2021/12/21 (Tue) 08:54:44
Re: 線長をクリップボードにコピーしたい
>空いた2/3の時間ででAutolisp勉強しちゃうことにします

お勉強の醍醐味ってソコなんですよ。
更に新しい知識が身について、もっと空き時間が増える相乗効果。

例えば、上のVBSですが、もうちょっと手を加えれば、
線分をクリックしただけで、エクセルのアクティブなセルに数値を送り込むことができます。
ついでに改行もさせて次のセルをアクティブにすることまでも。
(改行じゃなく横のセルとか、1個飛びのセルとかも可能)
そしたら、線分をトントントンろ触っていくだけで、次々にエクセル入力される。
作業時間は1/4、1/5となるかもですね。

そして、VBSじゃなくVisualLispでも上で書いている事と全く同じことができるはず。

(VBAを使えば、ExcelのVBAとの連携も出来るのでもっと凄い事も出来ちゃっう)

極端な事例ですがこんな事がありました。
隣の部署の人が「2日作業しても半分しか終わらなかった。手伝って」と言ってきて、
30分でプログラム組んで、残りの半分を1時間程度で終わらせた事があります。
2日間、手作業でやった半分は、幾つもミスがありましたが、
私が1時間半でやった残りの半分はノーミスでした。

カスタマイズして作業を自動化するって事は、時間短縮だけでなく、ミス低減にもつながるんですよね。

と、偉そうに講釈垂れてみました。
(会社でこんな事言いだすと、逃げて行かれるのよ)

まぁ。1日掛かると思われている仕事を、半日で終わらせて、遊んでるんだから、
内緒にしておく方が賢明かもしれませんけど(サラリーマンなので)

・・・・・・・毎日がこんなんじゃないですよ。 時々こんな日が有るって事です。
  • Lon
  • 2021/12/21 (Tue) 10:20:43
Re: 線長をクリップボードにコピーしたい
Lonさん

コメントありがとうございます!
確かに勉強時間が増えて、勉強していく中でやれることがどんどん増えてって考えていくとすごいですね。
もっと早く気づきたかったー笑
でも気づけただけラッキーだと思うことにしてこれから勉強していきます!

>そしたら、線分をトントントンろ触っていくだけで、次々にエクセル入力される。
>作業時間は1/4、1/5となるかもですね。

え…!?そんなことも出来ちゃうんですか!?
可能性が無限大すぎてテンションが爆上がりです笑
Excelと連携するなら確かにVBAもいいですね。
またどれから勉強するか悩む沼にはまってしまいそうです。


>2日間、手作業でやった半分は、幾つもミスがありましたが、
>私が1時間半でやった残りの半分はノーミスでした。

Lonさんお一人で10人工分の仕事量でしかもノーミスとかもう神の域 笑
たしかにプログラミングしてしまえばヒューマンエラーは起こらないですよね。
そういう意味でも是非使えるようになりたいです。


わたしもLonさん目指して勉強します♡
ありがとうございました!
  • ゆうこ
  • 2021/12/21 (Tue) 13:29:41

返信フォーム






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