API リファレンス
LinkCAD の Python API は次のモジュールに整理されており、いずれも安定した linkcad.v1 名前空間から利用できます。各 linkcad.v1.* モジュールは対応するトップレベルモジュールの公開名前空間全体をミラーしているため、オブジェクトは同一です。v1 からインポートすることで、スクリプトを安定 API に固定できます。
linkcad と linkcad.v1 が公開するのはこれらのモジュールだけです——トップレベルに名前は存在しません。モジュールの内容どうしが衝突するからです。パッケージ構造 を参照してください。
API 全体、そしてすべてのモジュールを通じて 4 つの規約があります。
- 名詞はプロパティ、動詞はメソッド。
shape.area、cell.shapes、drawing.layers、bounds.width、task.progress、log.entry_count、conversion.succeeded——括弧は付きません。destroy()、clone()、rotate()、mark_fatal()は括弧を保ちます。 - ゲッター/セッターの対は 1 つの読み書き可能プロパティであり、2 つの名前にはならない。
layer.enabled = Falseであってlayer.enable(False)ではありません。 - ジオメトリは、それを所有することになるオブジェクトが作成する。
drawing.add_cell(name)、drawing.add_layer(name)、cell.add_polygon(layer, vertices)、cell.add_ref(cell)。静的ファクトリーはありません。 - アクセサーがパラメーターを取る場合、プロパティが一般的なケースを担当し、
filtered_*メソッドが残りを露出します:cell.shapes/cell.filtered_shapes(selected_only=True)、controller.layers/controller.filtered_layers(sort_order=…)。
列挙型のメンバーは常にその型経由——EndCap.Round、HolesMode.Link——で参照し、モジュール直下の名前としては公開されません。
| モジュール | 目的 | ドキュメント |
|---|---|---|
linkcad.v1.plugin | プラグインフレームワーク——デコレーター、オプション、リーダー/ライター基底クラス、DrawingBuilder、WriterController、ダイアログ仕様 | プラグイン開発 |
linkcad.v1.db | 図面データベース——セル、レイヤー、形状、曲線、テキスト、ロック、トランザクション、図面ヘルパー | データアクセス |
linkcad.v1.geom | ジオメトリプリミティブ——点、ベクトル、変換、範囲、角度 | 座標計算 |
linkcad.v1.edit | ジオメトリタスク——マージ、フラット化、スナップ、結合、展開 | バッチ操作 |
linkcad.v1.env | オプションとログ——永続オプションの読み書き、イベントログ | 設定と診断 |
linkcad.v1.conv | ファイル形式変換——図面をプログラムから読み書き | 形式 I/O |
linkcad.v1.libgraph | ブール演算ジオメトリエンジン——ポリゴンの和、積、差 | 形状の数学処理 |
linkcad.v1.controller | 変換ワークフローコントローラー——完全なウィザードパイプライン | 上位レベルの変換 |
インポートのパターン
モジュールをインポートし、そこから辿ります。
from linkcad.v1 import db, geom, edit, env, conv, libgraph, controller, plugin
with db.Drawing("scratch") as dwg: cell = dwg.add_cell("TOP") cell.add_polygon(dwg.add_layer("METAL1"), [(0, 0), (100, 0), (100, 100)])あるいは、使う名前をインポートします。
# Plugin frameworkfrom linkcad.v1.plugin import tool, Tool, Option, TableColumnfrom linkcad.v1.plugin import format_reader, FormatReader, DrawingContext, DrawingBuilderfrom linkcad.v1.plugin import format_writer, FormatWriter, WriterContext, ShapeInfo, WriterControllerfrom linkcad.v1.plugin import DialogSpec, ChoiceItem, EventLog, Phase, LayerFlags, SortOrderfrom linkcad.v1.plugin import HolesMode, PolygonType, EndCap, FillRule, UNIT_IN_METERS
# Databasefrom linkcad.v1.db import Drawing, Cell, Layer, Shape, Polygon, Polylinefrom linkcad.v1.db import Arc, Ellipse, Donut, Nurbs, Text, Reffrom linkcad.v1.db import Object, DrawingObject, CellObject, Color, Propertyfrom linkcad.v1.db import ReadLock, WriteLock, Transactionfrom linkcad.v1.db import Unit, ObjectType, CellContext, EndCap, FillRulefrom linkcad.v1.db import BooleanOperation, MergeLayerPolarityResult
# Geometryfrom linkcad.v1.geom import Point, Vector, Bounds, Transformation, Angle, Resolution
# Edit tasksfrom linkcad.v1.edit import MergeTask, FlattenTask, FillRule, HolesMode, ShapesToConvertfrom linkcad.v1.edit import CellFilter, LayerFilter, ShapeFilter
# Options & loggingfrom linkcad.v1.env import get_option_boolean, set_option_boolean, EventLog, Severity
# File conversionfrom linkcad.v1.conv import Conversion, Conversions, FormatRegistry, FormatInfofrom linkcad.v1.conv import Format, FormatAttributes
# Boolean geometryfrom linkcad.v1.libgraph import boolean_and, boolean_or, ShapeProcessor, succeeded
# Conversion controllerfrom linkcad.v1.controller import ConversionController, ConversionState, ProgressInfo