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

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

無題
はじめまして、AutoCAD初心者です。よろしくお願い致します。
長さ寸法記入コマンドで、寸法を記入するした後に
その作成した寸法値の下(寸法線の下)に寸法値のマイナス0.5、または1の値を文字で作成しています。

例としてですが、寸法値が700の場合寸法値の下(寸法線の下)に
”(カット寸法 699.5)”
というかんじです。
さらにこれをストレッチした場合にも対応できるように寸法値として扱えれば思うのですが、
そんな私にとって夢のような事がマクロで出来ますでしょか?
  • トモエ
  • 2016/08/20 (Sat) 16:52:47
Re: 無題
トモエ様
ストレッチには対応していませんが
とりあえず2017LTで(バージョンの記載がなかったので)

*^C^C$M=setenv;to;0;$(nth,$(getenv,to),pickadd;1;setenv;cut1;マイナス値:^X\move;寸法選択:^X\non;@;;non;@;non;@;setenv;to;1,,,,,)$(nth,$(getenv,to),,setenv;p1;$(getvar,lastpoint);;cv;$(getenv,CreateViewports);copybase;non;0<0;p;;setenv;CreateViewports;0;-layout;n;cut;;s;cut;pasteclip;non;0<0;zoom;e;setenv;to;2,,,,)$(nth,$(getenv,to),,,_cmddia;0;dim1;new;<>;l;;cmddia;1;dimoverride;dimsah;1;dimblk1;_none;dimblk2;_none;dimsoxd;1;dimtmove;2;;l;;explode;l;erase;l;;lengthen;l;DY;;erase;all;;setenv;to;3,,,)$(nth,$(getenv,to),,,,setenv;RL1;$M=$(rtos,$(-,$(getvar,perimeter),$(getenv,cut1)));setenv;to;4,,)$(nth,$(getenv,to),,,,,-layout;s;cut;pasteclip;non;0<0;zoom;e;setenv;to;5,)$(nth,$(getenv,to),,,,,,-layout;s;Model;_cmddia;0;dim1;new;<>^SX”(カット寸法$(rtos,$(getenv,RL1)))”;nea;$(getenv,p1);;cmddia;1;-layout;d;cut;setenv;CreateViewports;$(getenv,cv);setenv;to;0)^M

使用方法
1.マイナス値指定
2.寸法選択

です
  • chibi-tom
  • 2016/08/22 (Mon) 17:24:11
お返事有難うございます。
chibi-tom様でよろしいでしょうか?
お返事有難うございます。当方のバージョン2016レギューラー版です。
誠に申し訳ありません。お返事頂いた内容で、マクロを作成してみたのですが、
どうもうまくいきません。私の知識不足が原因である可能性は非常に高いのですが、
お気にされているバージョンとかが影響する可能性はございますでしょうか?

  • トモエ
  • 2016/08/22 (Mon) 18:51:28
現状をご説明
chibi-tom様のマクロをマクロというツールバーに
適当なアイコンで作成しました。このツールバーにはこのHP内で公開されているマクロもあります。
(たいへん重宝しております。ありがとうございます)
現状マクロを実行すると、”ツールバー名を入力またはALL”とコマンドラインに表示されます。
マクロというツールバーなので”マクロ”を入力してみますが、その後もそのツールバーの表示等の質問が表示されます。
”ALL”を選択すれば当然画面いっぱいにツールバー状態です。
  • トモエ
  • 2016/08/23 (Tue) 06:53:17
Re: 無題
トモエ様
申し訳ありませんがレギュラー版を使用したことがないので
なんとも答えようがありませんが
文字制限の設定が違うのかもしれないですね。

<このHP内で公開されているマクロもあります。
とあるのでトップページの注意事項は対応済みなんですよね。

