• ベストアンサー
  • 困ってます

AutoCAD LISP ~ PAUSE について

(defun c:TEST() (command "_DIM" "OVERRIDE" "DIMTP" PAUSE "DIMTM" PAUSE ) (princ)) DIMTMはデフォルトがマイナスのため、プラスが必要となる場合、-5 というようにユーザー入力の際、マイナスを付ける必要がある。 このマイナスをとりたい。  ユーザー入力 5 としたら、入る値は +5 となるようにしたい  (現状では -5 となる) どうすれば良いのか、教えてください。よろしくお願いいたします┏○))

共感・応援の気持ちを伝えよう!

  • 2D
  • 回答数3
  • 閲覧数34
  • ありがとう数4

質問者が選んだベストアンサー

  • ベストアンサー
  • 回答No.2

(defun c:TEST() (command "_DIM" "OVERRIDE" "DIMTP" PAUSE "DIMTM" PAUSE ) (princ)) DIMTM が 文字列(コマンドとして)で渡され ユーザー入力だから てるので  入力数を変数に代入して 符号を反転 DIMTMに渡せばいいんじゃない

共感・感謝の気持ちを伝えよう!

質問者からの補足

すみません。変数?…LISPは始めたばかりで、よくわかっておりません。具体的にどうすればよいのか教えて頂けないでしょうか。 よろしくお願いいたします┏○))

その他の回答 (2)

  • 回答No.3

>>https://www.vector.co.jp/soft/win95/business/se118034.html?_ga=2.77607060.1056100567.1644464774-1516849316.1644054025 こちらを参考にしてみてください 歯車作成用LISPです バグがあって動きませんが } が確か足りない

共感・感謝の気持ちを伝えよう!

質問者からのお礼

最初の方の行、(/ p0 x0 x0 e2 ~)が未定義関数とのエラーをはき、認識しませんでしたが、消したらうまく動きました。 ありがとうございます。助かりました。

  • 回答No.1

共感・感謝の気持ちを伝えよう!

質問者からの補足

ご回答ありがとうございます。 LISPのプログラム内で、どうやって-1をかければよいのでしょうか? (* -1 PAUSE)ではできませんでした。 お手数ですが、教えていただけると幸いです。 よろしくお願いいたします┏○))

