linkcad.edit
Tasks zur Geometriebearbeitung. Jeder Task arbeitet auf einer Drawing und wird durch Aufruf von task.execute() ausgeführt. Tasks müssen innerhalb eines WriteLock (eigenständige Skripte) oder einer Transaction (Tool-Plugins) ausgeführt werden.
from linkcad.edit import ( ITask, SnapToGridTask, FlattenTask, RemoveDuplicatesTask, MergeTask, ClosePolylinesTask, JoinPolylinesTask, PolylineToPolygonTask, ExplodeToPolygonTask, RemoveZeroWidthPolylinesTask, RemoveOverlappingPolylinesTask, FixSelfIntersectingPolygonsTask, FillRule, HolesMode, EdgePolicy, PolygonSnapMode,)Basisklasse
ITask
Alle Tasks erweitern ITask.
| Methode | Beschreibung |
|---|---|
task.execute() | Task auf der Zeichnung ausführen |
Tasks
SnapToGridTask
Richtet alle Form-Stützpunkte am nächstgelegenen Rasterpunkt aus.
from linkcad.edit import SnapToGridTask, PolygonSnapModefrom linkcad.geom import Resolution
task = SnapToGridTask(drawing, resolution, grid_x, grid_y, PolygonSnapMode.Nearest)task.execute()| Parameter | Typ | Beschreibung |
|---|---|---|
drawing | Drawing | Zielzeichnung |
resolution | Resolution | Einstellungen für Kurventessellation |
grid_x | int | Rasterabstand in X (Datenbankeinheiten) |
grid_y | int | Rasterabstand in Y (Datenbankeinheiten) |
snap_mode | PolygonSnapMode | Behandlung von Polygon-Stützpunkten |
FlattenTask
Reduziert die Zellenhierarchie — erweitert alle Zellenreferenzen in ihre übergeordneten Zellen.
from linkcad.edit import FlattenTaskfrom linkcad.geom import Resolution
task = FlattenTask(drawing, resolution)task.execute()RemoveDuplicatesTask
Entfernt exakt doppelte Formen aus der Zeichnung.
from linkcad.edit import RemoveDuplicatesTask
task = RemoveDuplicatesTask(drawing)task.execute()MergeTask
Führt überlappende Polygone auf jeder Ebene mit einer booleschen Vereinigungsoperation zusammen. Kreise und andere gekrümmte Formen werden zuerst mit der bereitgestellten Resolution tesseliert.
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()| Parameter | Typ | Beschreibung |
|---|---|---|
drawing | Drawing | Zielzeichnung |
resolution | Resolution | Einstellungen für Kurventessellation |
fill_rule | FillRule | Wicklungsregel zum Bestimmen des Polygoninneren |
holes_mode | HolesMode | Darstellung von Löchern in Ausgabepolygonen |
edge_policy | EdgePolicy | Behandlung berührender/überlappender Kanten |
dont_explode | bool | Wenn True, komplexe Ergebnispolygone nicht zerlegen |
process_vertically | bool | Wenn True, Zellen von unten nach oben verarbeiten (für hierarchische Zeichnungen) |
ClosePolylinesTask
Schließt alle offenen Polylinien, indem ihre Endpunkte verbunden werden.
from linkcad.edit import ClosePolylinesTask
task = ClosePolylinesTask(drawing)task.execute()JoinPolylinesTask
Verbindet Polylinien, deren Endpunkte sich berühren oder innerhalb der Toleranz liegen.
from linkcad.edit import JoinPolylinesTask
task = JoinPolylinesTask(drawing)task.execute()PolylineToPolygonTask
Konvertiert geschlossene Polylinien in gefüllte Polygone.
from linkcad.edit import PolylineToPolygonTask
task = PolylineToPolygonTask(drawing)task.execute()ExplodeToPolygonTask
Konvertiert alle Formen (Kreise, Kreisbögen, Ringe, Ellipsen, NURBS) durch Tessellation in einfache Polygone/Polylinien.
from linkcad.edit import ExplodeToPolygonTaskfrom linkcad.geom import Resolution
res = Resolution()res.minimum_facets = 32
task = ExplodeToPolygonTask(drawing, res)task.execute()RemoveZeroWidthPolylinesTask
Löscht alle Polylinien mit einer Breite von null.
from linkcad.edit import RemoveZeroWidthPolylinesTask
task = RemoveZeroWidthPolylinesTask(drawing)task.execute()RemoveOverlappingPolylinesTask
Entfernt Polyliniensegmente, die andere Segmente auf derselben Ebene exakt überlappen.
from linkcad.edit import RemoveOverlappingPolylinesTask
task = RemoveOverlappingPolylinesTask(drawing)task.execute()FixSelfIntersectingPolygonsTask
Erkennt und repariert selbstschneidende Polygone, indem sie in gültige, nicht selbstschneidende Teile aufgeteilt werden.
from linkcad.edit import FixSelfIntersectingPolygonsTaskfrom linkcad.geom import Resolution
task = FixSelfIntersectingPolygonsTask(drawing, res)task.execute()Enums
FillRule
Wicklungsregel, die beim Zusammenführen bestimmt, welche Bereiche „innerhalb“ eines Polygons liegen.
| Wert | Beschreibung |
|---|---|
FillRule.NonZero | Nicht-Null-Wicklungsregel (Standardkonvention in CAD/EDA) |
FillRule.EvenOdd | Gerade-Ungerade-Regel (alternierende Füllung) |
HolesMode
Steuert, wie Löcher in zusammengeführten Polygonen in der Ausgabe dargestellt werden.
| Wert | Beschreibung |
|---|---|
HolesMode.Extract | Löcher als separate Polygone darstellen |
HolesMode.Link | Löcher mit Brücken der Breite null an die äußere Begrenzung anbinden |
HolesMode.Split | Polygone aufteilen, sodass in der Ausgabe keine Löcher erscheinen |
EdgePolicy
Steuert, wie deckungsgleiche oder sich berührende Kanten beim Zusammenführen behandelt werden.
| Wert | Beschreibung |
|---|---|
EdgePolicy.Merge | Sich berührende Kanten zusammenführen |
PolygonSnapMode
Steuert, wie Stützpunkte am Raster ausgerichtet werden.
| Wert | Beschreibung |
|---|---|
PolygonSnapMode.Nearest | Jeden Stützpunkt am nächstgelegenen Rasterpunkt ausrichten |