とりあえず細かく分けてみました。
*^C^C$M=setenv;to;0;$(nth,$(getenv,to),pickadd;1;setenv;cut1;マイナス値:^X\move;寸法選択:^X\non;@;;non;@;non;@;setenv;to;1,,,,,,)$(nth,$(getenv,to),,setenv;p1;$(getvar,lastpoint);;cv;$(getenv,CreateViewports);copybase;non;0<0;p;;setenv;CreateViewports;0;setenv;to;2,,,,,)$(nth,$(getenv,to),,,-layout;n;cut;;s;cut;pasteclip;non;0<0;zoom;e;setenv;to;3,,,,)$(nth,$(getenv,to),,,,_cmddia;0;dim1;new;<>;l;;cmddia;1;dimoverride;dimsah;1;dimblk1;_none;dimblk2;_none;dimsoxd;1;dimtmove;2;;l;;explode;l;erase;l;;lengthen;l;DY;;erase;all;;setenv;to;4,,,)$(nth,$(getenv,to),,,,,setenv;RL1;$M=$(rtos,$(-,$(getvar,perimeter),$(getenv,cut1)));setenv;to;5,,)$(nth,$(getenv,to),,,,,,-layout;s;Model;_cmddia;0;dim1;new;<>^SX”(カット寸法$(rtos,$(getenv,RL1)))”;nea;$(getenv,p1);;cmddia;1;setenv;to;6,)$(nth,$(getenv,to),,,,,,,-layout;d;cut;setenv;CreateViewports;$(getenv,cv);setenv;to;0)^M

あとは、lengthenコマンドあたりの仕様違いがあるかも
自分もこちらのHPにて勉強中のほぼ素人ですのですいません
レギュラー版なら他のやり方もありそうですのでマクロ以外でできる方がいらっしゃれば良いのですが
  • chibi-tom
  • 2016/08/23 (Tue) 08:11:20
chibi-tom様
お世話になります。
このHPに出ているような対応はしていません。
教えて頂きました、トップページのレギュラー版への対応で、
TdMacros.lspのダウンロードを試みましたが、リンクがされていないようです。
また、TdMacros.lspを検索していましたら、知恵袋に
http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q14131365234
のような書込みがありました。私も会社で使用していますので、業務に支障がでるのが怖いです。
また、変更して頂きました内容で登録してみましたが、残念ながら前回と同じ結果でした。
いろいろお手数をお掛け致しますが、引き続きご対応頂ければ幸いです。
  • トモエ
  • 2016/08/24 (Wed) 06:54:08
Re: 無題
TdMacros.lspの代替です

(defun C:setenv (/ esvname esvval)
(and
(setq esvname (getstring "\n変数名を入力:"))
(not (= "" esvname));enter空打ちで脱出
(if (getenv esvname)
(setq esvval (getstring (strcat "値 <" (getenv esvname) ">:")))
(setq esvval (getstring (strcat "値 <nil>:"))))
(if (= "" esvval)
(setenv esvname (getenv esvname));enter空打ちの場合、前の値を保持
(setenv esvname esvval))
)
(princ)
)
(prompt "\nC:setenvを定義しました。")
(defun C:getenv (/ esvname)
(setq esvname (getstring "\n変数を名入力:"))
(if (= "" esvname)
(princ)
(getenv esvname))
)
(prompt "\nC:getenvを定義しました。")
(princ)

;(setvar "MENUECHO" 8)
;(prompt "\nmenuechoの値を8にしました。")



chibi-tomさんへ
dimblk=_noneは思いつきませんでした。
*^C^C$M=setenv;to;0;$(if,$(=,$(getenv,to),0),id;;setenv;cut1;マイナス値:^X\undo;be;id;nea;寸法を指示:^X\cmddia;0;dim1;new;;@;;cmddia;$(getvar,cmddia);dimoverride;dimsah;0;dimblk;_none;;@;;explode;@;erase;l;;pe;l;;list;l;;undo;e;u;setenv;to;1)$(if,$(=,$(getenv,to),1),cmddia;0;dim1;new;<>^SX”(カット寸法 $(rtos,$(-,$(getvar,perimeter),$(getenv,cut1))))”;@;;cmddia;$(getvar,cmddia);^Cid;)^M
  • zukki-
  • 2016/08/24 (Wed) 08:35:36
