跳转到内容

linkcad.edit

几何操作任务。每个任务针对一个 Drawing 构造(FlattenTask 则针对一个 Cell),通过调用 task.execute() 运行。任务必须在 WriteLock(独立脚本)或 Transaction(工具插件)内运行。

from linkcad.v1.edit import (
ITask,
SnapToGridTask,
FlattenTask,
RemoveDuplicatesTask,
MergeTask,
ClosePolylinesTask,
JoinPolylinesTask,
PolylineToPolygonTask,
ExplodeToPolygonTask,
RemoveZeroWidthPolylinesTask,
RemoveOverlappingPolylinesTask,
FixSelfIntersectingPolygonsTask,
FillRule,
HolesMode,
EdgePolicy,
PolygonSnapMode,
ShapesToConvert,
CellFilter,
LayerFilter,
ShapeFilter,
)

基类

ITask

所有任务都继承 ITask

属性 / 方法说明
task.execute()运行任务。失败时可能抛出异常
task.cancel()取消正在运行的任务
task.progress进度百分比(0-100)
task.cell_filter任务处理哪些单元;可赋值
task.layer_filter任务包含哪些图层;可赋值
task.shape_filter任务包含哪些形状;可赋值
from linkcad.v1.edit import CellFilter, RemoveDuplicatesTask, ShapeFilter
task = RemoveDuplicatesTask(drawing)
task.cell_filter = CellFilter.EnabledCells
task.shape_filter = ShapeFilter.SelectedShapes
task.execute()

任务

SnapToGridTask

把形状顶点对齐到最近的网格点。

from linkcad.v1.db import Transaction
from linkcad.v1.edit import PolygonSnapMode, SnapToGridTask
with Transaction(drawing, "Snap to grid"):
SnapToGridTask(drawing, 100, PolygonSnapMode.AllAngle).execute()
参数类型默认值说明
drawingDrawing必填目标图纸
gridint必填以数据库单位表示的网格间距
snap_modePolygonSnapModeAllAngle是否强制曼哈顿几何

FlattenTask

展平某个单元之下的单元层次结构——把所有单元引用展开到该单元中。注意它接受的是起始单元,而不是图纸。

from linkcad.v1.edit import FlattenTask
FlattenTask(drawing.main_cell).execute()
参数类型说明
start_cellCell要展开其引用的单元

RemoveDuplicatesTask

删除几何完全相同的多边形和折线。

from linkcad.v1.edit import RemoveDuplicatesTask
RemoveDuplicatesTask(drawing).execute()

MergeTask

用布尔并集合并每个图层上重叠的多边形。曲线形状会先按给定的 Resolution 细分。

from linkcad.v1.edit import EdgePolicy, FillRule, HolesMode, MergeTask
from linkcad.v1.geom import Resolution
res = Resolution()
res.minimum_facets = 32
res.maximum_error = 1
task = MergeTask(
drawing,
res,
FillRule.NonZero,
HolesMode.Link,
EdgePolicy.Merge,
dont_explode=False,
process_vertically=False,
)
task.execute()
参数类型默认值说明
drawingDrawing必填目标图纸
resolutionResolution必填曲线细分设置
fill_ruleFillRule必填判定多边形内部的环绕规则
holes_modeHolesMode必填输出多边形中孔的表示方式
edge_policyEdgePolicy必填内部边界的处理方式
dont_explodeboolFalseTrue 时不分解复杂的结果多边形
process_verticallyboolFalseTrue 时自底向上处理单元(适用于层次化图纸)

ClosePolylinesTask

连接首尾顶点以闭合开放折线。

from linkcad.v1.edit import ClosePolylinesTask
ClosePolylinesTask(drawing).execute()

JoinPolylinesTask

连接端点在容差范围内相接的折线。

from linkcad.v1.edit import JoinPolylinesTask
task = JoinPolylinesTask(drawing, wire_end_tolerance=10, width_tolerance=1)
task.execute()
print(task.unique_object_count, task.total_object_count)
参数类型说明
drawingDrawing目标图纸
wire_end_toleranceint以数据库单位表示的最大端点间隙
width_toleranceint被连接折线之间的最大宽度差

