### Install Gerbonara Source: https://gerbolyze.gitlab.io/gerbonara/_sources/index.rst.txt Install Gerbonara from PyPI using pip. This command is used for setting up the library. ```shell pip install --user gerbonara ``` -------------------------------- ### Gerbonara CLI Help Source: https://gerbolyze.gitlab.io/gerbonara/cli.html Displays the general usage, options, and available commands for the Gerbonara CLI. Use this to get an overview of its capabilities. ```bash $ gerbonara --help Usage: gerbonara [OPTIONS] COMMAND [ARGS]... The gerbonara CLI allows you to analyze, render, modify and merge both individual Gerber or Excellon files as well as sets of those files Options: --version --help Show this message and exit. Commands: bounding-box Print the bounding box of a gerber file in "[x_min]... layers Read layers from a directory or zip with Gerber files and... merge Merge multiple single Gerber or Excellon files, or... meta Extract layer mapping and print it along with layer... render Render a gerber file, or a directory or zip of gerber... rewrite Parse a single gerber file, apply transformations, and... transform Transform all gerber files in a given directory or zip... ``` -------------------------------- ### Install Gerbonara using pip Source: https://gerbolyze.gitlab.io/gerbonara/index.html Install the gerbonara library from PyPI using pip. This command should be run in your terminal. ```bash pip install --user gerbonara ``` -------------------------------- ### Read and Write Gerber Files Source: https://gerbolyze.gitlab.io/gerbonara/_sources/index.rst.txt Example of reading a Gerber file using LayerStack and printing its board size in millimeters. Requires the 'gerbonara' library to be installed. ```python from gerbonara import LayerStack stack = LayerStack.open('output/gerber') w, h = stack.outline.size('mm') print(f'Board size is {w:.1f} mm x {h:.1f} mm') ``` -------------------------------- ### Invoke Gerbonara CLI Source: https://gerbolyze.gitlab.io/gerbonara/_sources/cli.rst.txt Two methods to invoke Gerbonara's command-line interface. Ensure the installation's 'bin' directory is in your $PATH for the first method. ```bash $ gerbonara ``` ```bash $ python -m gerbonara ``` -------------------------------- ### Read and write Gerber files Source: https://gerbolyze.gitlab.io/gerbonara/index.html Open a Gerber file using LayerStack, get its dimensions in millimeters, and print the board size. Ensure the 'output/gerber' directory exists and contains Gerber files. ```python from gerbonara import LayerStack stack = LayerStack.open('output/gerber') w, h = stack.outline.size('mm') print(f'Board size is {w:.1f} mm x {h:.1f} mm') ``` -------------------------------- ### List Layers Source: https://gerbolyze.gitlab.io/gerbonara/cli.html Prints a layer-by-layer description of the board found under the given path. The path can be a directory or a zip file. ```bash $ gerbonara layers [OPTIONS] PATH ``` -------------------------------- ### Gerbonara CLI help Source: https://gerbolyze.gitlab.io/gerbonara/index.html Access the Gerbonara command-line interface to view help for commands like 'render'. Use 'python -m gerbonara --help' for general commands or 'python -m gerbonara render --help' for specific command details. ```bash $ python -m gerbonara --help [...] $ python -m gerbonara render --help ``` -------------------------------- ### Gerbonara CLI Help Source: https://gerbolyze.gitlab.io/gerbonara/_sources/cli.rst.txt Displays the usage information for the Gerbonara CLI, including available options and commands. ```console $ gerbonara --help ``` -------------------------------- ### Gerbonara Command-Line Help Source: https://gerbolyze.gitlab.io/gerbonara/_sources/index.rst.txt Display help information for the gerbonara command-line interface. Use this to understand available functions and their usage. ```console $ python -m gerbonara --help [...] $ python -m gerbonara render --help ``` -------------------------------- ### gerbonara meta Source: https://gerbolyze.gitlab.io/gerbonara/cli.html Reads a board from a folder or zip, and prints the found layer mapping along with layer metadata as JSON to stdout. This is a machine-readable variant of the `gerbonara render` command. ```APIDOC ## gerbonara meta ### Description Read a board from a folder or zip, and print the found layer mapping along with layer metadata as JSON to stdout. A machine-readable variant of the **gerbonara render** command. All lengths in the JSON are given in millimeter. ### Method CLI Command ### Endpoint `gerbonara meta [OPTIONS] PATH` ### Parameters #### Command-line Options - `--warnings `: Enable or disable file format warnings during parsing (default: on). - `--force-zip`: Force treating input path as zip file (default: guess file type from extension and contents). ``` -------------------------------- ### Netlist Class Source: https://gerbolyze.gitlab.io/gerbonara/_sources/file-api.rst.txt Represents an IPC-356 netlist file. ```APIDOC ## Class: Netlist ### Description Represents an IPC-356 netlist file. ### Inheritance - :py:class:`.CamFile` ### Methods (Members are documented in the source) ``` -------------------------------- ### Extract Metadata Source: https://gerbolyze.gitlab.io/gerbonara/cli.html Reads a board from a folder or zip file and prints the found layer mapping and metadata as JSON to standard output. All lengths in the JSON are in millimeters. ```bash gerbonara meta [OPTIONS] PATH ``` -------------------------------- ### gerbonara layers Source: https://gerbolyze.gitlab.io/gerbonara/cli.html Prints a layer-by-layer description of the board found under the given path. The path can be a directory or zip file. ```APIDOC ## gerbonara layers ### Description Prints a layer-by-layer description of the board found under the given path. The path can be a directory or zip file. ### Method CLI Command ### Endpoint `gerbonara layers [OPTIONS] PATH` ### Parameters #### Command-line Options - `--warnings `: Enable or disable file format warnings during parsing (default: on). - `--force-zip`: Force treating input path as zip file (default: guess file type from extension and contents). ``` -------------------------------- ### Gerbonara Render Command Usage Source: https://gerbolyze.gitlab.io/gerbonara/cli.html Shows the basic syntax for the `gerbonara render` command. This command is used to render Gerber or Excellon files into an SVG format. ```bash $ gerbonara render [OPTIONS] INPATH [OUTFILE] ``` -------------------------------- ### ExcellonFile Class Source: https://gerbolyze.gitlab.io/gerbonara/_sources/file-api.rst.txt Represents an Excellon or XNC file. ```APIDOC ## Class: ExcellonFile ### Description Represents an Excellon or XNC file. ### Inheritance - :py:class:`.CamFile` ### Methods (Members are documented in the source) ``` -------------------------------- ### Calculate Bounding Box Source: https://gerbolyze.gitlab.io/gerbonara/cli.html Prints the bounding box of a Gerber file in `[x_min] [y_min] [x_max] [y_max]` format. Supports overriding input file units and number formats. ```bash gerbonara bounding-box [OPTIONS] INFILE ``` -------------------------------- ### Execute Python Transformation Script Source: https://gerbolyze.gitlab.io/gerbonara/_sources/cli.rst.txt Use this command to transform Gerber files with a Python script. Access functions like translate, scale, rotate, and bounding box variables. Coordinates are in --command-line-units, angles in degrees. ```console gerbonara transform [OPTIONS] TRANSFORM INPATH OUTPATH ``` -------------------------------- ### FileSettings Class Source: https://gerbolyze.gitlab.io/gerbonara/_sources/utilities.rst.txt The FileSettings class stores information about Gerber and Excellon file format options, such as zero suppression and decimal places. It allows overriding default settings when writing Gerber files. ```APIDOC ## Class gerbonara.cam.FileSettings When reading or writing Gerber or Excellon, Gerbonara stores information about file format options such as zero suppression or number of decimal places in a :py:class:`.FileSettings` instance. When you are writing a Gerber file, Gerbonara picks reasonable defaults, but allows you to specify your own :py:class:`.FileSettings` to override these defaults. ``` -------------------------------- ### LayerStack Class Source: https://gerbolyze.gitlab.io/gerbonara/_sources/file-api.rst.txt Represents a bundle of files for a PCB, automatically matching files to layers. ```APIDOC ## Class: LayerStack ### Description Represents a bundle of files (GerberFile or ExcellonFile) for a PCB. Contains logic to automatically recognize CAD tools and match files to their appropriate layers. ### Methods (Members are documented in the source) ``` -------------------------------- ### gerbonara bounding-box Source: https://gerbolyze.gitlab.io/gerbonara/cli.html Prints the bounding box of a Gerber file in `[x_min] [y_min] [x_max] [y_max]` format. The bounding box contains all graphic objects in this file. ```APIDOC ## gerbonara bounding-box ### Description Prints the bounding box of a gerber file in `[x_min] [y_min] [x_max] [y_max]` format. The bounding box contains all graphic objects in this file, so e.g. a 100 mm by 100 mm square drawn with a 1mm width circular aperture will result in an 101 mm by 101 mm bounding box. ### Method CLI Command ### Endpoint `gerbonara bounding-box [OPTIONS] INFILE` ### Parameters #### Command-line Options - `--warnings `: Enable or disable file format warnings during parsing (default: on). - `--units `: Output bounding box in this unit (default: millimeter). - `--input-number-format `: Override number format of input file (mostly useful for Excellon files). - `--input-units `: Override units of input file. - `--input-zero-suppression `: Override zero suppression setting of input file. ``` -------------------------------- ### Render Gerber Files Source: https://gerbolyze.gitlab.io/gerbonara/_sources/cli.rst.txt Renders one or more Gerber or Excellon files into a single SVG file. Supports single files, directories, and ZIP archives. ```console $ gerbonara render [OPTIONS] INPATH [OUTFILE] ``` -------------------------------- ### Gerbonara Render Command Source: https://gerbolyze.gitlab.io/gerbonara/_sources/cli.rst.txt Renders one or more Gerber or Excellon files into a single SVG file. It supports reading individual files, directories, and ZIP archives, applying layer filename matching rules. ```APIDOC ## gerbonara render ### Description Renders one or more Gerber or Excellon files as a single SVG file. It can read single files, directories of files, and ZIP files. To read directories or zips, it applies Gerbonara's layer filename matching rules. ### Method `gerbonara render` ### Endpoint `gerbonara render [OPTIONS] INPATH [OUTFILE]` ### Parameters #### Options - **--warnings** [default|ignore|once] - Enable or disable file format warnings during parsing (default: on). - **-m, --input-map** `` - Extend or override layer name mapping with name map from JSON file. The JSON file must contain a single JSON dict with an arbitrary number of string: string entries. The keys are interpreted as regexes applied to the filenames via re.fullmatch, and each value must either be the string `ignore` to remove this layer from previous automatic guesses, or a Gerbonara layer name such as `top copper`, `inner_2 copper` or `bottom silk`. - **--use-builtin-name-rules / --no-builtin-name-rules** - Disable built-in layer name rules and use only rules given by `--input-map`. - **--force-zip** - Force treating input path as a zip file (default: guess file type from extension and contents). - **--top, --bottom** - Which side of the board to render. - **--command-line-units** `` - Units for values given in other options. Default: millimeter. - **--margin** `` - Add space around the board inside the viewport. - **--force-bounds** `` - Force SVG bounding box to the given value. - **--inkscape, --standard-svg** - Export in Inkscape SVG format with layers and stuff instead of plain SVG. - **--colorscheme** `` - Load colorscheme from given JSON file. The JSON file must contain a single dict with keys `copper`, `silk`, `mask`, `paste`, `drill` and `outline`. Each key must map to a string containing either a normal 6-digit hex color with leading hash sign, or an 8-digit hex color with leading hash sign, where the last two digits set the layer's alpha value (opacity), with `ff` being completely opaque, and `00` being invisibly transparent. ``` -------------------------------- ### Gerbonara Rewrite Command Source: https://gerbolyze.gitlab.io/gerbonara/_sources/cli.rst.txt Parses a single Gerber file, applies transformations, and re-serializes it into a new Gerber file. This command can be used to convert files to different settings or normalize them. ```APIDOC ## gerbonara rewrite ### Description Parse a single gerber file, apply transformations, and re-serialize it into a new gerber file. Without transformations, this command can be used to convert a gerber file to use different settings (e.g. units, precision), but can also be used to "normalize" gerber files in a weird format into a more standards-compatible one as Gerbonara's gerber parser is significantly more robust for weird inputs than others. ### Method `gerbonara rewrite` ### Endpoint `gerbonara rewrite [OPTIONS] INFILE OUTFILE` ### Parameters #### Options - **--warnings** - Enable or disable file format warnings during parsing (default: on). - **-t, --transform** `` - Apply a transformation to the Gerber file. ``` -------------------------------- ### CamFile Base Class Source: https://gerbolyze.gitlab.io/gerbonara/_sources/file-api.rst.txt The common base class for all layer types in Gerbonara. ```APIDOC ## Class: CamFile ### Description Common base class for all layer types. ### Methods (Members are documented in the source) ### See Also - :py:class:`.GerberFile` - :py:class:`.ExcellonFile` - :py:class:`.Netlist` ``` -------------------------------- ### Rewrite Gerber File Source: https://gerbolyze.gitlab.io/gerbonara/_sources/cli.rst.txt Parses a single Gerber file, applies transformations, and re-serializes it to a new file. Useful for converting formats or normalizing files. ```console gerbonara rewrite [OPTIONS] INFILE OUTFILE ``` -------------------------------- ### Arc Source: https://gerbolyze.gitlab.io/gerbonara/_sources/graphic-primitive-api.rst.txt Represents an arc primitive. ```APIDOC ## Arc ### Description Represents an arc primitive. ### Attributes - **polarity_dark** (bool) - Indicates the polarity of the graphic object. ``` -------------------------------- ### Line Source: https://gerbolyze.gitlab.io/gerbonara/_sources/graphic-primitive-api.rst.txt Represents a stroked line primitive. ```APIDOC ## Line ### Description Represents a stroked line primitive. ### Attributes - **polarity_dark** (bool) - Indicates the polarity of the graphic object. ``` -------------------------------- ### GerberFile Class Source: https://gerbolyze.gitlab.io/gerbonara/_sources/file-api.rst.txt Represents an RS-274-X Gerber file. ```APIDOC ## Class: GerberFile ### Description Represents an RS-274-X Gerber file as specified by Ucamco. ### Inheritance - :py:class:`.CamFile` ### Methods (Members are documented in the source) ``` -------------------------------- ### Rectangle Source: https://gerbolyze.gitlab.io/gerbonara/_sources/graphic-primitive-api.rst.txt Represents a filled rectangle primitive. ```APIDOC ## Rectangle ### Description Represents a filled rectangle primitive. ### Attributes - **polarity_dark** (bool) - Indicates the polarity of the graphic object. ``` -------------------------------- ### Circle Source: https://gerbolyze.gitlab.io/gerbonara/_sources/graphic-primitive-api.rst.txt Represents a filled circle primitive. ```APIDOC ## Circle ### Description Represents a filled circle primitive. ### Attributes - **polarity_dark** (bool) - Indicates the polarity of the graphic object. ``` -------------------------------- ### Aperture Macro Instance Class Source: https://gerbolyze.gitlab.io/gerbonara/_sources/apertures.rst.txt Represents an instance of an aperture macro, used for rotated standard apertures. ```APIDOC ## Class: gerbonara.apertures.ApertureMacroInstance ### Description Represents an instance of an aperture macro, used for rotated standard apertures. ### Members (Details of members would be listed here if available in the source) ``` -------------------------------- ### Aperture Class Source: https://gerbolyze.gitlab.io/gerbonara/_sources/apertures.rst.txt The base class for all aperture types in Gerbonara. ```APIDOC ## Class: gerbonara.apertures.Aperture ### Description Base class for all aperture types. ### Members (Details of members would be listed here if available in the source) ``` -------------------------------- ### Merge Gerber/Excellon Files Source: https://gerbolyze.gitlab.io/gerbonara/cli.html Merges multiple single Gerber or Excellon files, or stacks of Gerber files, into one. When used with a single input, it normalizes the file. Options allow for custom units, offsets, rotations, input mapping, and output naming schemes. ```bash gerbonara merge [OPTIONS] [INPATH]... OUTPATH ``` -------------------------------- ### Line Object Source: https://gerbolyze.gitlab.io/gerbonara/_sources/object-api.rst.txt Represents a line segment in a Gerber file. ```APIDOC ## Line ### Description Represents a line graphic object. ### Inheritance - GraphicObject ### Methods (Members are documented via autoclass directive in the source) ``` -------------------------------- ### Region Object Source: https://gerbolyze.gitlab.io/gerbonara/_sources/object-api.rst.txt Represents a region or polygon in a Gerber file. ```APIDOC ## Region ### Description Represents a region graphic object. ### Inheritance - GraphicObject ### Methods (Members are documented via autoclass directive in the source) ``` -------------------------------- ### Arc Object Source: https://gerbolyze.gitlab.io/gerbonara/_sources/object-api.rst.txt Represents an arc segment in a Gerber file. ```APIDOC ## Arc ### Description Represents an arc graphic object. ### Inheritance - GraphicObject ### Methods (Members are documented via autoclass directive in the source) ``` -------------------------------- ### Merge Gerber and Excellon Files Source: https://gerbolyze.gitlab.io/gerbonara/_sources/cli.rst.txt Merge multiple Gerber or Excellon files into one. When used with a single input, this command normalizes the input to a well-supported Gerber subset. ```console $ gerbonara merge [OPTIONS] [INPATH]... OUTPATH ``` -------------------------------- ### ArcPoly Source: https://gerbolyze.gitlab.io/gerbonara/_sources/graphic-primitive-api.rst.txt Represents a filled arc polygon primitive. ```APIDOC ## ArcPoly ### Description Represents a filled arc polygon primitive. ### Attributes - **polarity_dark** (bool) - Indicates the polarity of the graphic object. ``` -------------------------------- ### Modify Solder Mask with Gerbonara Source: https://gerbolyze.gitlab.io/gerbonara/_sources/examples.rst.txt This script modifies solder mask layers in a KiCad-exported board file. It removes solder mask everywhere except for a thin ring around pads. The script assumes the solder mask layer is 'negative' and works with regions and arcs, converting them to shapely objects for offsetting. ```python from gerbonara import * from shapely import * stack = layers.LayerStack.open('gerber') # Let's work in mm here. Gerbonara will take care to convert units when the file is in US customary units. (x1, y1), (x2, y2) = stack.bounding_box(unit=utils.MM) for l in [stack['bottom mask'], stack['top mask']]: # The solder mask gerber layer by convention is "negative". That is, a "dark" polarity (drawn) Gerber primitive # will result in an opening in the solder mask. Conversely, an empty gerber file would lead to the entire board # being covered in solder mask. # # Here, we add a rectangle covering the entire board so the entire board is *free* of solder mask. new = [graphic_objects.Region( [(x1, y1), (x1, y2), (x2, y2), (x2, y1), (x1, y1)], unit=utils.MM, polarity_dark=True)] # Iterate through all objects on the solder mask layer. In later KiCad versions, everything on the solder mask # layer is exported as a Gerber region, which is a really bad idea, but makes things easy for us here. for obj in l.objects: if isinstance(obj, gerbonara.graphic_objects.Region): regions = [] else: regions = [gerbonara.graphic_objects.Region.from_arc_poly(prim.to_arc_poly()) for prim in obj.to_primitives(unit=gerbonara.utils.MM)] for obj in regions: # Convert the region to a shapely line string ls = LineString(obj.outline).normalize() # Ask shapely to offset the line string by 1 mm out = ls.offset_curve(obj.unit(1, 'mm')) # For negative offsets, this operation can result in an object being split up into multiple parts, so we # might get back a MultiLineString instead of a LineString. for ls in (out.geoms if hasattr(out, 'geoms') else [out]): # Convert the resulting shapely object back to a Gerber region. new.append(graphic_objects.Region( unit=obj.unit, polarity_dark=not obj.polarity_dark, outline=list(ls.coords))) # Append the new objects to the original layer data l.objects = new + l.objects # Write the modified layer stack to a new Gerber directory stack.save_to_directory('output-gerbers') ``` -------------------------------- ### Flash Object Source: https://gerbolyze.gitlab.io/gerbonara/_sources/object-api.rst.txt Represents a flash operation in a Gerber file, typically a circular or rectangular aperture. ```APIDOC ## Flash ### Description Represents a flash graphic object. ### Inheritance - GraphicObject ### Methods (Members are documented via autoclass directive in the source) ``` -------------------------------- ### LengthUnit Class Source: https://gerbolyze.gitlab.io/gerbonara/_sources/utilities.rst.txt The LengthUnit class is used to track and convert physical length units. It automatically handles 'mm' and 'inch' strings. ```APIDOC ## Class gerbonara.utils.LengthUnit Gerbonara tracks length units using the :py:class:`.LengthUnit` class. :py:class:`.LengthUnit` contains a number of convenient conversion functions. Everywhere where Gerbonara accepts units as a method argument, it automatically converts a string ``'mm'`` or ``'inch'`` to the corresponding :py:class:`.LengthUnit`. ``` -------------------------------- ### GraphicPrimitive Source: https://gerbolyze.gitlab.io/gerbonara/_sources/graphic-primitive-api.rst.txt The base class for all graphic primitives. All graphic primitives have a polarity_dark attribute. ```APIDOC ## GraphicPrimitive ### Description The base class for all graphic primitives. All graphic primitives have a polarity_dark attribute. ### Attributes - **polarity_dark** (bool) - Indicates the polarity of the graphic object. ``` -------------------------------- ### GraphicObject Base Class Source: https://gerbolyze.gitlab.io/gerbonara/_sources/object-api.rst.txt The base class for all graphic objects in Gerbonara. It defines common attributes and methods. ```APIDOC ## GraphicObject ### Description Base class for all graphic objects. ### Methods (Members are documented via autoclass directive in the source) ``` -------------------------------- ### gerbonara merge Source: https://gerbolyze.gitlab.io/gerbonara/cli.html Merges multiple single Gerber or Excellon files, or multiple stacks of Gerber files, into one. When used with only one input, it normalizes the input. It can also rename files to a standardized naming convention when an output naming scheme is provided. ```APIDOC ## gerbonara merge ### Description Merges multiple single Gerber or Excellon files, or multiple stacks of Gerber files, into one. When used with only one input, this command normalizes the input, converting all files to a well-defined, widely supported Gerber subset with sane settings. When a `--output-naming-scheme` is given, it additionally renames all files to a standardized naming convention. ### Method CLI Command ### Endpoint `gerbonara merge [OPTIONS] [INPATH]... OUTPATH` ### Parameters #### Command-line Options - `--command-line-units `: Units for values given in `--transform`. Default: millimeter. - `--warnings `: Enable or disable file format warnings during parsing (default: on). - `--offset `: Offset for the n’th file as a `x,y` string in unit given by `--command-line-units`. Can be given multiple times, and the first option affects the first input, the second option affects the second input, and so on. - `--rotation `: Rotation for the n’th file in degrees clockwise, optionally followed by comma-separated rotation center X and Y coordinates. Can be given multiple times, and the first option affects the first input, the second option affects the second input, and so on. - `-m, --input-map `: Extend or override layer name mapping with name map from JSON file. This option can be given multiple times, in which case the n’th option affects only the n’th input. The JSON file must contain a single JSON dict with an arbitrary number of string: string entries. The keys are interpreted as regexes applied to the filenames via re.fullmatch, and each value must either be the string “ignore” to remove this layer from previous automatic guesses, or a gerbonara layer name such as `top copper`, `inner_2 copper` or `bottom silk`. - `--default-settings, --reuse-input-settings`: Use sensible defaults for the output file format settings (default) or use the same export settings as the input file instead of sensible defaults. - `--output-naming-scheme `: Name output files according to the selected naming scheme instead of keeping the old file names of the first input. - `--output-board-name `: Override board name used with `--output-naming-scheme`. - `--use-builtin-name-rules, --no-builtin-name-rules`: Disable built-in layer name rules and use only rules given by –input-map. ``` -------------------------------- ### Obround Aperture Class Source: https://gerbolyze.gitlab.io/gerbonara/_sources/apertures.rst.txt Represents an obround (pill-shaped) aperture, supporting a central hole diameter and rotation. ```APIDOC ## Class: gerbonara.apertures.ObroundAperture ### Description Represents an obround aperture. ### Members - **hole_dia** (float) - The diameter of the central hole. - **rotation** (float) - The rotation angle for the aperture (non-standard). ``` -------------------------------- ### Circle Aperture Class Source: https://gerbolyze.gitlab.io/gerbonara/_sources/apertures.rst.txt Represents a circular aperture, supporting a central hole diameter. ```APIDOC ## Class: gerbonara.apertures.CircleAperture ### Description Represents a circular aperture. ### Members - **hole_dia** (float) - The diameter of the central hole. ``` -------------------------------- ### Polygon Aperture Class Source: https://gerbolyze.gitlab.io/gerbonara/_sources/apertures.rst.txt Represents a polygonal aperture, supporting a central hole diameter and rotation. ```APIDOC ## Class: gerbonara.apertures.PolygonAperture ### Description Represents a polygonal aperture. ### Members - **hole_dia** (float) - The diameter of the central hole. - **rotation** (float) - The rotation angle for the aperture. ``` -------------------------------- ### Rectangle Aperture Class Source: https://gerbolyze.gitlab.io/gerbonara/_sources/apertures.rst.txt Represents a rectangular aperture, supporting a central hole diameter and rotation. ```APIDOC ## Class: gerbonara.apertures.RectangleAperture ### Description Represents a rectangular aperture. ### Members - **hole_dia** (float) - The diameter of the central hole. - **rotation** (float) - The rotation angle for the aperture (non-standard). ``` === COMPLETE CONTENT === This response contains all available snippets from this library. No additional content exists. Do not make further requests.