Re: 無題
zukki-様
自分にはまったくわからないので対応感謝です。

<dimblk=_noneは思いつきませんでした。
⇒とってぃ様の過去マクロ参考です。
今後もレギュラー版になることはなさそうなので勉強も避けています。
マクロの件も自分も最初はundoで考えていたのですが、どうしてもオブジェクトの選択が不安定で
lengthenコアンドしか使ってこなかったもので、listコマンドにたどり着きませんでした。

あとは、トモエ様の動作確認次第で動くとよいですね。
  • chibi-tom
  • 2016/08/24 (Wed) 08:59:09
Re: 無題
同じく2016R版を使用してます。TdMacros.lsp 適用済みの環境です。

chibi-tomさんのもzukki-さんのもどちらも動きます。
TdMacros.lsp自体は、ロードしても問題ないと思いますが・・・
  • LUNE
  • 2016/08/24 (Wed) 14:33:40
皆様お返事ありがとうございます
皆様お世話になります。
私、本当のど素人なので、完全に理解不明状態です。大変申し訳ございません。
まず、私が使用しているのはAutoCAD2016、3Dにも対応していますので、レギュラー盤かと思いますが…

このHPのトップに
"SETENV/GETENV"は、LT専用のシステムコマンドです。
ノーマルのR版では、"SETENV/GETENV"を使用出来ません。
とあります。
ごめんなさいその二つがコマンドではないのかもしれませんが、
コマンドラインにいれたところ、そのようなコマンドありませんとの事でした。
良いか悪いかはわかりません。素人発想です。

次にTdMacros.lspですが、これまた素人で作成方法がよくわからないので、
メモ帳を開きご教授頂いた、

defun C:setenv (/ esvname esvval)
(and
(setq esvname (getstring "\n変数名を入力:"))
(not (= "" esvname));enter空打ちで脱出
(if (getenv esvname)
(setq esvval (getstring (strcat "値 <" (getenv esvname) ">:")))
(setq esvval (getstring (strcat "値 <nil>:"))))
(if (= "" esvval)
(setenv esvname (getenv esvname));enter空打ちの場合、前の値を保持
(setenv esvname esvval))
)
(princ)
)
(prompt "\nC:setenvを定義しました。")
(defun C:getenv (/ esvname)
(setq esvname (getstring "\n変数を名入力:"))
(if (= "" esvname)
(princ)
(getenv esvname))
)
(prompt "\nC:getenvを定義しました。")
(princ)

;(setvar "MENUECHO" 8)
;(prompt "\nmenuechoの値を8にしました。")

をコピペし、名前と拡張を変更してつくってみました。
これをサポートフォルダーということなので、私の環境では
C:\Program Files\Autodesk\AutoCAD 2016\Supportに
入れてみました。


そして、ZUKKI様からの返信の、
*^C^C$M=setenv;to;0;$(if,$(=,$(getenv,to),0),id;;setenv;cut1;マイナス値:^X\undo;be;id;nea;寸法を指示:^X\cmddia;0;dim1;new;;@;;cmddia;$(getvar,cmddia);dimoverride;dimsah;0;dimblk;_none;;@;;explode;@;erase;l;;pe;l;;list;l;;undo;e;u;setenv;to;1)$(if,$(=,$(getenv,to),1),cmddia;0;dim1;new;<>^SX”(カット寸法 $(rtos,$(-,$(getvar,perimeter),$(getenv,cut1))))”;@;;cmddia;$(getvar,cmddia);^Cid;)^M
をマクロにはりつけAutoCADを再起動、割り付けてむあるボタンをクリックしても
コマンドライン等に変化はなくなにもできませんでした。
次に先に寸法を選択してコマンドのボタンを押すと、
コマンドラインに、setenvというコマンドはないという表示がでます。

ど素人すぎて大変申し訳ありません。
なにがどう悪いのでしょうか?
LUNE様のようにTdMacros.lsp等を使用しないで済む特別な環境作りが必要なのでしょうか?
  • トモエ
  • 2016/08/25 (Thu) 18:42:19
