89626


現在、IJCAD 2022で.NET API(C#)を使用して開発を行っています。

コマンドメソッド属性が"CommandFlags.Session"のコマンドでは、Editorクラスを使用せず  
doc.SendStringToExecute(" _.UNDO C N ", true, false, false);  
doc.SendStringToExecute("_.UNDO A ", true, false, false);  
のようにする必要があると認識しています。  
doc.SendStringToExecute()を使用すると、Application.SetSystemVariable("CMDECHO", 0);
を行っても、コマンドラインにメッセージが表示されてしまいます。メッセージを非表示にする方法を教えていただけませんか？  
※Editor.Commandメソッドの場合は、CMDECHO=0とすることで、コマンドラインに表示されるメッセージを非表示にできました。

[code]

    /// <summary>
        /// 元に戻すを不可にする
        /// </summary>
        public static void DisableUndo() {
            var doc = Application.DocumentManager.MdiActiveDocument;
            var db = doc.Database;
            var ed = doc.Editor;
    
            var oldVar = Application.GetSystemVariable("CMDECHO");
            Application.SetSystemVariable("CMDECHO", 0);
    
            // UNDO[元に戻す]コマンド→[コントロール(C)]→[なし(N)]
            doc.SendStringToExecute("_.UNDO C N ", true, false, false);
            // UNDO[元に戻す]コマンド→[すべて(A)]
            doc.SendStringToExecute("_.UNDO A ", true, false, false);
    
            Application.SetSystemVariable("CMDECHO", oldVar);
        }
    
[/code]


CC BY-SA 4.0
2022-06-15T05:53:29.083
89397
2022-06-27T08:43:49.693
52807
question
ijcad
Document.SendStringToExecuteメソッドを使用したとき、コマンドラインに表示されるメッセージを非表示にする方法を知りたい


> メッセージを非表示にする方法を教えていただけませんか？

CMDECHO システム変数は、AutoLISP command 関数を実行中に、プロンプトと入力内容をエコー表示するかどうかを指定します。  
Document.SendStringToExecute()メソッドで送るコマンド文字列をLISP式にすると、CMDECHO=0のときにプロンプトとユーザ入力を非表示にすることができます。

参考：  
<https://support.ijcad.jp/hc/ja/articles/900006376903-CMDECHO->


CC BY-SA 4.0
2022-06-27T08:43:49.693
89626
2022-06-27T08:43:49.693
52306
89397
answer