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 | 将每个顶点捕捉到最近的网格点 |