コンテンツにスキップ

linkcad.controller

上位レベルの変換ワークフローコントローラーです。linkcad.conv を直接扱う代わりに、変換ウィザードの完全な状態機械(形式選択、オプション設定、読み込み、ツール適用、書き出し)が必要なときに使用します。

from linkcad.v1.controller import (
ConversionController, ConversionState,
ControllerEvent, IControllerListener, ProgressInfo,
)

クラス

ConversionController

LinkCAD の変換ウィザードで使われる多段階の変換ワークフローを統括します。

from linkcad.v1.controller import ConversionController
ctrl = ConversionController()
ConversionController.import_format = "GDSII"
ConversionController.export_format = "DXF"
ctrl.selected_input_files = ["/data/design.gds"]
ConversionController.output_file = "/data/design.dxf"
ctrl.start_read()
dwg = ctrl.current_drawing
if dwg is None:
raise RuntimeError("Import produced no drawing")
ctrl.start_write()
print(ctrl.current_state)

形式の選択と出力パスはエンジン側のプロセス全体で共有される状態なので、import_formatexport_formatoutput_file静的プロパティです。クラスに対して代入してください。インスタンス経由での読み取りも可能で、同じ値が得られます。

プロパティ / メソッド説明
ConversionController()新しいコントローラーインスタンスを作成します
ConversionController.import_format / .export_format形式名(例: "GDSII")。静的、代入可能
ConversionController.output_file出力ファイルパス。静的、代入可能
ctrl.selected_input_files入力ファイルパスのリスト。代入可能
ctrl.set_import_options(options_json) / ctrl.set_export_options(options_json)JSON 文字列としてオプションを適用します
ctrl.tools_enabled読み込みと書き出しの間にツールを実行するかどうか。代入可能
ctrl.configure_tools(tools_config)ツール段階を JSON で構成します
ctrl.batch_modeバッチ変換モード。代入可能
ctrl.start_read()入力ファイルの読み込みを開始します
ctrl.start_write()出力ファイルの書き出しを開始します
ctrl.start_batch()バッチ変換を開始します
ctrl.finish_operation(success)現在の操作を完了として記録します
ctrl.cancel_current_operation()実行中の操作をキャンセルします
ctrl.operation_in_progress操作の実行中は True
ctrl.next() / ctrl.back() / ctrl.reset()ワークフローの状態を移動します
ctrl.can_go_next / ctrl.can_go_back移動が可能かどうか
ctrl.current_state現在の ConversionState
ctrl.current_drawing読み込まれた Drawing、または None
ctrl.current_progress現在の ProgressInfo
ctrl.import_logインポートログ(IEventLogReader
ctrl.export_logエクスポートログ(IEventLog
ctrl.conversions基盤となる Conversions コレクション——linkcad.conv を参照
ctrl.add_listener(listener) / ctrl.remove_listener(listener)IControllerListener の登録/解除

set_import_options()set_export_options() はメソッドのままです。コントローラーは JSON をそのままプラグインへ渡し、読み返せるものを何も保持しません。ゲッターのないプロパティはプロパティではありません。

ConversionState

変換ウィザードの各ページを表す列挙型です。

説明
ConversionState.Begin初期状態
ConversionState.SelectFormatインポート/エクスポート形式の選択
ConversionState.ImportOptionsインポートオプションのページ
ConversionState.ExportOptionsPre読み込み前に表示されるエクスポートオプション
ConversionState.ReadFile入力ファイルの読み込み
ConversionState.ApplyToolsジオメトリツールの適用
ConversionState.ReadLogインポートログの確認
ConversionState.OpenPolys開いたポリラインの処理
ConversionState.BatchToolsバッチ実行向けのツール設定
ConversionState.Structureセル/レイヤー構造のページ
ConversionState.ExportOptionsPost読み込み後に表示されるエクスポートオプション
ConversionState.SelectBatchFilesバッチファイルの選択
ConversionState.ConvertBatchFilesバッチ変換の実行中
ConversionState.WriteFile出力ファイルの書き出し
ConversionState.WriteLogエクスポートログの確認
ConversionState.Summaryサマリーページ
ConversionState.Endワークフロー完了

ControllerEvent

コントローラーが発する通知の列挙型です。

説明
ControllerEvent.StateChangedワークフローの状態が変わりました
ControllerEvent.PageActivatedウィザードのページがアクティブになりました
ControllerEvent.ProgressUpdated進捗情報が変化しました
ControllerEvent.LogUpdatedログにエントリが追加されました
ControllerEvent.DrawingChanged現在の図面が置き換えられました
ControllerEvent.OperationFinished操作が完了しました
ControllerEvent.OperationCancelled操作がキャンセルされました
ControllerEvent.ErrorOccurredエラーが報告されました

ProgressInfo

ctrl.current_progress が返す進捗のスナップショットです。

プロパティ説明
percentage進捗率(0-100)
current_operation現在のステップの説明
current_file処理中のファイル
current_file_index現在のファイルのインデックス
total_filesジョブ内のファイル数

IControllerListener

コントローラーの通知を受け取るには、これを継承します。すべてのメソッドをオーバーライドする必要があります。

from linkcad.v1.controller import ConversionController, IControllerListener
class Watcher(IControllerListener):
def on_state_changed(self, new_state): print(f"state: {new_state}")
def on_page_activated(self, page): pass
def on_progress_updated(self, progress): print(f"{progress.percentage}%")
def on_log_updated(self): pass
def on_drawing_about_to_be_cleared(self, drawing): pass
def on_drawing_changed(self, drawing): pass
def on_operation_finished(self, success): print(f"finished: {success}")
def on_operation_cancelled(self): pass
def on_error_occurred(self, message): print(f"error: {message}")
ctrl = ConversionController()
watcher = Watcher()
ctrl.add_listener(watcher)
メソッド呼ばれるタイミング
on_state_changed(new_state)ワークフローの状態が変わったとき
on_page_activated(page)ウィザードのページがアクティブになったとき
on_progress_updated(progress)進捗が更新されたとき
on_log_updated()ログが更新されたとき
on_drawing_about_to_be_cleared(drawing)現在の図面が破棄される直前
on_drawing_changed(drawing)図面が変わったとき
on_operation_finished(success)操作が完了したとき
on_operation_cancelled()操作がキャンセルされたとき
on_error_occurred(message)エラーが発生したとき