Re: 無題
appload
スタートアップ登録
ファイル指定
追加
再起動
  • zukki-
  • 2016/08/25 (Thu) 19:59:31
Re: 無題
あまりにぶっきらぼうでした。
TdMacros.lspの代替ですが、まぁ名前は何でもいいです。私はsetget-env.lspとしてます。
これをautocadに読み込ませないとautocadはコマンドを登録しません、
サポートフォルダに置いただけでは不親切と言うことになります。線種ロードとかと同じですね。
読み込ませる手順が上に書いたとおりです。
apploadはコマンドラインに打ち込んでください。あとはダイアログを"よくよく"見て下さい。
  • zukki-
  • 2016/08/25 (Thu) 22:02:15
出来ました!解決です。
皆様お返事ありがとうございました。
lspファイルの意味が全く解っておりませんが、
突然うまく動きはじめました。最高に気持いいです。
無知過ぎて前途多難ですが、少しづつ慣れていきたいと思います。
ありがとうございました。
解決です。
  • トモエ
  • 2016/08/28 (Sun) 12:40:55
動かなくなりました
AutoCAD2016レギュラー盤を使用しています。
二台のパソコンに、こちらで教えて頂いたマクロを
入れて使用しています。大変重宝しておりましたが、
1週間程前から、どちらも使用できない状態に突然なってしまいました。
OSは1台がWIN7、もう1台はWIN10です。
ともに同じ症状で現状マクロが使用できません。


現状画面上で割り当てたボタンを実行すると、
コマンドラインには、”TOOLBARマイナス値”と表示され、
ダイナミック入力には、”ツールバー名を入力または cut”
と表示されています。

今迄のコマンドラインの状態は覚えていませんが、この状態で、
ダイナミックに例えば”1”を入力し、任意の寸法値を選択すると、
マクロが実行され、選択した寸法値の下に”(カット寸法 **)”で1少ない
値が出てきました。
特に他の新しいマクロ等は登録していません。

現状は、小さくしたい寸法値を入力すると、
ダイナミックに”ツールバー名を入力 move”が表示されます。
この時コマンドラインには、”TOOLBARマイナス寸法選択:”と
表示されています。
コマンドラインの上には
”ツールバー名を入力または[全て(ALL)]<move>:寸法選択:*削除*”
と表示されています。

ツール→カスタマイズ→インターフェイスで
すべてのカスタマイズファイル欄から、ツールバーで、
マクロという名前で登録していますので、そこを開き、
☆カット寸法(自分がつけた名前です。)をクリックし、
右側の欄のプロパティでマクロをみると、

*^C^C$M=setenv;to;0;$(nth,$(getenv,to),pickadd;1;setenv;cut1;マイナス値:^X\move;寸法選択:^X\non;@;;non;@;non;@;setenv;to;1,,,,,)
$(nth,$(getenv,to),,setenv;p1;$(getvar,lastpoint);;cv;$(getenv,CreateViewports);copybase;non;0<0;p;;setenv;CreateViewports;0;-layout;n;cut;;s;cut;pasteclip;non;0<0;zoom;e;setenv;to;2,,,,)
$(nth,$(getenv,to),,,_cmddia;0;dim1;new;<>;l;;cmddia;1;dimoverride;dimsah;1;dimblk1;_none;dimblk2;_none;dimsoxd;1;dimtmove;2;;l;;explode;l;erase;l;;lengthen;l;DY;;erase;all;;setenv;to;3,,,)
$(nth,$(getenv,to),,,,setenv;RL1;$M=$(rtos,$(-,$(getvar,perimeter),$(getenv,cut1)));setenv;to;4,,)
$(nth,$(getenv,to),,,,,-layout;s;cut;pasteclip;non;0<0;zoom;e;setenv;to;5,)$(nth,$(getenv,to),,,,,,
-layout;s;Model;_cmddia;0;dim1;new;<>^SX(カット寸法 $(rtos,$(getenv,RL1)));nea;$(getenv,p1);;cmddia;1;-layout;d;cut;setenv;CreateViewports;$(getenv,cv);setenv;to;0)^M

