kigadgets.zone ============== .. py:module:: kigadgets.zone .. autoapi-nested-parse:: Zone (copper pour and keepout) handling for KiCad PCB objects. This module provides classes for representing copper zones and keepout areas, which are used for copper pouring and design rule enforcement. Key features: - Copper pour zones with customizable clearance and priority - Keepout areas for restricting component placement - Multi-layer zone support with complex polygon shapes - Filled polygon extraction and area calculations Classes ------- .. autoapisummary:: kigadgets.zone.RuleArea kigadgets.zone.Zone kigadgets.zone.Keepout Module Contents --------------- .. py:class:: RuleArea(coords: List[kigadgets.units.CoordinateLike], name: str = '', layers: Optional[List[str]] = None, board: Optional[Board] = None) Bases: :py:obj:`kigadgets.item.Selectable`, :py:obj:`kigadgets.item.BoardItem` .. autoapi-inheritance-diagram:: kigadgets.zone.RuleArea :parts: 1 .. py:property:: name :type: str .. py:property:: layers :type: List[str] .. py:method:: wrap(instance: Any) -> Union[Zone, Keepout] :classmethod: .. py:property:: layerset :type: kigadgets.layer.LayerSet Zones can have multiple layers Changing this layerset will not propagate back to this zone until you set layerset again. Common pattern:: zone.layerset = zone.layerset.add_layer('F.Cu') .. py:property:: layer :type: None .. py:method:: from_polygon(poly: kigadgets.drawing.Polygon, **zkws: Any) -> RuleArea :classmethod: .. py:method:: to_polygon(layer: str = 'Margin') -> kigadgets.drawing.Polygon .. py:property:: is_keepout :type: bool .. py:class:: Zone(coords: List[kigadgets.units.CoordinateLike], name: str = '', layers: Optional[List[str]] = None, board: Optional[Board] = None) Bases: :py:obj:`RuleArea`, :py:obj:`kigadgets.item.HasConnection` .. autoapi-inheritance-diagram:: kigadgets.zone.Zone :parts: 1 .. py:property:: clearance :type: float .. py:property:: priority :type: int .. py:property:: min_width :type: float .. py:property:: filled_area :type: float The area of all poured polygons, not the zone outline polygon Returns in units of square mm .. py:method:: get_fill_polygons() -> List[kigadgets.drawing.Polygon] Returns polygons on all layers. The Polygons have corresponding layers .. py:method:: geohash() -> int .. py:property:: name :type: str .. py:property:: layers :type: List[str] .. py:method:: wrap(instance: Any) -> Union[Zone, Keepout] :classmethod: .. py:property:: layerset :type: kigadgets.layer.LayerSet Zones can have multiple layers Changing this layerset will not propagate back to this zone until you set layerset again. Common pattern:: zone.layerset = zone.layerset.add_layer('F.Cu') .. py:property:: layer :type: None .. py:method:: from_polygon(poly: kigadgets.drawing.Polygon, **zkws: Any) -> RuleArea :classmethod: .. py:method:: to_polygon(layer: str = 'Margin') -> kigadgets.drawing.Polygon .. py:property:: is_keepout :type: bool .. py:class:: Keepout(coords: List[kigadgets.units.CoordinateLike], name: str = '', layers: Optional[List[str]] = None, board: Optional[Board] = None) Bases: :py:obj:`RuleArea` .. autoapi-inheritance-diagram:: kigadgets.zone.Keepout :parts: 1 .. py:property:: allow :type: _KeepoutAllowance .. py:method:: geohash() -> int .. py:property:: name :type: str .. py:property:: layers :type: List[str] .. py:method:: wrap(instance: Any) -> Union[Zone, Keepout] :classmethod: .. py:property:: layerset :type: kigadgets.layer.LayerSet Zones can have multiple layers Changing this layerset will not propagate back to this zone until you set layerset again. Common pattern:: zone.layerset = zone.layerset.add_layer('F.Cu') .. py:property:: layer :type: None .. py:method:: from_polygon(poly: kigadgets.drawing.Polygon, **zkws: Any) -> RuleArea :classmethod: .. py:method:: to_polygon(layer: str = 'Margin') -> kigadgets.drawing.Polygon .. py:property:: is_keepout :type: bool