跳转到内容

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, PolygonSnapMode
from linkcad.geom import Resolution
task = SnapToGridTask(drawing, resolution, grid_x, grid_y, PolygonSnapMode.Nearest)
task.execute()
参数类型说明
drawingDrawing目标图纸
resolutionResolution曲线细分设置
grid_xintX 方向网格间距(数据库单位)
grid_yintY 方向网格间距(数据库单位)
snap_modePolygonSnapMode如何处理多边形顶点

FlattenTask

展平单元层次结构——将所有单元引用展开到其父单元中。

from linkcad.edit import FlattenTask
from 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, EdgePolicy
from linkcad.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_explodebool如果为 True,不分解复杂结果多边形
process_verticallybool如果为 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 ExplodeToPolygonTask
from 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 FixSelfIntersectingPolygonsTask
from 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将每个顶点捕捉到最近的网格点