となっています。
とくになにかをインストールやアンインストールはしていません。
原因不明です。
宜しくお願い致します。
ちなみに、同じツールバーに別のマクロがありますが、それは動きます。


  • トモエ
  • 2016/12/29 (Thu) 18:24:42
Re: 無題
こちらの環境ではマクロは動作していました。
とりあえずsetenvコマンドが動作するか調べてみてください。
あとコマンドラインに流れる履歴を載せると解決の一助になります。
  • zukki-
  • 2017/01/04 (Wed) 09:28:28
Re: 無題
zukki様お返事ありがとうございます。
まず、lspファイルがC:\Program Files\Autodesk\AutoCAD 2016\Supportに
ありませんでした、?原因不明です。ので再度作成してスタートアップに登録しましたが
依然うまくいきません。コマンドラインはこんな感じです。

コマンド: setenv
そのようなコマンド "SETENV" はありません。ヘルプを表示するには F1 キーを押してください。
コマンド: to
TOOLBAR ツールバー名を入力 または [すべて(ALL)]: 0
ツールバーが見つかりません。
ツールバー名を入力 または [すべて(ALL)] <0>: pickadd
ツールバーが見つかりません。
ツールバー名を入力 または [すべて(ALL)] <pickadd>: 1
ツールバーが見つかりません。
ツールバー名を入力 または [すべて(ALL)] <1>: setenv
ツールバーが見つかりません。
ツールバー名を入力 または [すべて(ALL)] <setenv>: cut1
ツールバーが見つかりません。
ツールバー名を入力 または [すべて(ALL)] <cut1>: マイナス値:*削除*

なにがなんだかさっぱりわかりません。
宜しくお願い致します。
  • トモエ
  • 2017/01/04 (Wed) 17:45:23
Re: 無題
setenvコマンドが動いてないようです。
スタートアップに登録したあと、一度AutoCADを終了してもう一度起動すれば
lispがロードされるはずです。
だた、2台のパソコンから同時にlispファイルが消えた原因は分かりません。
システムの復元とかが関係あるかな。。。
  • zukki-
  • 2017/01/04 (Wed) 19:10:14
Re: 無題
setenvコマンドをとにかく動かしたければlispファイルをAutoCADの作図領域に
ドラッグアンドドロップすればlispファイルがロードされます。
  • zukki-
  • 2017/01/04 (Wed) 19:24:05
Re: 無題
zukki様お返事ありがとうございます。
lispファイルをAutoCADの作図領域にドラッグアンドドロップしてみました
下記がその時のコマンドラインの状態ですが、なにかエラーぽいです。

AutoCAD メニュー ユーティリティ がロードされました。; エラー: 引数のタイプが間違っています: numberp: nil
; エラー: 引数のタイプが間違っています: numberp: nil
*キャンセル*
コマンド:
コマンド:
コマンド:
コマンド:
コマンド: (LOAD "C:/Users/伊藤啓二/Desktop/TdMacros.lsp") ; エラー: 引数のタイプが間違っています: numberp: nil
  • トモエ
  • 2017/01/05 (Thu) 12:16:06
Re: 無題
よく分からないですが、tbmacros.lspはコンパイルしてプロテクトされているのでドロップしても駄目みたいです。
apploadコマンドで”きちんと”ロードすればなら大丈夫です。
  • zukki-
  • 2017/01/05 (Thu) 13:20:21
Re: 無題
zukki様お返事ありがとうございます。
スタートアップへの登録はできている思います。画像を御覧下さい。

