nanoCAD 8.5の新しいLISP機能

nanoCADでのLISPのサポートはかなり前に登場し、主に式を入力して変数を分析するために設計されたLISPコンソールを開く特別なLSPチームに関連付けられていました。


1. LISPコンソールウィンドウ

リリース8.5は次の重要な一歩を踏み出し、コマンドラインでLISP式の入力が可能になり、さらにPAUSEシンボルのサポートが登場しました。 この記事に記載されている変更は、8.5.4131.2629、アセンブリ4133から始まるリリース8.5に含まれていました。

コマンドではなくLISP式


プロンプトコマンドへの応答でのLISP式の入力他のクエリがない場合に可能です。 例:
(最小k1 k2)
ここで、 k1k2はいくつかのグローバル変数です(図2):


2.コマンドラインでのLISP式

Enterキーを押すと、システムは結果をコマンドラインに返します。 LISP関数コマンドを使用して、コマンドを実行し、パラメーターを設定することができます-たとえば、RECTANGLEコマンド(図3):


3. RECTANGLEコマンドを実行するLISP式の例

画面に実行結果が表示されます。


4. RECTANGLEコマンドの結果

ユーザー入力の一時停止としてのLISP文字の一時停止


バージョン8.5では、 PAUSE LISPシンボルの使用が実装されています。これは、コマンドを中断してユーザー入力を要求することを意味します。 半径が事前にわかっていて、円の中心点を要求する必要があるとします。 次に、式を使用します。
(コマンド「_.CIRCLE」PAUSE(sqrt 2894.73))
処理結果を図に示します。 5:


5. PAUSEを使用したCIRCLEコマンドの中止

CIRCLEコマンドが開始し、円の中心の要求によって中断され、中心点を指定した後、式(sqrt 2894.73)を半径値として評価した結果を使用して実行を完了しました。
同じLISP式でPAUSEを繰り返し使用することは可能です、例えば:
(コマンド「_.CIRCLE」PAUSE PAUSE)

LISP文字値にアクセスする


デバッグには、多くの場合、LISP文字の現在の値を確認する必要があります。 他のCADシステムの経験から、グローバルLISP変数の現在の値を取得する方法を知っています-感嘆符、たとえば:
!myvar

バージョン8.5では、そのような可能性はありませんが、代替関数evalがあります。 次の式は、 myvar変数の値を返します。
(eval myvar)

ご注意 nanoCADの(eval PAUSE)nilを返します。
eval関数は、異なるタイプのデータでは異なる動作をするため、リスト値を格納する変数については、次のようにquote関数を追加する必要があります
(setq lista1(リスト1(リスト2 99)))
(eval lista1)エラーを返します
(eval(quote lista1))(1(2 99))を返します

ニコライ・ポレシュチュク

Source: https://habr.com/ru/post/J342128/


All Articles