linkcad.edit
Tasks zur Geometriebearbeitung. Jeder Task wird gegen eine Drawing erzeugt (bzw. bei FlattenTask gegen eine Cell) und mit task.execute() ausgeführt. Tasks müssen innerhalb eines WriteLock (eigenständige Skripte) oder einer Transaction (Tool-Plugins) laufen.
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,)Basisklasse
ITask
Alle Tasks erweitern ITask.
| Eigenschaft / Methode | Beschreibung |
|---|---|
task.execute() | Den Task ausführen. Kann bei Fehlschlag eine Ausnahme auslösen |
task.cancel() | Einen laufenden Task abbrechen |
task.progress | Fortschritt in Prozent (0-100) |
task.cell_filter | Welche Zellen der Task bearbeitet; zuweisbar |
task.layer_filter | Welche Ebenen der Task einbezieht; zuweisbar |
task.shape_filter | Welche Formen der Task einbezieht; zuweisbar |
from linkcad.v1.edit import CellFilter, RemoveDuplicatesTask, ShapeFilter
task = RemoveDuplicatesTask(drawing)task.cell_filter = CellFilter.EnabledCellstask.shape_filter = ShapeFilter.SelectedShapestask.execute()Tasks
SnapToGridTask
Richtet Stützpunkte von Formen am nächstgelegenen Rasterpunkt aus.
from linkcad.v1.db import Transactionfrom linkcad.v1.edit import PolygonSnapMode, SnapToGridTask
with Transaction(drawing, "Snap to grid"): SnapToGridTask(drawing, 100, PolygonSnapMode.AllAngle).execute()| Parameter | Typ | Standard | Beschreibung |
|---|---|---|---|
drawing | Drawing | erforderlich | Zielzeichnung |
grid | int | erforderlich | Rasterabstand in Datenbankeinheiten |
snap_mode | PolygonSnapMode | AllAngle | Ob Manhattan-Geometrie erzwungen wird |
FlattenTask
Reduziert die Zellenhierarchie unterhalb einer Zelle — expandiert alle Zellenreferenzen in diese Zelle. Beachten Sie: der Task nimmt die Startzelle, nicht die Zeichnung.
from linkcad.v1.edit import FlattenTask
FlattenTask(drawing.main_cell).execute()| Parameter | Typ | Beschreibung |
|---|---|---|
start_cell | Cell | Zelle, deren Referenzen expandiert werden |
RemoveDuplicatesTask
Entfernt Polygone und Polylinien mit identischer Geometrie.
from linkcad.v1.edit import RemoveDuplicatesTask
RemoveDuplicatesTask(drawing).execute()MergeTask
Führt überlappende Polygone auf jeder Ebene per boolescher Vereinigung zusammen. Gekrümmte Formen werden zuvor mit der übergebenen Resolution tesseliert.
from linkcad.v1.edit import EdgePolicy, FillRule, HolesMode, MergeTaskfrom linkcad.v1.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 | Standard | Beschreibung |
|---|---|---|---|
drawing | Drawing | erforderlich | Zielzeichnung |
resolution | Resolution | erforderlich | Einstellungen zur Kurventesselierung |
fill_rule | FillRule | erforderlich | Winding-Regel zur Bestimmung des Polygoninneren |
holes_mode | HolesMode | erforderlich | Wie Löcher in den Ausgabepolygonen dargestellt werden |
edge_policy | EdgePolicy | erforderlich | Wie innere Konturen behandelt werden |
dont_explode | bool | False | Bei True komplexe Ergebnispolygone nicht zerlegen |
process_vertically | bool | False | Bei True Zellen von unten nach oben verarbeiten (bei hierarchischen Zeichnungen) |
ClosePolylinesTask
Schließt offene Polylinien, indem erster und letzter Stützpunkt verbunden werden.
from linkcad.v1.edit import ClosePolylinesTask
ClosePolylinesTask(drawing).execute()JoinPolylinesTask
Verbindet Polylinien, deren Endpunkte sich innerhalb einer Toleranz berühren.
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)| Parameter | Typ | Beschreibung |
|---|---|---|
drawing | Drawing | Zielzeichnung |
wire_end_tolerance | int | Maximaler Endpunktabstand in Datenbankeinheiten |
width_tolerance | int | Maximaler Breitenunterschied zwischen verbundenen Polylinien |
PolylineToPolygonTask
Wandelt geschlossene Polylinien in gefüllte Polygone um.
from linkcad.v1.edit import PolylineToPolygonTaskfrom linkcad.v1.geom import Resolution
PolylineToPolygonTask(drawing, tolerance=0, resolution=Resolution()).execute()| Parameter | Typ | Beschreibung |
|---|---|---|
drawing | Drawing | Zielzeichnung |
tolerance | int | Endpunktabstand, der noch als geschlossen gilt |
resolution | Resolution | Einstellungen zur Kurventesselierung |
ExplodeToPolygonTask
Wandelt komplexe Formen durch Tesselierung in einfache Polygone und Polylinien um.
from linkcad.v1.edit import ExplodeToPolygonTask, FillRule, HolesMode, ShapesToConvertfrom 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)| Parameter | Typ | Beschreibung |
|---|---|---|
drawing | Drawing | Zielzeichnung |
resolution | Resolution | Einstellungen zur Kurventesselierung |
fill_rule | FillRule | Winding-Regel |
holes_mode | HolesMode | Wie Löcher dargestellt werden |
shapes_to_convert | ShapesToConvert | Welche Formtypen aufgelöst werden |
unique_object_count und total_object_count sind Eigenschaften und nur auf den beiden Tasks definiert, die überhaupt zählen: ExplodeToPolygonTask und JoinPolylinesTask.
RemoveZeroWidthPolylinesTask
Löscht alle Polylinien mit der Breite null.
from linkcad.v1.edit import RemoveZeroWidthPolylinesTask
RemoveZeroWidthPolylinesTask(drawing).execute()RemoveOverlappingPolylinesTask
Entfernt Polyliniensegmente, die andere Segmente derselben Ebene überlagern.
from linkcad.v1.edit import RemoveOverlappingPolylinesTask
RemoveOverlappingPolylinesTask(drawing).execute()FixSelfIntersectingPolygonsTask
Zerlegt selbstschneidende Polygone in einfache Polygone.
from linkcad.v1.edit import FillRule, FixSelfIntersectingPolygonsTask, HolesMode
FixSelfIntersectingPolygonsTask(drawing, FillRule.NonZero, HolesMode.Link).execute()| Parameter | Typ | Beschreibung |
|---|---|---|
drawing | Drawing | Zielzeichnung |
fill_rule | FillRule | Winding-Regel |
holes_mode | HolesMode | Wie Löcher dargestellt werden |
Enums
FillRule
Winding-Regel zur Bestimmung, welche Bereiche „innerhalb“ eines Polygons liegen. Re-Export aus linkcad.v1.db.
| Wert | Beschreibung |
|---|---|
FillRule.NonZero | Non-Zero-Winding-Regel (übliche CAD-/EDA-Konvention) |
FillRule.EvenOdd | Even-Odd-Regel (abwechselnde Füllung) |
HolesMode
Bestimmt, wie Löcher in den Ergebnispolygonen dargestellt werden. Re-Export aus linkcad.v1.plugin.
| Wert | Beschreibung |
|---|---|
HolesMode.Link | Löcher mit der Außenkontur über Brücken der Breite null verbinden |
HolesMode.Split | Polygone so teilen, dass in der Ausgabe keine Löcher erscheinen |
HolesMode.Extract | Löcher als separate Polygone zurückgeben |
HolesMode.Keep | Löcher unverändert beibehalten |
EdgePolicy
Bestimmt, wie innere Konturen beim Zusammenführen behandelt werden.
| Wert | Beschreibung |
|---|---|
EdgePolicy.Keep | Ursprüngliche innere Konturen behalten |
EdgePolicy.Merge | Innere Konturen zusammenführen |
PolygonSnapMode
Bestimmt, welche Winkel Stützpunkte nach dem Ausrichten annehmen dürfen.
| Wert | Beschreibung |
|---|---|
PolygonSnapMode.AllAngle | Alle Winkel erlauben |
PolygonSnapMode.ForceManhattan | Manhattan-Geometrie (orthogonal) erzwingen |
ShapesToConvert
Wählt aus, welche Formtypen ExplodeToPolygonTask umwandelt. Die Werte lassen sich kombinieren.
| Wert | Beschreibung |
|---|---|
ShapesToConvert.None | Nichts |
ShapesToConvert.All | Jeden umwandelbaren Formtyp |
ShapesToConvert.Polylines | Polylinien |
ShapesToConvert.Text | Text |
ShapesToConvert.Circles | Kreise und Ellipsen |
ShapesToConvert.Arcs | Kreisbögen |
ShapesToConvert.Donuts | Ringe |
ShapesToConvert.Nurbs | NURBS-Kurven |
ShapesToConvert.ZeroWidthClosedPolylines | Geschlossene Polylinien der Breite null |
None ist ein Python-Schlüsselwort, dieses Mitglied ist daher nur als getattr(ShapesToConvert, "None") erreichbar.