関連するQ&A

  • AUTOCADで両側オフセットについて

    AUTOCAD 2015を使用しています。 あるホームページにあるLISP文を見つけたのですが、両側オフセットした結果のオブジェクトの 画層が元のオブジェクトと同じになるのですが、現在の画層にできないでしょうか? LISP文は ;両側オフセット (defun C:wofset (/ end)   (command "offsetdist" pause)   (setq end 1)   (while (/= nil end)     (command "offset" "" pause)     (if (< 0 (getvar "cmdactive"))       (command "@" "" "offset" (* 2 (getvar "offsetdist")) (entlast) "@" "" "offsetdist" (/ (getvar "offsetdist") 2))       (setq end nil)     )   )   (princ) ) です。 どうぞ宜しくご教授お願いいたします。

  • AUTOCADで両側オフセットについて

    AUTOCAD2015を使用しています。 前回回答いただいたのですが、結果がByLayerに従わなかった為 元要素と同じ色になってしまいました。 それと元々入力値が片側方向のオフセット値なので私の仕事では感違いの元です。 結果を現画層にしたがわせ、入力値が両側にオフセットした結果にする様にしたいのですが ご教授お願い致します。 今のマクロ文は下記です。 ;両側オフセット (defun C:wofset (/ end)   (command "offsetdist" pause)   (setq end 1)   (while (/= nil end)     (command "offset" "" pause)     (if (< 0 (getvar "cmdactive"))       (command "@" "" "change" "l" "" "P" "LA" (getvar "CLAYER") "" "offset" (* 2 (getvar "offsetdist")) (entlast) "@" "" "change" "l" "" "P" "LA" (getvar "CLAYER") "" "offsetdist" (/ (getvar "offsetdist") 2))       (setq end nil)     )   )   (princ) ) どうぞ宜しくお願い致します。

  • emacs lisp でread-from-minibuffer関数での入力を、自動的にする方法(プログラミング)はありますか?

    emacs lisp でminibuffer-read関数での入力を、自動的にする方法(プログラミング)はありますでしょうか。 たとえば、(read-from-minibuffer "")を実行すると、ミニバッファからの入力が促されますが、そこでユーザが入力するのではなく、プログラムで値を入力し確定してread-from-minibuffer関数を抜けたいのですが、その方法がわかりません。 それを目指して下記のようなプログラムを書きましたがうまくいきませんでした。aaを実行して、"abc"が渡るようにして、ミニバッファを抜けたいのですがうまくいきません。 ---- (defun x() (insert "abc\n") ) (defun aa () (interactive) "" (add-hook 'minibuffer-setup-hook 'x ) (read-from-minibuffer "") (remove-hook 'minibuffer-setup-hook 'x ) ) ---- また、上記(insert "abc\n")の後に、(exit-minibuffer)を記述すれば、"abc\n"が渡って抜けられるかと考えたのですが、うまくいきません。どなたか、良い方法をご存知の方があれば、教えていただきたくよろしくお願いいたします。

  • Delphi7でのキーボードの制御について

    はじめまして。 Delphi7 + Interbase7でC/Sシステムを開発しているアクアと申します。 テキストボックスに入力した値(数値)をキーボードの↑↓(もしくはテンキーの+-)ボタンによって 入力した値を↑(プラス1)、↓(マイナス1)したいのですが、↑↓キーの判断が分かりません。 KeyPressイベント中で、もし↑キーが押されたら値をプラス1、↓がおされたらマイナス1をする為には、 どー言うコードを書いたらよろしいでしょうか? もしくは、キーボードのキーをプログラム中で判断する為のコード等がありましたら、教えてください。 よろしくお願い致します。

  • VBAで外部プログラムを非表示で実行するには

    VBAとVBScriptを混同しているのかもしれませんがよく分からないので教えてください。 Excel2010のVBAから、外部プログラム(test.exe)をコマンドプロンプトを非表示の状態で実行して、外部プログラムの実行が終了するのを待ってから、次の処理をさせたいのですが、test1のプログラムでは(A)の部分でエラーになってしまいます。また、test2のプログラムでは正しく実行されるのですがコマンドプロンプトのウインドウを非表示にする方法がよく分かりません。 test1のプログラムでエラーをでなくする方法、または、test2のプログラムでコマンドプロンプトのウインドウを非表示にする方法がありましたら教えてください。 ------------------------------------------------------- Sub test1()  Dim ws As Object  Dim we As Object  Dim command As String  command = "C:\test.exe"  Set ws = CreateObject("WScript.Shell")  Set we = ws.Run("%ComSpec% /c " & command, 0, False) '<===(A)  Set we = Nothing  Set ws = Nothing End Sub ------------------------------------------------------- Sub test2()  Dim ws As Object  Dim we As Object  Dim command As String  command = "C:\test.exe"  Set ws = CreateObject("WScript.Shell")  Set we = ws.exec("%ComSpec% /c " & command)  Do Until we.Status   DoEvents  Loop  Set we = Nothing  Set ws = Nothing End Sub -------------------------------------------------------

  • VBAでdosのcompコマンドの実行結果を得たい

    Excel2010のVBAで、 MS-DOSのcompコマンドの実行結果を取得したいのですが、 以下の方法ではうまくいきませんでした。 どのようにすればよいでしょうか。(Windows7) ------------------------------------------------------------ Sub test()  Dim wshShell As Object  Dim wshExec As Object  Dim command As String  Dim file1 As String  Dim file2 As String  Dim result As String  file1 = "C:\test\0128\test.xlsx"  file2 = "C:\test\0129\test.xlsx"  'command = "dir /d " & file1 & " " & file2     '(OK)  'command = "fc /b " & file1 & " " & file2      '(OK)  command = "comp " & file1 & " " & file2      '(NG)  'command = "echo n | comp " & file1 & " " & file2  '(NG)  Debug.Print command  Set wshShell = CreateObject("WScript.Shell")  Set wshExec = wshShell.exec("%ComSpec% /c " & command)  Do Until wshExec.Status   DoEvents  Loop  If wshExec.StdErr.AtEndOfStream = False Then   'エラー   result = wshExec.StdErr.ReadAll  Else   '正常   result = wshExec.StdOut.ReadAll  End If  Set wshExec = Nothing  Set wshShell = Nothing  MsgBox result End Sub ------------------------------------------------------------

  • C++ プラス記号とマイナス記号を交互に表示したいです。

    C++ プラス記号とマイナス記号を交互に表示したいです。 現在、C++の勉強を柴田望洋さんの本『新版 明解C++ 入門編』で勉強しています。 使用ソフトはvisual C++ 2010express です。 【質問です】 自分が入力した値の数だけ、プラス記号とマイナス記号を交互に表示させるコードを書いているのですが、何度挑戦しても、思うような結果が得られません。 どなたかわかる方がいましたらアドバイスを頂きたいです。 どうぞよろしくお願いします。 ●正しい結果の例 入力した値が1の時。 + 入力した値が2の時。 + - 入力した値が3の時。 + - + 入力した値が4の時。 + - + - ●私のコードによる結果 入力した値が1の時。 + - 入力した値が2の時。 + - 入力した値が3の時。 + - + - 入力した値が4の時。 + - + - ●私が書いたコードです。 # include <iostream> using namespace std; int main() { int n; cout<<"何個表示させますか?\n"; cin>>n; if (n>0) { while (n>0) { cout<<'+'; n - -;    //  ←見にくいと思いますがデクリメントです。 cout<<'-';     n - -;    // ←見にくいと思いますがデクリメントです。 } } }

  • Excel VBAでは可でユーザーは入力不可のセル

    C5のセルはユーザーが入力できて、 C5セルに入力された値に応じてVBAで C7セルに処理した値を表示させたいのですが、 C7のセルはユーザーは入力(選択)できないようにしたいのです。 具体的には、 C5セルの書式設定の保護タブのロックを解除して ホームタブのセルグループの書式▼でシートの保護を選択して 表示される「シートの保護」のダイアログで デフォルトのままOKボタンをクリックすると C5セルのみ入力できて C5セル以外は入力できなくなります。 ユーザーにはこの状態にしておきたいのですが、 VBAでC7セルに入力できるようにする方法はないでしょうか。 (Windos7, Excel2010)

  • IF関数

    教えて下さい。 エクセルのIF関数について まずC1にA1-B1を計算させます。 そのときに、C1の値がマイナスの場合は0表示するようにし、プラスの場合はその値が表示されるようにしたいのです。 具体例 A1=10、B1=12 の場合C1=0     A1=10、B1=8  の場合C1=2 となるように! C1に入力する計算式を教えて下さい。

  • macでのcommandキーコンビネーション

    macユーザーの方、特にエンジニアの方に質問です コピペは普通にデフォルトのcommand + C と command + V 全選択、切り取りは command + A と command + X を使っていますか? それともkarabinerなど使って別のキーを割り当てたりしてますか?? あと解答の時、US / JIS どちらのキーボードを使っているかも教えて下さい よろしくお願いします

    • 締切済み
    • Mac