linkcad.env
スクリプトとプラグインのためのオプションとログ機能です。
from linkcad.v1.env import ( get_option_boolean, set_option_boolean, get_option_int, set_option_int, get_option_real, set_option_real, get_option_string, set_option_string, get_option_path, set_option_path, test_option, record_option, register_option_int, register_option_boolean, register_option_real, register_option_string, init_options, save_options, program_version, program_version_number, EventLog, IEventLog, IEventLogReader, Severity,)オプション
LinkCAD は永続的な形式オプションとツールオプションを文字列キー(例: "GdsiiInFlattenAll")で保存します。以下の関数を使うと、オプションダイアログを開かずにスクリプトからこれらの値を読み書きできます。
Python プラグインが Option.* で宣言したオプションは、プラグイン単位に区切られた生成キー PyPlugin.<クラス>.<属性> を使います。AsciiWriter の flatten 属性なら PyPlugin.AsciiWriter.flatten として保存されます。予約されたルート PyPlugin はプラグインオプションをアプリケーション自身の名前空間から隔離し、クラス部分は flatten という同名のオプションを持つ 2 つのプラグインを区別します。これらも同じ関数で読み書きします。
読み書き
| 関数 | 説明 |
|---|---|
get_option_boolean(name, default=False, *, record=False) | ブールオプションを読み取ります |
set_option_boolean(name, value) | ブールオプションを書き込みます |
get_option_int(name, default=0, *, record=False) | 整数オプションを読み取ります |
set_option_int(name, value) | 整数オプションを書き込みます |
get_option_real(name, default=0.0, *, record=False) | 浮動小数点オプションを読み取ります |
set_option_real(name, value) | 浮動小数点オプションを書き込みます |
get_option_string(name, default="", *, record=False) | 文字列オプションを読み取ります |
set_option_string(name, value) | 文字列オプションを書き込みます |
get_option_path(name, default="", *, record=False) | パスオプションを文字列として読み取ります |
set_option_path(name, value) | 文字列からパスオプションを書き込みます |
test_option(name) | そのオプションが登録済みで読み取り可能かどうか |
record_option(name) | オプションへのアクセスを記録します |
どのゲッターも、オプションが登録されていなければ default を返します。未知のキーでも型のゼロ値ではなく渡した値が返ります。
from linkcad.v1.env import get_option_int
iterations = get_option_int("MyToolIterations", 10) # 10 if never registeredrecord は 5 つのゲッターすべてでキーワード専用です。したがって 2 番目の位置引数は、bool を含むどの型でも「既定値」を意味します——get_option_boolean(name, True) は読んだとおりの意味になります。
Option.* で宣言したプラグインオプションは run()、read()、write() の呼び出し前に自動的に登録されるため、self.<属性> から読めば現在の値が得られます。
登録と永続化
プラグイン基底クラスは自身のオプションを登録するため、ほとんどのスクリプトでこれらは不要です。独自のオプションキーを定義するコード向けです。
| 関数 | 説明 |
|---|---|
register_option_int(name, default_value, short_name="", persistent=True) | 整数オプションを宣言します |
register_option_boolean(name, default_value, short_name="", persistent=True) | ブールオプションを宣言します |
register_option_real(name, default_value, short_name="", persistent=True) | 実数オプションを宣言します |
register_option_string(name, default_value, short_name="", persistent=True) | 文字列オプションを宣言します |
init_options(enable_persistence=True) | オプションシステムを初期化します |
save_options() | オプションを永続ストレージへ書き出します |
バージョン
| 関数 | 説明 |
|---|---|
program_version(short_form=False) | LinkCAD のバージョン(文字列) |
program_version_number() | LinkCAD のバージョン(数値) |
from linkcad.v1.env import get_option_boolean, set_option_boolean
# Check whether GDSII import flattens hierarchyflatten = get_option_boolean("GdsiiInFlattenAll", False)print(f"GDSII flatten: {flatten}")
# Temporarily overrideset_option_boolean("GdsiiInFlattenAll", True)ログ
EventLog
アプリケーションのイベントログです。ここに書き込まれたメッセージは LinkCAD のログパネルに表示されます。
from linkcad.v1.env import EventLog, Severity
log = EventLog()log.log(Severity.Info, "Processing complete")log.log(Severity.Warning, "Layer 'TEMP' will be deleted")log.log(Severity.Error, "Could not open file")
if log.highest_severity == Severity.Error: log.mark_fatal()print(log.entry_count, log.fatal)1 つの階層をなす 3 つのインターフェイスがあります。IEventLog は書き込み側、IEventLogReader は読み取りを加えたもの、EventLog は自分で構築できる具象ログです。Conversion.export_log と ConversionController.export_log は IEventLog を、import_log は IEventLogReader を返します。
| プロパティ / メソッド | 定義元 | 説明 |
|---|---|---|
EventLog() | EventLog | イベントログを作成します |
log.log(severity, message) | IEventLog | 指定した重大度でメッセージを書き込みます |
log.log_with_title(severity, title, description) | IEventLog | タイトル付きメッセージを書き込みます |
log.log_success(message) | IEventLog | 成功メッセージの簡易メソッド |
log.log_info(message) | IEventLog | 情報メッセージの簡易メソッド |
log.log_warning(message) | IEventLog | 警告メッセージの簡易メソッド |
log.log_error(message) | IEventLog | エラーメッセージの簡易メソッド |
log.fatal | IEventLog | ログが致命的と印付けられていれば True |
log.mark_fatal() | IEventLog | ログを致命的と印付けます。取り消せません |
log.entry_count | IEventLogReader | ログ内のエントリ数 |
log.highest_severity | IEventLogReader | ログ内の最も高い重大度 |
log.log_at_line(severity, message, line) | EventLog | 行番号付きでメッセージを書き込みます |
log.log_at_name(severity, message, name) | EventLog | 名前付きの位置情報とともに書き込みます |
log.clear_log() | EventLog | すべてのエントリを削除します |
mark_fatal() が fatal = True にならず動詞のままなのは、これが一方通行の遷移だからです。戻る手段はありません。
Severity
ログメッセージの重大度レベルです。
| 値 | 説明 |
|---|---|
Severity.Success | 成功メッセージ |
Severity.Info | 情報メッセージ |
Severity.Informational | 情報メッセージ。Severity.Info と同じ |
Severity.Warning | 致命的ではない警告 |
Severity.Error | 回復可能なエラー |