TdMacros.lspの内容です。
defun C:setenv (/ esvname esvval)
(and
(setq esvname (getstring "\n変数名を入力:"))
(not (= "" esvname));enter空打ちで脱出
(if (getenv esvname)
(setq esvval (getstring (strcat "値 <" (getenv esvname) ">:")))
(setq esvval (getstring (strcat "値 <nil>:"))))
(if (= "" esvval)
(setenv esvname (getenv esvname));enter空打ちの場合、前の値を保持
(setenv esvname esvval))
)
(princ)
)
(prompt "\nC:setenvを定義しました。")
(defun C:getenv (/ esvname)
(setq esvname (getstring "\n変数を名入力:"))
(if (= "" esvname)
(princ)
(getenv esvname))
)
(prompt "\nC:getenvを定義しました。")
(princ)

;(setvar "MENUECHO" 8)
;(prompt "\nmenuechoの値を8にしました。")

また、マクロの内容は、
*^C^C$M=setenv;to;0;$(nth,$(getenv,to),pickadd;1;setenv;cut1;マイナス値:^X\move;寸法選択:^X\non;@;;non;@;non;@;setenv;to;1,,,,,)$(nth,$(getenv,to),,setenv;p1;$(getvar,lastpoint);;cv;$(getenv,CreateViewports);copybase;non;0<0;p;;setenv;CreateViewports;0;-layout;n;cut;;s;cut;pasteclip;non;0<0;zoom;e;setenv;to;2,,,,)$(nth,$(getenv,to),,,_cmddia;0;dim1;new;<>;l;;cmddia;1;dimoverride;dimsah;1;dimblk1;_none;dimblk2;_none;dimsoxd;1;dimtmove;2;;l;;explode;l;erase;l;;lengthen;l;DY;;erase;all;;setenv;to;3,,,)$(nth,$(getenv,to),,,,setenv;RL1;$M=$(rtos,$(-,$(getvar,perimeter),$(getenv,cut1)));setenv;to;4,,)$(nth,$(getenv,to),,,,,-layout;s;cut;pasteclip;non;0<0;zoom;e;setenv;to;5,)$(nth,$(getenv,to),,,,,,-layout;s;Model;_cmddia;0;dim1;new;<>^SX(カット寸法 $(rtos,$(getenv,RL1)));nea;$(getenv,p1);;cmddia;1;-layout;d;cut;setenv;CreateViewports;$(getenv,cv);setenv;to;0)^M

です。なにが原因かさっぱりです。
明日からの仕事が気が重いです。
  • トモエ
  • 2017/01/05 (Thu) 17:18:30
Re: 無題
すいません画像添付し忘れました。
  • トモエ
  • 2017/01/05 (Thu) 17:21:41
Re: 無題
僕のzukki- 2017/01/05 (Thu) 13:20:21
に投稿したTdMacros.lspについては僕の間違いで、そのままダウンロードしないで、一度メモ帳で
開いてから保存したためエラーが出てしまいました。そのままダウンロードしたものはエラーが
出ませんでした。たぶん改行コードの関係だと思います。


話をトモエさんに戻します。
defunの前の(をコピーし忘れています。
zukki- 2016/08/24 (Wed) 08:35:36の投稿をきちんとコピペしてください。
ファイルの名前はsetget-env.lspにして下さい。

一般に、TdMacros.lspと言う名前のlspファイルははとってぃさんの
http://ameblo.jp/totthi-macro/entry-10895232361.html
からダウンロードしたファイルを指します。setevn、getenvコマンドを使えるようしたもので、
こちらの方が有名で他の人が聞いたらそのファイルを指します。
  • zukki-
  • 2017/01/05 (Thu) 19:06:51
Re: 無題
TdMacros.lspも僕のsetget-env.lspもsetenvコマンド、getenvコマンドをレギュラー版で使えるようにしたものです。
なので2つともロードする必要はありません。と言うか不都合が生じるかも知れません。
どちらかひとつをスタートアップに登録して下さい。
  • zukki-
  • 2017/01/05 (Thu) 19:20:52
直りました。感謝です。
zukki様お世話になります。
ご指示頂いたようにsetget-env.lspを再度作成し登録したところ
動きました。
そもそも、どうしてファイルが無くなったのかが不思議ですが・・・?
本当に助かりました。ありがとうございました。
  • トモエ
  • 2017/01/08 (Sun) 07:49:09

返信フォーム






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