linkcad.edit
ジオメトリ操作タスクです。各タスクは Drawing に対して動作し、task.execute() を呼び出して実行します。タスクは WriteLock(スタンドアロンスクリプト)または Transaction(ツールプラグイン)の内部で実行する必要があります。
from linkcad.edit import ( ITask, SnapToGridTask, FlattenTask, RemoveDuplicatesTask, MergeTask, ClosePolylinesTask, JoinPolylinesTask, PolylineToPolygonTask, ExplodeToPolygonTask, RemoveZeroWidthPolylinesTask, RemoveOverlappingPolylinesTask, FixSelfIntersectingPolygonsTask, FillRule, HolesMode, EdgePolicy, PolygonSnapMode,)基底クラス
ITask
すべてのタスクは ITask を拡張します。
| メソッド | 説明 |
|---|---|
task.execute() | 図面上でタスクを実行します |
タスク
SnapToGridTask
すべての形状頂点を最も近いグリッド点へスナップします。
from linkcad.edit import SnapToGridTask, PolygonSnapModefrom linkcad.geom import Resolution
task = SnapToGridTask(drawing, resolution, grid_x, grid_y, PolygonSnapMode.Nearest)task.execute()| パラメーター | 型 | 説明 |
|---|---|---|
drawing | Drawing | 対象図面 |
resolution | Resolution | 曲線テッセレーション設定 |
grid_x | int | X 方向のグリッド間隔(データベース単位) |
grid_y | int | Y 方向のグリッド間隔(データベース単位) |
snap_mode | PolygonSnapMode | ポリゴン頂点の処理方法 |
FlattenTask
セル階層をフラット化します——すべてのセル参照を親セル内へ展開します。
from linkcad.edit import FlattenTaskfrom linkcad.geom import Resolution
task = FlattenTask(drawing, resolution)task.execute()RemoveDuplicatesTask
図面から完全に重複した形状を削除します。
from linkcad.edit import RemoveDuplicatesTask
task = RemoveDuplicatesTask(drawing)task.execute()MergeTask
ブール和演算を使用して、各レイヤー上の重なり合うポリゴンをマージします。円やその他の曲線形状は、指定された Resolution を使って先にテッセレーションされます。
from linkcad.edit import MergeTask, FillRule, HolesMode, EdgePolicyfrom linkcad.geom import Resolution
res = Resolution()res.minimum_facets = 32res.maximum_error = 1
task = MergeTask( drawing, res, FillRule.NonZero, HolesMode.Link, EdgePolicy.Merge, dont_explode=False, process_vertically=False,)task.execute()| パラメーター | 型 | 説明 |
|---|---|---|
drawing | Drawing | 対象図面 |
resolution | Resolution | 曲線テッセレーション設定 |
fill_rule | FillRule | ポリゴン内部を判定するためのワインディング規則 |
holes_mode | HolesMode | 出力ポリゴンで穴を表現する方法 |
edge_policy | EdgePolicy | 接触または重複するエッジの処理方法 |
dont_explode | bool | True の場合、複雑な結果ポリゴンを分解しません |
process_vertically | bool | True の場合、セルを下位から上位へ処理します(階層図面用) |
ClosePolylinesTask
端点を接続して、すべての開いたポリラインを閉じます。
from linkcad.edit import ClosePolylinesTask
task = ClosePolylinesTask(drawing)task.execute()JoinPolylinesTask
端点が接触している、または許容差内にあるポリラインを接続します。
from linkcad.edit import JoinPolylinesTask
task = JoinPolylinesTask(drawing)task.execute()PolylineToPolygonTask
閉じたポリラインを塗りつぶしポリゴンへ変換します。
from linkcad.edit import PolylineToPolygonTask
task = PolylineToPolygonTask(drawing)task.execute()ExplodeToPolygonTask
テッセレーションにより、すべての形状(円、円弧、ドーナツ、楕円、NURBS)を通常のポリゴン/ポリラインへ変換します。
from linkcad.edit import ExplodeToPolygonTaskfrom linkcad.geom import Resolution
res = Resolution()res.minimum_facets = 32
task = ExplodeToPolygonTask(drawing, res)task.execute()RemoveZeroWidthPolylinesTask
幅がゼロのすべてのポリラインを削除します。
from linkcad.edit import RemoveZeroWidthPolylinesTask
task = RemoveZeroWidthPolylinesTask(drawing)task.execute()RemoveOverlappingPolylinesTask
同じレイヤー上の他のセグメントと完全に重なるポリラインセグメントを削除します。
from linkcad.edit import RemoveOverlappingPolylinesTask
task = RemoveOverlappingPolylinesTask(drawing)task.execute()FixSelfIntersectingPolygonsTask
自己交差ポリゴンを検出して修復し、有効な自己交差しない部分へ分割します。
from linkcad.edit import FixSelfIntersectingPolygonsTaskfrom linkcad.geom import Resolution
task = FixSelfIntersectingPolygonsTask(drawing, res)task.execute()列挙型
FillRule
マージ中に、ポリゴンの「内側」になる領域を判定するために使用されるワインディング規則です。
| 値 | 説明 |
|---|---|
FillRule.NonZero | 非ゼロワインディング規則(標準的な CAD/EDA の慣例) |
FillRule.EvenOdd | 偶奇(交互塗り)規則 |
HolesMode
マージされたポリゴン内の穴を出力でどのように表現するかを制御します。
| 値 | 説明 |
|---|---|
HolesMode.Extract | 穴を個別のポリゴンとして表現します |
HolesMode.Link | ゼロ幅ブリッジで穴を外側境界に接続します |
HolesMode.Split | 出力に穴が現れないようにポリゴンを分割します |
EdgePolicy
マージ中に一致または接触するエッジをどのように処理するかを制御します。
| 値 | 説明 |
|---|---|
EdgePolicy.Merge | 接触するエッジをマージします |
PolygonSnapMode
頂点をグリッドへスナップする方法を制御します。
| 値 | 説明 |
|---|---|
PolygonSnapMode.Nearest | 各頂点を最も近いグリッド点へスナップします |