diff --git a/generate_capacitor_radial_tht.py b/generate_capacitor_radial_tht.py index d5f64f3..4759bb8 100644 --- a/generate_capacitor_radial_tht.py +++ b/generate_capacitor_radial_tht.py @@ -1,10 +1,11 @@ """ Generate THT polarized radial electrolytic capacitors (CAPPRD). """ +import sys from os import path from uuid import uuid4 -from typing import Optional +from typing import Any, Optional from common import format_ipc_dimension, init_cache, now, save_cache from entities.common import ( @@ -14,9 +15,9 @@ from entities.component import SignalUUID from entities.device import ComponentPad, ComponentUUID, Device, PackageUUID from entities.package import ( - AssemblyType, AutoRotate, ComponentSide, CopperClearance, DrillDiameter, Footprint, FootprintPad, LetterSpacing, - LineSpacing, Mirror, Package, PackagePad, PackagePadUuid, PadFunction, PadHole, Shape, ShapeRadius, Size, - SolderPasteConfig, StopMaskConfig, StrokeText, StrokeWidth + AssemblyType, AutoRotate, ComponentSide, CopperClearance, DrillDiameter, Footprint, Footprint3DModel, FootprintPad, + LetterSpacing, LineSpacing, Mirror, Package, Package3DModel, PackagePad, PackagePadUuid, PadFunction, PadHole, + Shape, ShapeRadius, Size, SolderPasteConfig, StopMaskConfig, StrokeText, StrokeWidth ) generator = 'librepcb-parts-generator (generate_capacitor_radial_tht.py)' @@ -68,6 +69,7 @@ def generate_pkg( height: float, pitch: float, lead_width: float, + generate_3d_models: bool, author: str, version: str, create_date: Optional[str], @@ -147,7 +149,7 @@ def _generate_fill_polygon(identifier: str, layer: str) -> Polygon: stop_mask=StopMaskConfig.AUTO, solder_paste=SolderPasteConfig.OFF, copper_clearance=CopperClearance(0), - function=PadFunction.UNSPECIFIED, + function=PadFunction.STANDARD_PAD, package_pad=PackagePadUuid(uuid_plus), holes=[PadHole(uuid_plus, DrillDiameter(drill), pad_hole_path)], )) @@ -163,7 +165,7 @@ def _generate_fill_polygon(identifier: str, layer: str) -> Polygon: stop_mask=StopMaskConfig.AUTO, solder_paste=SolderPasteConfig.OFF, copper_clearance=CopperClearance(0), - function=PadFunction.UNSPECIFIED, + function=PadFunction.STANDARD_PAD, package_pad=PackagePadUuid(uuid_minus), holes=[PadHole(uuid_minus, DrillDiameter(drill), pad_hole_path)], )) @@ -198,6 +200,17 @@ def _generate_fill_polygon(identifier: str, layer: str) -> Polygon: layer='top_documentation', )) + # package outline + footprint.add_circle(Circle( + uuid=_fpt_uuid('circle-outline'), + layer=Layer('top_package_outlines'), + width=Width(0.0), + fill=Fill(False), + grab_area=GrabArea(False), + diameter=Diameter(diameter), + position=Position(0.0, 0.0), + )) + # courtyard footprint.add_circle(Circle( uuid=_fpt_uuid('circle-courtyard'), @@ -241,8 +254,9 @@ def _generate_fill_polygon(identifier: str, layer: str) -> Polygon: return footprint # package + uuid_pkg = _pkg_uuid('pkg') package = Package( - uuid=_pkg_uuid('pkg'), + uuid=uuid_pkg, name=Name(name), description=Description( 'Polarized radial electrolytic capacitor.\n\n' + @@ -259,7 +273,7 @@ def _generate_fill_polygon(identifier: str, layer: str) -> Polygon: deprecated=Deprecated(False), generated_by=GeneratedBy(''), categories=[Category('ee75e31d-f231-41d9-8a3b-bea5114f41e3')], - assembly_type=AssemblyType.AUTO, + assembly_type=AssemblyType.THT, ) package.add_pad(PackagePad(uuid=_pkg_uuid('pad-plus'), name=Name('+'))) package.add_pad(PackagePad(uuid=_pkg_uuid('pad-minus'), name=Name('-'))) @@ -268,11 +282,83 @@ def _generate_fill_polygon(identifier: str, layer: str) -> Polygon: name='default', )) + # Generate 3D models + uuid_3d = _pkg_uuid('3d') + if generate_3d_models: + generate_3d(library, name, uuid_pkg, uuid_3d, diameter, height, + pitch, lead_width) + package.add_3d_model(Package3DModel(uuid_3d, Name(name))) + for footprint in package.footprints: + footprint.add_3d_model(Footprint3DModel(uuid_3d)) + # write files package.serialize(path.join('out', library, 'pkg')) print('Wrote package {}'.format(name)) +def generate_3d( + library: str, + name: str, + uuid_pkg: str, + uuid_3d: str, + diameter: float, + height: float, + pitch: float, + lead_width: float, +) -> None: + import cadquery as cq + + from cadquery_helpers import StepAssembly, StepColor, StepConstants + + print(f'Generating pkg 3D model "{name}": {uuid_3d}') + + body_fillet = min(diameter * 0.1, 1.0) + body_ring_radius = min(diameter * 0.05, 1.0) + body_ring_circle_radius = (diameter / 2) + (body_ring_radius / 2) + body_ring_z = body_fillet + body_ring_radius * 3 + marking_angle = 40 + core_radius = diameter * 0.35 + core_depth = min(diameter * 0.02, 0.5) + + body_ring_cutout = cq.Workplane('XZ', origin=(-body_ring_circle_radius, 0, body_ring_z)) \ + .circle(body_ring_radius) \ + .revolve(360, (body_ring_circle_radius, 0, 0), (body_ring_circle_radius, -1, 0)) + + def _make_body(start_angle: float, angle: float) -> Any: + return cq.Workplane("XZ") \ + .transformed(rotate=(0, -start_angle, 0)) \ + .transformed(offset=(core_radius, 0, 0)) \ + .hLine((diameter / 2) - core_radius - body_fillet) \ + .ellipseArc(x_radius=body_fillet, y_radius=body_fillet, angle1=270, angle2=360, sense=1) \ + .vLine(height - (2 * body_fillet)) \ + .ellipseArc(x_radius=body_fillet, y_radius=body_fillet, angle1=360, angle2=90, sense=1) \ + .hLine(-(diameter / 2) + core_radius + body_fillet) \ + .close() \ + .revolve(angle, (-core_radius, 0, 0), (-core_radius, -1, 0)) \ + .cut(body_ring_cutout) + + body = _make_body(marking_angle / 2, 360 - marking_angle) + marking = _make_body(-marking_angle / 2, marking_angle) + core = cq.Workplane('XY', origin=(0, 0, core_depth)) \ + .cylinder(height - 2 * core_depth, core_radius, centered=(True, True, False)) + leg = cq.Workplane("XY").workplane(offset=(-core_depth - 1), invert=True) \ + .cylinder(StepConstants.THT_LEAD_SOLDER_LENGTH + core_depth + 1, lead_width / 2, + centered=(True, True, False)) + + assembly = StepAssembly(name) + assembly.add_body(body, 'body', cq.Color('gray16')) + assembly.add_body(marking, 'marking', cq.Color('gray60')) + assembly.add_body(core, 'core', cq.Color('ghostwhite')) + assembly.add_body(leg, 'leg-1', StepColor.LEAD_THT, + location=cq.Location((-pitch / 2, 0, 0))) + assembly.add_body(leg, 'leg-2', StepColor.LEAD_THT, + location=cq.Location((pitch / 2, 0, 0))) + + # Save with fusing since there are not many reused assembly parts. + out_path = path.join('out', library, 'pkg', uuid_pkg, f'{uuid_3d}.step') + assembly.save(out_path, fused=True) + + def generate_dev( library: str, diameter: float, @@ -325,6 +411,17 @@ def _uuid(identifier: str) -> str: if __name__ == '__main__': + if '--help' in sys.argv or '-h' in sys.argv: + print(f'Usage: {sys.argv[0]} [--3d]') + print() + print('Options:') + print(' --3d Generate 3D models using cadquery') + sys.exit(1) + + generate_3d_models = '--3d' in sys.argv + if not generate_3d_models: + warning = 'Note: Not generating 3D models unless the "--3d" argument is passed in!' + print(f'\033[1;33m{warning}\033[0m') CONFIGS = [ # Some typical, frequently used configurations. The lead width depends @@ -361,8 +458,9 @@ def _uuid(identifier: str) -> str: height=config['height'], pitch=config['pitch'], lead_width=config['lead_width'], + generate_3d_models=generate_3d_models, author='U. Bruhin', - version='0.1', + version='0.2', create_date='2019-12-29T14:14:11Z', ) generate_dev( diff --git a/uuid_cache_capacitors_radial_tht.csv b/uuid_cache_capacitors_radial_tht.csv index f0175be..898d684 100644 --- a/uuid_cache_capacitors_radial_tht.csv +++ b/uuid_cache_capacitors_radial_tht.csv @@ -19,8 +19,10 @@ dev-d6.3-h7.0-p2.5-w0.5-dev,99351a67-0fa7-40b1-a034-56da111e056a dev-d8.0-h11.5-p3.5-w0.6-dev,168f4978-a6b6-4b5d-964d-be6733328650 dev-d8.0-h5.0-p2.5-w0.6-dev,0107bccf-17c5-47ac-ae7a-75b057ba0a66 dev-d8.0-h7.0-p3.5-w0.6-dev,4353b100-937f-4c82-be90-62f4b632ab8b +pkg-d10.0-h12.5-p5.0-w0.6-3d,78db5379-e2b4-4c90-8dfa-819f358b92ea pkg-d10.0-h12.5-p5.0-w0.6-default-circle-courtyard,2cb554b4-514b-484c-a28f-db30b969b0ae pkg-d10.0-h12.5-p5.0-w0.6-default-circle-documentation,c847a4ae-3644-47b4-8cac-a121c237e1a0 +pkg-d10.0-h12.5-p5.0-w0.6-default-circle-outline,f0f4d121-880d-4c7a-94cb-6f640be4a1b3 pkg-d10.0-h12.5-p5.0-w0.6-default-circle-placement,0ddf7d33-05b8-4f03-bc30-1ac3084b299f pkg-d10.0-h12.5-p5.0-w0.6-default-footprint,93b59369-3614-47a1-b4a4-93ddf17cbe8f pkg-d10.0-h12.5-p5.0-w0.6-default-polygon-documentation-fill,eaa0b1ca-b539-476a-a0dc-c4d13560a383 @@ -30,8 +32,10 @@ pkg-d10.0-h12.5-p5.0-w0.6-default-text-value,64b9a447-c6e5-432a-9a0b-cefcaecb244 pkg-d10.0-h12.5-p5.0-w0.6-pad-minus,e5c0f266-5dfe-49d7-997c-402637a7a674 pkg-d10.0-h12.5-p5.0-w0.6-pad-plus,71ad34a2-36b1-4295-9a41-90ee17a6d96a pkg-d10.0-h12.5-p5.0-w0.6-pkg,10994512-62cf-4260-8b6f-72a837bd5e70 +pkg-d10.0-h16.0-p5.0-w0.6-3d,2b58f971-49c6-48af-bebc-a4a743453a47 pkg-d10.0-h16.0-p5.0-w0.6-default-circle-courtyard,67a89437-07eb-4b0a-b6f6-e684183a9b76 pkg-d10.0-h16.0-p5.0-w0.6-default-circle-documentation,7acfc1cf-9d9b-4b70-8e3c-201a2f7aeae1 +pkg-d10.0-h16.0-p5.0-w0.6-default-circle-outline,116a6fe3-f91e-4fbf-a993-6925d1e84cdb pkg-d10.0-h16.0-p5.0-w0.6-default-circle-placement,8b823fd0-14cb-4762-a23b-6a410bbdf240 pkg-d10.0-h16.0-p5.0-w0.6-default-footprint,862c6a7b-669f-4c5a-a9ba-26dfc691ed25 pkg-d10.0-h16.0-p5.0-w0.6-default-polygon-documentation-fill,f24249d9-65ca-46d6-972d-628c315e5a70 @@ -41,8 +45,10 @@ pkg-d10.0-h16.0-p5.0-w0.6-default-text-value,5364ea52-b24e-42ec-bc5a-c7f5ebe46f2 pkg-d10.0-h16.0-p5.0-w0.6-pad-minus,ea26f19f-e453-4e6f-982f-5af58c9b3676 pkg-d10.0-h16.0-p5.0-w0.6-pad-plus,86b53ab1-d7ca-48cd-9c94-7b5617797827 pkg-d10.0-h16.0-p5.0-w0.6-pkg,5bdd8800-1807-42f6-8306-bc93d701e4a7 +pkg-d10.0-h20.0-p5.0-w0.6-3d,af88662b-d2d0-449f-84b1-6d0dd1ef8af2 pkg-d10.0-h20.0-p5.0-w0.6-default-circle-courtyard,60549428-98a7-40c5-938f-40adb1e887d2 pkg-d10.0-h20.0-p5.0-w0.6-default-circle-documentation,59ce4d64-2cba-48e5-b240-12c38b0824e5 +pkg-d10.0-h20.0-p5.0-w0.6-default-circle-outline,3f5bd172-f28b-4f07-9142-08913050ac49 pkg-d10.0-h20.0-p5.0-w0.6-default-circle-placement,1c122f1e-efc4-4623-bc94-672ed2cfcf1d pkg-d10.0-h20.0-p5.0-w0.6-default-footprint,0fb871da-27cc-426f-a0ee-25e1031ec638 pkg-d10.0-h20.0-p5.0-w0.6-default-polygon-documentation-fill,91166aec-b8b0-416d-a178-73d6caee9a7e @@ -52,8 +58,10 @@ pkg-d10.0-h20.0-p5.0-w0.6-default-text-value,7917b8c8-58fb-4c9c-a663-7bc14448a18 pkg-d10.0-h20.0-p5.0-w0.6-pad-minus,d76a7466-6197-4d4a-b153-5dca2a0f5b47 pkg-d10.0-h20.0-p5.0-w0.6-pad-plus,9b074857-41a9-4b8b-9548-0c7b40879952 pkg-d10.0-h20.0-p5.0-w0.6-pkg,638ea9cf-bce2-49ba-be7d-22c223e37bfd +pkg-d12.5-h20.0-p5.0-w0.8-3d,e99b4253-3204-4b1d-9e4b-00d46c264fc8 pkg-d12.5-h20.0-p5.0-w0.8-default-circle-courtyard,90aa09d1-57ff-4b62-bc5f-dcb1bf086f28 pkg-d12.5-h20.0-p5.0-w0.8-default-circle-documentation,f7868dc1-2d6b-45c4-8672-20c0b51ef55d +pkg-d12.5-h20.0-p5.0-w0.8-default-circle-outline,3636fda4-5151-47f9-bd1b-95013a213b8f pkg-d12.5-h20.0-p5.0-w0.8-default-circle-placement,ce033ba5-4ce8-4d55-be22-382210d90a92 pkg-d12.5-h20.0-p5.0-w0.8-default-footprint,dd6ce1b6-0703-4402-a533-2aa4e5215798 pkg-d12.5-h20.0-p5.0-w0.8-default-polygon-documentation-fill,7371fbca-7d84-4523-bab1-4d7b3b328ba6 @@ -63,8 +71,10 @@ pkg-d12.5-h20.0-p5.0-w0.8-default-text-value,cd95fea0-abd1-448e-a04c-43e7461ab17 pkg-d12.5-h20.0-p5.0-w0.8-pad-minus,18c4e8a8-367e-4687-9ef0-7f520dadc7f2 pkg-d12.5-h20.0-p5.0-w0.8-pad-plus,164a6e8b-e245-49a5-bf9d-a72f407a5ebf pkg-d12.5-h20.0-p5.0-w0.8-pkg,7a2bb0cb-c4b3-4568-93ac-383c099309a5 +pkg-d12.5-h25.0-p5.0-w0.8-3d,0237673e-75a6-4f78-b867-437d80646b0e pkg-d12.5-h25.0-p5.0-w0.8-default-circle-courtyard,5f1adc29-1fc6-4c31-97e5-02600d8441d8 pkg-d12.5-h25.0-p5.0-w0.8-default-circle-documentation,124fa50e-9d95-452c-9165-953c0c006f91 +pkg-d12.5-h25.0-p5.0-w0.8-default-circle-outline,28fd761e-1954-40fa-b5ba-967874117230 pkg-d12.5-h25.0-p5.0-w0.8-default-circle-placement,862a22dd-c01e-4a2b-a99c-b8c40b86abca pkg-d12.5-h25.0-p5.0-w0.8-default-footprint,ffecfae9-aa7a-4be8-a2a0-e92d4501a838 pkg-d12.5-h25.0-p5.0-w0.8-default-polygon-documentation-fill,faeaf6cd-90ee-4180-a192-0c6953ca7d11 @@ -74,8 +84,10 @@ pkg-d12.5-h25.0-p5.0-w0.8-default-text-value,53d1c1c2-fff1-4b09-9927-547e6fb4df0 pkg-d12.5-h25.0-p5.0-w0.8-pad-minus,76f76ade-6d3d-450a-8d7d-22199f0d644a pkg-d12.5-h25.0-p5.0-w0.8-pad-plus,855fe1bc-5f38-4aa5-a160-b268b676446e pkg-d12.5-h25.0-p5.0-w0.8-pkg,1ceb1564-3f56-4c42-bcf4-3981ad83b76a +pkg-d16.0-h25.0-p7.5-w0.8-3d,795384f8-a62b-48b8-b04a-85f83afd630f pkg-d16.0-h25.0-p7.5-w0.8-default-circle-courtyard,8b3ea12a-993e-457c-81f6-844fdd4c1409 pkg-d16.0-h25.0-p7.5-w0.8-default-circle-documentation,3b1d27ed-7500-46ba-9ce6-4a3e8d7d7059 +pkg-d16.0-h25.0-p7.5-w0.8-default-circle-outline,61526dc5-4c3f-480e-a249-185f9e6b937d pkg-d16.0-h25.0-p7.5-w0.8-default-circle-placement,b35ba568-534a-4714-8cf4-738e44f33d8f pkg-d16.0-h25.0-p7.5-w0.8-default-footprint,622e1d5a-ca2b-473d-aeda-5454391d4fe1 pkg-d16.0-h25.0-p7.5-w0.8-default-polygon-documentation-fill,71ba4bd1-fbac-4a0c-a992-59e98f80cbeb @@ -85,8 +97,10 @@ pkg-d16.0-h25.0-p7.5-w0.8-default-text-value,c19b2cd7-5aef-4a4e-82e7-b231ce1ed65 pkg-d16.0-h25.0-p7.5-w0.8-pad-minus,0d723fe0-1930-4526-bc1d-57d471ad566b pkg-d16.0-h25.0-p7.5-w0.8-pad-plus,b63702bb-7fd2-44ce-8c0c-5304f33246a7 pkg-d16.0-h25.0-p7.5-w0.8-pkg,bbbf14d5-f359-491f-81fd-eedfeebe68a7 +pkg-d16.0-h31.5-p7.5-w0.8-3d,f1d953c8-eee5-41dd-94d7-259920f9226c pkg-d16.0-h31.5-p7.5-w0.8-default-circle-courtyard,5def97e3-f1e2-4695-9756-f2de6639d279 pkg-d16.0-h31.5-p7.5-w0.8-default-circle-documentation,e1961bd9-e7ab-4c44-8a46-e70fea499368 +pkg-d16.0-h31.5-p7.5-w0.8-default-circle-outline,d5539873-975c-4602-8e44-aed13e23c767 pkg-d16.0-h31.5-p7.5-w0.8-default-circle-placement,55350686-2c29-4ca9-987b-7d63b418fce3 pkg-d16.0-h31.5-p7.5-w0.8-default-footprint,7012b1f6-1066-4b02-ba73-9490670f0549 pkg-d16.0-h31.5-p7.5-w0.8-default-polygon-documentation-fill,14e8182f-2a63-4af3-8f2f-196969c30833 @@ -96,8 +110,10 @@ pkg-d16.0-h31.5-p7.5-w0.8-default-text-value,dd6cdf37-d338-4956-9325-871cbe9899c pkg-d16.0-h31.5-p7.5-w0.8-pad-minus,9a108590-da20-4ec4-9b55-51c3558ef12e pkg-d16.0-h31.5-p7.5-w0.8-pad-plus,2d798396-8284-4a07-8dfc-b795de3af9df pkg-d16.0-h31.5-p7.5-w0.8-pkg,a83ebf1e-9607-4fde-a5fe-77202cacb4c4 +pkg-d18.0-h35.5-p7.5-w0.8-3d,48d7cc78-75ad-4f36-a4cb-1e714e253de0 pkg-d18.0-h35.5-p7.5-w0.8-default-circle-courtyard,92f3d3a6-acf7-40e3-806b-ac778cc706f2 pkg-d18.0-h35.5-p7.5-w0.8-default-circle-documentation,afbf9355-f66b-45af-bbba-b81707731a91 +pkg-d18.0-h35.5-p7.5-w0.8-default-circle-outline,c6d66031-a1cb-474a-b116-e9705a194985 pkg-d18.0-h35.5-p7.5-w0.8-default-circle-placement,4878a611-1e9a-4fad-bdef-3f16f8e45df4 pkg-d18.0-h35.5-p7.5-w0.8-default-footprint,31fb9806-d641-4bfe-a2e8-3e425c9abd75 pkg-d18.0-h35.5-p7.5-w0.8-default-polygon-documentation-fill,b5a8dfee-7591-41f5-ba49-b31943178565 @@ -107,8 +123,10 @@ pkg-d18.0-h35.5-p7.5-w0.8-default-text-value,16d8ff86-9f6e-4335-9133-18d945396cc pkg-d18.0-h35.5-p7.5-w0.8-pad-minus,08d19758-8a29-4a84-9af2-a9eb95cb6321 pkg-d18.0-h35.5-p7.5-w0.8-pad-plus,e68691bc-b9e1-4737-872d-728170ea5fb5 pkg-d18.0-h35.5-p7.5-w0.8-pkg,8f12c93c-4d09-40d8-a800-f227b08aa220 +pkg-d3.0-h5.0-p1.0-w0.4-3d,b3d51e69-663d-4bee-93da-6384fd51afa0 pkg-d3.0-h5.0-p1.0-w0.4-default-circle-courtyard,2c81b9e6-247c-4adc-a8b9-286726754e4d pkg-d3.0-h5.0-p1.0-w0.4-default-circle-documentation,438671cd-79b0-46ae-9e63-00d1c1574c13 +pkg-d3.0-h5.0-p1.0-w0.4-default-circle-outline,6bb58416-44e5-4890-a70c-2491c2f2e2b0 pkg-d3.0-h5.0-p1.0-w0.4-default-circle-placement,ca293619-0072-407e-b1ca-d5b32ea0191b pkg-d3.0-h5.0-p1.0-w0.4-default-footprint,b4a7fb2b-3366-4562-a0c0-2bc132af644d pkg-d3.0-h5.0-p1.0-w0.4-default-polygon-documentation-fill,ae319c57-69c7-49be-8db1-d0c4970b6b57 @@ -118,8 +136,10 @@ pkg-d3.0-h5.0-p1.0-w0.4-default-text-value,a0a7791f-d4b2-4375-b941-ce6fe30fb959 pkg-d3.0-h5.0-p1.0-w0.4-pad-minus,f28aa1ac-8825-41dc-bc73-15fd94d8618b pkg-d3.0-h5.0-p1.0-w0.4-pad-plus,33d1c7b1-e777-493d-9f76-79c24ff06729 pkg-d3.0-h5.0-p1.0-w0.4-pkg,4307560c-5055-48fd-88e6-36f8c4fa91bf +pkg-d4.0-h11.0-p1.5-w0.45-3d,9d15a709-f115-4932-aaa4-bdafec7ef9d3 pkg-d4.0-h11.0-p1.5-w0.45-default-circle-courtyard,25506499-c026-4cb9-b006-1ba677c21958 pkg-d4.0-h11.0-p1.5-w0.45-default-circle-documentation,3deb5ddb-3d39-4bff-a01f-b5f239ecad4a +pkg-d4.0-h11.0-p1.5-w0.45-default-circle-outline,e7dd0841-5f4b-4950-aca8-77d53de94430 pkg-d4.0-h11.0-p1.5-w0.45-default-circle-placement,6c986855-1784-491b-b7a4-479a7e40ed08 pkg-d4.0-h11.0-p1.5-w0.45-default-footprint,e390537d-43c1-4f50-8cb6-35203461e711 pkg-d4.0-h11.0-p1.5-w0.45-default-polygon-documentation-fill,dfcffd42-4856-46f4-86ca-385de3a36a33 @@ -129,8 +149,10 @@ pkg-d4.0-h11.0-p1.5-w0.45-default-text-value,cf0b2cfa-4af6-4454-8b18-9b40a6e5d17 pkg-d4.0-h11.0-p1.5-w0.45-pad-minus,62af1013-f4b3-4daa-b926-585c87c9c7d3 pkg-d4.0-h11.0-p1.5-w0.45-pad-plus,7f48ef5f-c789-4aa3-b1ad-c75afeaf75b5 pkg-d4.0-h11.0-p1.5-w0.45-pkg,a522889a-d2af-43ab-8a13-850f1742e434 +pkg-d4.0-h5.0-p1.5-w0.45-3d,d7dbfcd8-e4e2-445b-9095-2f866d0d03a6 pkg-d4.0-h5.0-p1.5-w0.45-default-circle-courtyard,3397a3e8-0bba-44e8-9d22-c645d7da6e01 pkg-d4.0-h5.0-p1.5-w0.45-default-circle-documentation,468a7601-ad82-401f-9627-78d7a3b759fc +pkg-d4.0-h5.0-p1.5-w0.45-default-circle-outline,5197e48f-8c48-494f-8bfa-db95d4da9e2c pkg-d4.0-h5.0-p1.5-w0.45-default-circle-placement,2c654bc2-2c34-4a3e-9630-5ad9e4f2f6d7 pkg-d4.0-h5.0-p1.5-w0.45-default-footprint,2866452f-a7fa-48c6-a377-95bd10b337fe pkg-d4.0-h5.0-p1.5-w0.45-default-polygon-documentation-fill,e2e52d9d-979f-40a8-bf8e-86c493a8b35c @@ -140,8 +162,10 @@ pkg-d4.0-h5.0-p1.5-w0.45-default-text-value,3259b3f9-860a-4a0f-82df-61f6100ad14f pkg-d4.0-h5.0-p1.5-w0.45-pad-minus,2b1bf2fd-ec48-4fa4-8c0e-0c0b119e85b7 pkg-d4.0-h5.0-p1.5-w0.45-pad-plus,f11fd33a-eb02-47c0-9de0-a5bb9f88287c pkg-d4.0-h5.0-p1.5-w0.45-pkg,b041f7ae-0052-4ea4-9244-577994247203 +pkg-d4.0-h7.0-p1.5-w0.45-3d,667d5347-ad66-4f5f-94b9-1918fd77f6d0 pkg-d4.0-h7.0-p1.5-w0.45-default-circle-courtyard,54337866-9ea0-4a12-b75d-94697cb5d15f pkg-d4.0-h7.0-p1.5-w0.45-default-circle-documentation,9f61be2e-93c9-4e15-8127-25812c5988de +pkg-d4.0-h7.0-p1.5-w0.45-default-circle-outline,c04c8030-25a2-43d2-a23a-6c075978b60c pkg-d4.0-h7.0-p1.5-w0.45-default-circle-placement,dd1a96b7-820f-43ce-a520-04e953caf0bd pkg-d4.0-h7.0-p1.5-w0.45-default-footprint,92d11b82-7e41-4b9f-842e-40d98cc84312 pkg-d4.0-h7.0-p1.5-w0.45-default-polygon-documentation-fill,47b867ba-3e10-4e81-a5d7-c50b10c77bea @@ -151,8 +175,10 @@ pkg-d4.0-h7.0-p1.5-w0.45-default-text-value,b2cb6ff7-9565-4523-bd3a-444a551a3d0a pkg-d4.0-h7.0-p1.5-w0.45-pad-minus,75497a44-af6b-4476-9d20-52fe80382c07 pkg-d4.0-h7.0-p1.5-w0.45-pad-plus,c8197b05-fc56-4724-bdfe-ef0f5c7953e8 pkg-d4.0-h7.0-p1.5-w0.45-pkg,047f91ff-6dcc-4941-8426-48ffb01e009d +pkg-d5.0-h11.0-p2.0-w0.5-3d,70926812-0898-4731-8885-bb9315f2f758 pkg-d5.0-h11.0-p2.0-w0.5-default-circle-courtyard,aec992f7-8267-40b7-8e76-19353092f5e4 pkg-d5.0-h11.0-p2.0-w0.5-default-circle-documentation,d36094e1-cf0d-43a1-afab-3d575ec19612 +pkg-d5.0-h11.0-p2.0-w0.5-default-circle-outline,8e4a0924-fbf9-45c6-9403-90208dd85728 pkg-d5.0-h11.0-p2.0-w0.5-default-circle-placement,b3d36b8e-6401-44cd-aa1f-c3b29bfa5234 pkg-d5.0-h11.0-p2.0-w0.5-default-footprint,6c21c3c5-80c5-479b-8a78-f344a72842e3 pkg-d5.0-h11.0-p2.0-w0.5-default-polygon-documentation-fill,027ff3ee-9931-47b4-b0ec-27f58e63f4a4 @@ -162,8 +188,10 @@ pkg-d5.0-h11.0-p2.0-w0.5-default-text-value,a405fb74-2632-46c7-ac1b-badbd008f1d5 pkg-d5.0-h11.0-p2.0-w0.5-pad-minus,be2c37e6-0f84-4dfd-b1c6-13c5ce47e9c3 pkg-d5.0-h11.0-p2.0-w0.5-pad-plus,5b2bebc0-b41a-49cf-8f0b-56d2b0d00e92 pkg-d5.0-h11.0-p2.0-w0.5-pkg,684ebc3e-b8ca-47f8-9d84-1a4aa994341a +pkg-d5.0-h5.0-p2.0-w0.5-3d,fb1f0425-4f8c-4919-b75b-2797f8567c8e pkg-d5.0-h5.0-p2.0-w0.5-default-circle-courtyard,239c2565-5901-4477-8846-40a43df0990b pkg-d5.0-h5.0-p2.0-w0.5-default-circle-documentation,04cd9206-776a-4972-98c5-436678b34dc4 +pkg-d5.0-h5.0-p2.0-w0.5-default-circle-outline,1cdd3057-2ba7-4484-97ff-09cdca30db61 pkg-d5.0-h5.0-p2.0-w0.5-default-circle-placement,8e968373-c490-440c-93a2-c99da52a0a37 pkg-d5.0-h5.0-p2.0-w0.5-default-footprint,187c9d37-f339-48dc-8480-eee2409c238a pkg-d5.0-h5.0-p2.0-w0.5-default-polygon-documentation-fill,02c4016e-8340-423c-a0ac-9008dc54bf28 @@ -173,8 +201,10 @@ pkg-d5.0-h5.0-p2.0-w0.5-default-text-value,2dcb64a0-4682-47f2-bc8e-4672c2a6d10f pkg-d5.0-h5.0-p2.0-w0.5-pad-minus,f0123ee0-f9e3-4f35-aa4d-fa8b7ca8f3c3 pkg-d5.0-h5.0-p2.0-w0.5-pad-plus,5b1275cd-0630-4475-a408-187a051af73a pkg-d5.0-h5.0-p2.0-w0.5-pkg,62d78cc0-a21e-4b5b-8c6a-647a1ecf8771 +pkg-d5.0-h7.0-p2.0-w0.5-3d,f8ca01f3-5723-4fb9-bdf4-0e204b4fc6c1 pkg-d5.0-h7.0-p2.0-w0.5-default-circle-courtyard,3bfec9d2-e359-4c50-826f-2bec284bc5d9 pkg-d5.0-h7.0-p2.0-w0.5-default-circle-documentation,cd941e73-abbf-405a-b9a5-b999c54901c1 +pkg-d5.0-h7.0-p2.0-w0.5-default-circle-outline,7cecbc71-e71e-4e61-ac31-9133fc20a9ad pkg-d5.0-h7.0-p2.0-w0.5-default-circle-placement,d07f5bbd-b071-4730-9223-1e5549ba050e pkg-d5.0-h7.0-p2.0-w0.5-default-footprint,cd2cedac-61c0-4231-b086-833dbc5e59cf pkg-d5.0-h7.0-p2.0-w0.5-default-polygon-documentation-fill,8fcf72d1-94a3-4be6-a4ff-581cfb3e1fd3 @@ -184,8 +214,10 @@ pkg-d5.0-h7.0-p2.0-w0.5-default-text-value,fdab6f3a-53b7-4843-b134-34eee00257eb pkg-d5.0-h7.0-p2.0-w0.5-pad-minus,98763ef6-dd52-48a7-baf0-ed9044b55018 pkg-d5.0-h7.0-p2.0-w0.5-pad-plus,dcb3a80f-b16a-44fe-914e-43a65ce6d965 pkg-d5.0-h7.0-p2.0-w0.5-pkg,def6b461-05f6-4dc9-9e41-612ab34d1e59 +pkg-d6.3-h11.0-p2.5-w0.5-3d,8291a2f6-989f-4dc0-ae8d-e9ca372a9a0d pkg-d6.3-h11.0-p2.5-w0.5-default-circle-courtyard,5785cbe8-22f3-42c6-8193-64a540c94ebb pkg-d6.3-h11.0-p2.5-w0.5-default-circle-documentation,523302f7-dbfe-4d81-aac0-196c34aa5be9 +pkg-d6.3-h11.0-p2.5-w0.5-default-circle-outline,49408a55-8ffa-41e2-a288-72693e4ce850 pkg-d6.3-h11.0-p2.5-w0.5-default-circle-placement,8fae738d-6d09-46c4-a6ae-28dd9e1e1755 pkg-d6.3-h11.0-p2.5-w0.5-default-footprint,20b1846d-0d08-4129-a0bf-1100a19670fd pkg-d6.3-h11.0-p2.5-w0.5-default-polygon-documentation-fill,078a9ebc-0493-4efb-a5c6-e430aa6e2be5 @@ -195,8 +227,10 @@ pkg-d6.3-h11.0-p2.5-w0.5-default-text-value,aed07899-2cb0-4631-b7ea-d5d96712fc5b pkg-d6.3-h11.0-p2.5-w0.5-pad-minus,1a41f1b3-c51c-4da1-9362-cd93fda7025b pkg-d6.3-h11.0-p2.5-w0.5-pad-plus,83d8dcfb-747a-4818-be2b-ffa5170c1812 pkg-d6.3-h11.0-p2.5-w0.5-pkg,1c97bc55-ea91-4c4d-8bbe-8977f03ee654 +pkg-d6.3-h5.0-p2.5-w0.5-3d,e6929347-24e8-4f39-b7d0-cdf517e5fff1 pkg-d6.3-h5.0-p2.5-w0.5-default-circle-courtyard,35e18eb0-6a49-42b2-ba05-f13add9bce47 pkg-d6.3-h5.0-p2.5-w0.5-default-circle-documentation,b711b205-dc73-4ae1-aea7-c52e75be63ce +pkg-d6.3-h5.0-p2.5-w0.5-default-circle-outline,c83b3cf3-569c-41af-8a8b-0fb1ba63fb3c pkg-d6.3-h5.0-p2.5-w0.5-default-circle-placement,d1545aec-40b1-4aac-86df-f1833d042466 pkg-d6.3-h5.0-p2.5-w0.5-default-footprint,163c53a0-94ae-4544-a8a2-ca0713532d6e pkg-d6.3-h5.0-p2.5-w0.5-default-polygon-documentation-fill,fa4e9f88-5a4b-40f5-90d9-912f82d44707 @@ -206,8 +240,10 @@ pkg-d6.3-h5.0-p2.5-w0.5-default-text-value,73579c7c-1a1b-4ebe-8f14-4c2914ca3e5c pkg-d6.3-h5.0-p2.5-w0.5-pad-minus,084b42c7-6b1a-44a5-80c7-68d3d6067284 pkg-d6.3-h5.0-p2.5-w0.5-pad-plus,5d7062fa-3cf8-484a-87b0-adcb73aea009 pkg-d6.3-h5.0-p2.5-w0.5-pkg,9e3cb807-712f-4d8a-88ec-0c7fb12b7a71 +pkg-d6.3-h7.0-p2.5-w0.5-3d,df0e8030-dd8e-407d-9b8c-b42b4e98bcc7 pkg-d6.3-h7.0-p2.5-w0.5-default-circle-courtyard,e5f52c4b-8219-4a2a-a763-62d0a827ca3f pkg-d6.3-h7.0-p2.5-w0.5-default-circle-documentation,cb77b985-c7d7-477f-94c0-e6da9eccf8e0 +pkg-d6.3-h7.0-p2.5-w0.5-default-circle-outline,9d27a49e-66c6-4fa4-8dea-41ef261bb608 pkg-d6.3-h7.0-p2.5-w0.5-default-circle-placement,d477eea4-11a1-40e4-9133-b0e6b5def6da pkg-d6.3-h7.0-p2.5-w0.5-default-footprint,24c79e1b-4511-4ee5-b057-a286c3bd2543 pkg-d6.3-h7.0-p2.5-w0.5-default-polygon-documentation-fill,4855055f-7bbf-42df-96e9-c695c899fa35 @@ -217,8 +253,10 @@ pkg-d6.3-h7.0-p2.5-w0.5-default-text-value,595784c1-13ef-4e9d-8383-0e0dc9c64b3a pkg-d6.3-h7.0-p2.5-w0.5-pad-minus,364cea9b-2553-4890-9794-38be49f92d9a pkg-d6.3-h7.0-p2.5-w0.5-pad-plus,628147d6-d099-45cf-b725-c69d77188b1c pkg-d6.3-h7.0-p2.5-w0.5-pkg,065f98eb-43a4-4533-9076-c9a42593ea57 +pkg-d8.0-h11.5-p3.5-w0.6-3d,4a3bb3b8-96fe-418f-9b08-1b46de4b71da pkg-d8.0-h11.5-p3.5-w0.6-default-circle-courtyard,6e93edbc-c2ae-4fe5-8f76-5989038cbac2 pkg-d8.0-h11.5-p3.5-w0.6-default-circle-documentation,439393bc-ee6c-48a0-a46f-c100a81facdc +pkg-d8.0-h11.5-p3.5-w0.6-default-circle-outline,87cd02b7-6b40-43e0-be52-676532ac4d77 pkg-d8.0-h11.5-p3.5-w0.6-default-circle-placement,6f544cce-2667-4a46-8a16-8df39c459cfc pkg-d8.0-h11.5-p3.5-w0.6-default-footprint,7e614902-92b9-44da-800a-d83a51e5e210 pkg-d8.0-h11.5-p3.5-w0.6-default-polygon-documentation-fill,f5da4205-9fba-4854-a21d-7f5acc2c9b16 @@ -228,8 +266,10 @@ pkg-d8.0-h11.5-p3.5-w0.6-default-text-value,e6bc7e6e-46cb-403d-86ae-016737255eca pkg-d8.0-h11.5-p3.5-w0.6-pad-minus,bd0fb72f-fae7-436d-80aa-965f697bf4e5 pkg-d8.0-h11.5-p3.5-w0.6-pad-plus,3274ec77-b01b-4ce7-8f9c-59d59116d44f pkg-d8.0-h11.5-p3.5-w0.6-pkg,c718e83a-4b13-415c-8c96-d192831837d5 +pkg-d8.0-h5.0-p2.5-w0.6-3d,56d07083-ffc1-42a0-a3e9-609179277c33 pkg-d8.0-h5.0-p2.5-w0.6-default-circle-courtyard,37cbb6cf-7605-484f-8fd9-361d8367c0df pkg-d8.0-h5.0-p2.5-w0.6-default-circle-documentation,b55d2cd4-3aab-4bab-a650-5294422c0aea +pkg-d8.0-h5.0-p2.5-w0.6-default-circle-outline,5eddf313-f6e6-4d45-9c7f-43bef1ca1ac1 pkg-d8.0-h5.0-p2.5-w0.6-default-circle-placement,853353fe-38ee-4b7d-9aac-c7b9a760477b pkg-d8.0-h5.0-p2.5-w0.6-default-footprint,94ce04e4-fa5d-4276-8964-1b7a6371c63d pkg-d8.0-h5.0-p2.5-w0.6-default-polygon-documentation-fill,97420402-aaf5-41f8-b0f5-acc6c33c7c17 @@ -239,8 +279,10 @@ pkg-d8.0-h5.0-p2.5-w0.6-default-text-value,bbb06a99-a07e-4f3c-8c53-75e5f4fdcbe1 pkg-d8.0-h5.0-p2.5-w0.6-pad-minus,dbaab8c2-e88b-4f5b-b2a8-528d10ec340d pkg-d8.0-h5.0-p2.5-w0.6-pad-plus,b4e7cf1e-8cad-451a-8bd9-4f30f8118755 pkg-d8.0-h5.0-p2.5-w0.6-pkg,7b756d32-87b4-423c-95b2-3fb1a4263a1c +pkg-d8.0-h7.0-p3.5-w0.6-3d,5df5fcbd-b6a8-4171-bf69-9934b0cfbdc0 pkg-d8.0-h7.0-p3.5-w0.6-default-circle-courtyard,f3f4eccd-1654-4c93-bcab-2cc11f8aa218 pkg-d8.0-h7.0-p3.5-w0.6-default-circle-documentation,c1405da7-a053-4c3c-9f73-8c6f672bc5f9 +pkg-d8.0-h7.0-p3.5-w0.6-default-circle-outline,e643db3f-3d12-495e-ad8e-d30cefa05377 pkg-d8.0-h7.0-p3.5-w0.6-default-circle-placement,81749641-3583-47a7-a89f-0b275b1a1faf pkg-d8.0-h7.0-p3.5-w0.6-default-footprint,af412d5b-572e-4c53-afff-d049ee9c7b1f pkg-d8.0-h7.0-p3.5-w0.6-default-polygon-documentation-fill,eb430429-c1c7-4403-971e-2be0413b3828