PolylineToPolygonTask

把闭合折线转换为填充多边形。

from linkcad.v1.edit import PolylineToPolygonTask
from linkcad.v1.geom import Resolution
PolylineToPolygonTask(drawing, tolerance=0, resolution=Resolution()).execute()
参数类型说明
drawingDrawing目标图纸
toleranceint仍视为闭合的端点间隙
resolutionResolution曲线细分设置

ExplodeToPolygonTask

通过细分把复杂形状转换为普通多边形和折线。

from linkcad.v1.edit import ExplodeToPolygonTask, FillRule, HolesMode, ShapesToConvert
from linkcad.v1.geom import Resolution
res = Resolution()
res.minimum_facets = 32
task = ExplodeToPolygonTask(
drawing, res, FillRule.NonZero, HolesMode.Link, ShapesToConvert.All
)
task.execute()
print(task.unique_object_count, task.total_object_count)
参数类型说明
drawingDrawing目标图纸
resolutionResolution曲线细分设置
fill_ruleFillRule环绕规则
holes_modeHolesMode孔的表示方式
shapes_to_convertShapesToConvert要分解的形状类型

unique_object_counttotal_object_count 是属性,并且只定义在真正会计数的两个任务上:ExplodeToPolygonTaskJoinPolylinesTask

RemoveZeroWidthPolylinesTask

删除所有宽度为零的折线。

from linkcad.v1.edit import RemoveZeroWidthPolylinesTask
RemoveZeroWidthPolylinesTask(drawing).execute()

RemoveOverlappingPolylinesTask

删除与同一图层上其他线段重叠的折线段。

from linkcad.v1.edit import RemoveOverlappingPolylinesTask
RemoveOverlappingPolylinesTask(drawing).execute()

FixSelfIntersectingPolygonsTask

把自相交多边形拆分为简单多边形。

from linkcad.v1.edit import FillRule, FixSelfIntersectingPolygonsTask, HolesMode
FixSelfIntersectingPolygonsTask(drawing, FillRule.NonZero, HolesMode.Link).execute()
参数类型说明
drawingDrawing目标图纸
fill_ruleFillRule环绕规则
holes_modeHolesMode孔的表示方式

枚举

FillRule

用于判定多边形“内部”区域的环绕规则。从 linkcad.v1.db 重新导出。

说明
FillRule.NonZero非零环绕规则(CAD/EDA 的标准约定)
FillRule.EvenOdd奇偶(交替填充)规则

HolesMode

控制结果多边形中孔的表示方式。从 linkcad.v1.plugin 重新导出。

说明
HolesMode.Link用零宽桥接把孔连到外轮廓
HolesMode.Split拆分多边形,使输出中不出现孔
HolesMode.Extract把孔作为独立多边形返回
HolesMode.Keep保持孔原样

EdgePolicy

控制合并时内部边界的处理方式。

说明
EdgePolicy.Keep保留原有内部边界
EdgePolicy.Merge合并内部边界

PolygonSnapMode

控制对齐之后顶点可以取的角度。

说明
PolygonSnapMode.AllAngle允许任意角度
PolygonSnapMode.ForceManhattan强制曼哈顿几何(正交)

ShapesToConvert

选择 ExplodeToPolygonTask 转换哪些形状类型。取值可以组合。

说明
ShapesToConvert.None不转换任何内容
ShapesToConvert.All所有可转换的形状类型
ShapesToConvert.Polylines折线
ShapesToConvert.Text文本
ShapesToConvert.Circles圆和椭圆
ShapesToConvert.Arcs圆弧
ShapesToConvert.Donuts圆环
ShapesToConvert.NurbsNURBS 曲线
ShapesToConvert.ZeroWidthClosedPolylines零宽度的闭合折线

None 是 Python 关键字,因此该成员只能通过 getattr(ShapesToConvert, "None") 访问。