コンテンツにスキップ
メインメニュー
メインメニュー
サイドバーに移動
非表示
案内
メインページ
GizmoLab 関連
オンラインショップ
CAD&CGブログ
YouTube
GitHub
CAD 系
GizmoTools
AutoLISP
Visual LISP
BricsCADのLISP
GzLib
DCL
OpenDCL
DWG
DXF
CADのコマンド一覧
システム変数
図形の種類
Ver別サポートAPI
CAD用語集
メモ
newLISP
CommonLISP
Script-Fu
Inno setup
JavaScript
ANDROID
Windowsでのファイルハッシュ確認
Prolog
Python
Clojure
Electron
フォント
数学メモ
イメージサイズとメモリ量
blender
Processwire
Win10,11メモ
IIJmio
mediawiki資料
ヘルプ
検索
検索
表示
ログイン
個人用ツール
ログイン
AutoCAD でリアクターを使うときのガイドラインのソースを表示
ページ
議論
日本語
閲覧
ソースを閲覧
履歴を表示
ツール
ツール
サイドバーに移動
非表示
操作
閲覧
ソースを閲覧
履歴を表示
全般
リンク元
関連ページの更新状況
ページ情報
表示
サイドバーに移動
非表示
←
AutoCAD でリアクターを使うときのガイドライン
あなたには「このページの編集」を行う権限がありません。理由は以下の通りです:
この操作は、次のグループに属する利用者のみが実行できます:
登録利用者
。
このページのソースの閲覧やコピーができます。
{{AutoLISP}} リアクターを使用する場合は、以下のガイドラインに従う必要がある。 このガイドラインに違反するリアクターは、リアクターの内部実装が変更された場合、アプリケーションにとって予測できない結果をもたらす可能性がある。 ==== リアクターの通知の順序に依存しない。==== いくつかの例外を除いて、リアクター通知のシーケンスに依存しないことが推奨される。 例えば、OPENコマンドは BeginCommand、BeginOpen、EndOpen、EndCommand イベントをトリガするが、これらのイベントはその順番で発生するとは限らない。 安全に信頼できる唯一のイベントシーケンスは、Begin イベントが対応する End イベントの前に発生するということになる。 例えば、commandWillStart() は常に commandEnded() の前に発生し、beginInsert() は常に endInsert() の前に発生する。 将来的に新しい通知が導入されたり、既存の通知が再配置されたりした結果、シーケンスが変更された場合、より複雑なシーケンスに依存すると、アプリケーションに問題が生じる可能性がある。 ==== 通知間の関数呼び出しのシーケンスに依存しない。==== 特定の通知の間に特定の関数が呼び出されることは保証されていない。例えば、オブジェクトA に対して :vlr-erased という通知を受け取った場合、それはオブジェクトAが消去されたことを意味する。 A で :vlr-erased 通知を受け取った後、B で :vlr-erased 通知を受け取った場合、それはオブジェクト A と B の両方が消去されたことを意味する。 シーケンスに頼るのではなく、システムの状態を示すリアクタに頼ること。 ==== リアクターのコールバック関数でインタラクティブ関数を使用しない(例えば、getPoint や entsel を使用してはいけない)。==== リアクターコールバック関数内からインタラクティブ関数を実行しようとすると、イベントがトリガーされた時点でも AutoCAD がコマンドを処理している可能性があるため、深刻な問題が発生する可能性がある。そのため、getPoint、entsel、getkword などの入力取得メソッドや、選択セット操作、コマンド関数の使用は避けること。 ==== イベントハンドラ内からダイアログボックスを起動しない。==== ダイアログ ボックスは対話的な機能とみなされ、AutoCAD の現在の操作に干渉する可能性がある。しかし、メッセージ ボックスやアラート ボックスは対話的な機能とはみなされず、安全に発行することができる。 ==== イベント通知を発行したオブジェクトを更新しない。==== オブジェクトがコールバック関数をトリガする原因となっているイベントは、コールバック関数が呼び出されたときにまだ進行中であり、オブジェクトはまだ AutoCAD で使用されている可能性がある。 したがって、同じオブジェクトのコールバック関数からオブジェクトを更新しようとしないこと。ただし、イベントのトリガーとなったオブジェクトから情報を安全に読み取ることはできる。 例えば、タイルで埋め尽くされた床があり、床の境界線にリアクターを取り付けたとして、床のサイズを変更すると、リアクターのコールバック関数は自動的にタイルを追加または減算して新しい領域を埋める。 この関数は境界線の新しい領域を読み取ることができるが、境界線自体の変更を試みることはできない。 ==== 同じイベントをトリガするコールバック関数からアクションを実行しない。==== リアクターのコールバック関数で同じイベントをトリガーとするアクションを実行すると、無限ループが発生する。 たとえば、BeginOpen のイベント内から図面を開こうとすると、AutoCAD は、開いている図面の最大数に達するまで、さらに多くの図面を開き続けてしまう。 ==== リアクターを設定する前に、リアクターがまだ設定されていないことを確認する。==== そうしないと、同じイベントに対して複数のコールバックを呼び出すことになってしまう。 ==== AutoCAD がモーダルダイアログを表示している間は、イベントは発生しないことを覚えておくこと。==== 処理の一時停止みたいなものなのでイベントもなしということです。 ----- 関連事項 * [[リアクタ関数]] * [[IJCAD でリアクターを使うときのガイドライン]] * [[BricsCAD でリアクターを使うときのガイドライン]] [[Category:AutoLISP]]
AutoCAD でリアクターを使うときのガイドライン
に戻る。
検索
検索
AutoCAD でリアクターを使うときのガイドラインのソースを表示
話題を追加