Compare commits

...
Sign in to create a new pull request.

138 commits

Author SHA1 Message Date
Wojciech Kaczmarski
1cc19fe5c1
Update README.md
fixed a typo and added <br>
2026-02-19 15:33:05 +01:00
Wojciech Kaczmarski
7c18235311
updates - Feb 2026
Updated status for Revision B in README.
2026-02-19 15:23:59 +01:00
Vlastimil Slinták
7a42282157 Include battery connector in the BOM and POS files 2026-02-16 09:06:06 +01:00
Andreas Schmidberger
4d0def57d9
Create CNAME 2026-02-07 16:19:50 +01:00
Wojciech Kaczmarski
76f83fc253
Fix formatting with HTML line breaks
Unified formatting
2025-12-16 13:31:08 +01:00
Vlastimil Slinták
40d4ca9e89 Fixed panelization params to be compliant with PCBWay and JLCPCB
PCBWay needs 4 tooling holes of 2mm diameter
JLCPCB needs minumum of 70x70 mm panel for Vcuts
2025-12-16 12:32:29 +01:00
Vlastimil Slinták
2656147b33 Fix Markdown rendering 2025-12-15 18:55:01 +01:00
Vlastimil Slinták
90674a0f85 Panelize PCB before making fabrication files
KiKit plugin is used to make a frame with Vcuts and tooling holes around
the LinHT PCB.
2025-12-15 18:17:07 +01:00
Vlastimil Slinták
2977c3a3d4 Fix PCB edge discontinuity error 2025-12-15 18:17:07 +01:00
Wojciech Kaczmarski
550fb368a5 Enhance README with links and clarity improvements
Updated README.md to improve clarity and add links.
2025-12-15 17:22:12 +01:00
Vlastimil Slinták
b786ac9b7e Update readmewith more up-to-date info 2025-12-15 17:22:12 +01:00
Vlastimil Slinták
7d2e20e9f3 Export both side to the POS file 2025-12-15 14:40:49 +01:00
Vlastimil Slinták
85814dcab1 Fixed GND keepout in the RF traces and added more GNS vias 2025-12-08 22:50:44 +01:00
Vlastimil Slinták
1dd2a9f940 Removed BAT60A diode on the USB VBUS input 2025-12-08 22:37:39 +01:00
Vlastimil Slinták
f52bcad816 Fixed wrong RF_ATT_* pins direction 2025-12-08 22:36:23 +01:00
Vlastimil Slinták
08c5c439c9 Fixed GNSS TX/RX mixup and several ERC issues 2025-12-08 22:33:57 +01:00
Vlastimil Slinták
70d07941ac Add SoM part number to the PN field 2025-12-04 10:20:40 +01:00
Vlastimil Slinták
84ff57cafe Minor layout tweaks and fixes 2025-12-03 16:08:14 +01:00
Vlastimil Slinták
fd3ef76e4b Remove old PDF schematic file 2025-12-03 15:39:40 +01:00
Vlastimil Slinták
d05137b91d Add SoM MCM-iMC93 into the BOM 2025-12-03 15:37:57 +01:00
Vlastimil Slinták
01e1dd834f Update "issue date" in the whole project 2025-12-03 12:29:20 +01:00
Vlastimil Slinták
a938d4f515 Fix issue with PCB rendering
Rendered PCB was without soldermask layer. This commit fixes the issue
and increases the render image quality.
2025-12-02 12:18:00 +01:00
Vlastimil Slinták
67f96ec234 Add quantity column to the csv BOM file 2025-12-02 10:22:51 +01:00
Vlastimil Slinták
a7eb8aff75 Remove whitespaces in PN and MPN fields 2025-12-02 10:12:40 +01:00
Vlastimil Slinták
493b8ef219 Fixed LCSC number of the 1 uF capacitors 2025-12-01 19:40:37 +01:00
Vlastimil Slinták
63094e2b41 Add "part number" column to the BOM export 2025-12-01 19:27:34 +01:00
Vlastimil Slinták
df0bbd8cfb Populate 10kOhm resistor simulating a battery thermistor 2025-12-01 19:27:17 +01:00
Vlastimil Slinták
c50bc3806b Fixed LG77L Mouser and LCSC part numbers 2025-12-01 19:19:12 +01:00
Vlastimil Slinták
d6dc7d62dd Fix LCSC number of the GRF5604 2025-12-01 19:14:47 +01:00
Vlastimil Slinták
83a4ad6d3f Minor layout tweaks 2025-12-01 15:22:20 +01:00
Vlastimil Slinták
5e10ab97e9 Add RF_PA_ENABLE signal and MOSFETs to enable GRF5604 2025-12-01 15:22:20 +01:00
Vlastimil Slinták
2b1a109265 Add PPTC fuse to the battery 2025-12-01 14:19:10 +01:00
Vlastimil Slinták
1045f31de5 Minor tweaks and layout fixes 2025-11-27 14:40:53 +01:00
Vlastimil Slinták
e027e5f183 Add GNSS module PCB layout 2025-11-26 19:36:45 +01:00
Vlastimil Slinták
00075110c7 Add GNSS chip antenna ANT8010LL05R1516A 2025-11-26 19:36:45 +01:00
Vlastimil Slinták
8072eb3c63 Add LG77L GNSS module to the schema 2025-11-26 19:36:45 +01:00
Vlastimil Slinták
02844ab23f Add symbol, footprint, and 3D model of the LG77L GNSS module 2025-11-26 19:36:45 +01:00
Vlastimil Slinták
948c37ff06 Update pinout documentation based on revision B 2025-11-26 09:24:10 +01:00
Vlastimil Slinták
8cf8226d6b Update issue date and revision number 2025-11-25 14:54:23 +01:00
Vlastimil Slinták
044ac974d1 LinHT revision B layout
Complete revision B layout with all traces routed.
No GNSS, yet.
2025-11-25 14:54:23 +01:00
Vlastimil Slinták
dba2268b71 Fixed capacitors for the BQ25792 2025-11-25 14:54:23 +01:00
Vlastimil Slinták
7133a883a6 Removed 4 series resistors from the attenuators SPI lines 2025-11-25 14:54:23 +01:00
Vlastimil Slinták
8b3c81fe76 Connected attenuator data signals to SoM and minor changes to SoM pinout
KBD_PWM from 105  -> 95  (GPIO2_IO[25])
RF_SW_CTRL from 104 -> 103 (GPIO2_IO[15])
RF_ATT_DATA to 107 (SPI7_SOUT)
RF_ATT_CLK to 106 (SPI7_SCK)
RF_ATT_LE1 to 105 (GPIO2_IO[12])
RF_ATT_LE2 to 104 (GPIO2_IO[13])
RF_PA_SHUTDOWN not decided yet
2025-11-25 14:54:23 +01:00
Vlastimil Slinták
b3b9a84787 Changed GPIO for the jack detect signal to pin 49 2025-11-25 14:54:23 +01:00
Vlastimil Slinták
90201b2195 Minor schematics tweaks and pinout optimizations 2025-11-25 14:54:23 +01:00
Vlastimil Slinták
5d974a7170 Added test point for the USB ID SoM pin 2025-11-25 14:54:23 +01:00
Vlastimil Slinták
e6c4f79742 Changed 5V DC/DC buck to TPS565242
Original buck has 2 A maximum current output. New one has up to 5 A.
Our design needs ~3 A maximum current.

Fixes #38
2025-11-25 14:54:23 +01:00
Vlastimil Slinták
49254d578c Added TPS565242 symbol 2025-11-25 14:54:23 +01:00
Vlastimil Slinták
a98f74f13f Changed LED resistors from 220R to 100R
Fixes #37
2025-11-25 14:54:23 +01:00
Vlastimil Slinták
70acae8a4c Added power management ATTiny826
Fixes #32
Fixes #35
Fixes #23
2025-11-25 14:54:23 +01:00
Vlastimil Slinták
763aeb081e Fixed C60 position at the VOL_POT 2025-11-25 14:54:23 +01:00
Vlastimil Slinták
ec89809b65 Removed a TODO note about the impedance matching 2025-11-25 14:54:23 +01:00
Wojciech Kaczmarski
2cc6e47803 updated RF attenuator symbol 2025-11-25 14:54:23 +01:00
Vlastimil Slinták
631b44fd5c Fixed RF net class. 2025-11-25 14:54:23 +01:00
Vlastimil Slinták
553713cdb0 Removed battery voltage divider and U_BATT_MON signal to SoM
Battery voltage can and will be measured by the BQ25792RQ IC via I2C
register.
2025-11-25 14:54:23 +01:00
Vlastimil Slinták
1a6c436dd4 Fixed missing GND for the RF PA output filter 2025-11-25 14:54:23 +01:00
Vlastimil Slinták
5d4fa17be1 Fixed oscillator footprints 2025-11-25 14:54:23 +01:00
Vlastimil Slinták
7be6a7a659 Added missing courtyard to the SLO0520H1R0 footprint 2025-11-25 14:54:23 +01:00
Vlastimil Slinták
648ac12a01 Fixed BQ25792 foorptint based on the manufacturer's specs 2025-11-25 14:54:23 +01:00
Vlastimil Slinták
b54ec7e958 Removed unused components, connected power signals to the SoM 2025-11-25 14:54:23 +01:00
Vlastimil Slinták
c4ccd7cfb9 Changed USB charger inductor to smaller version
Original inductor recommended by manufacturer was for up to 14A (I_sat).
LinHT doesn't need currents like this, so smaller inductor for 8 A is used.
This will save some space as a new component is smaller in every dimension.
2025-11-25 14:54:23 +01:00
Vlastimil Slinták
a2a7dab905 Fixed and added LCSC reference numbers for all components 2025-11-25 14:54:23 +01:00
Vlastimil Slinták
abd2511511 Updated Coilcraft 0908SQ footprint and added 3D model 2025-11-25 14:54:23 +01:00
Vlastimil Slinták
abbd0af731 Added USB charger based on BQ25792
This is not a final version as there are still several TODOs, see
schematics for details.
2025-11-25 14:54:23 +01:00
Vlastimil Slinták
be245ff411 Footprint and 3D model of TDK's SPM6530 inductor 2025-11-25 14:54:23 +01:00
Vlastimil Slinták
bd0655d921 Added symbol, footprint and 3D model of BQ25792 IC 2025-11-25 14:54:23 +01:00
Vlastimil Slinták
438c5bfef5 Added two series attenuators PE4312 to the RF input path 2025-11-25 14:54:23 +01:00
Vlastimil Slinták
a1de4e23e6 Minor fixes in component part numbers 2025-11-25 14:54:23 +01:00
Vlastimil Slinták
44ce501a89 Changed revision to "B" and updated dateof the project 2025-11-25 14:54:23 +01:00
Vlastimil Slinták
bf485b8795 Added an RF PA based on GRF5604
Fixes #27
Fixes #28
2025-11-25 14:54:23 +01:00
Vlastimil Slinták
5b64c6ddd0 Added GRF5604 symbol, footprint and 3D model 2025-11-25 14:54:23 +01:00
Vlastimil Slinták
4e47e85ccf Added SKY13330-397LF symbol, footprint and 3D model 2025-11-25 14:54:23 +01:00
Vlastimil Slinták
0bf36053a8 Updated parameters of the 5V power rail 2025-11-25 14:54:23 +01:00
Vlastimil Slinták
51a6ed04ae Improved schematics readability 2025-11-25 14:54:23 +01:00
Vlastimil Slinták
981314ff52 Modified LCSC attributes 2025-11-25 14:54:23 +01:00
Vlastimil Slinták
a795f48831 Replaced WM8960 to the newer TLV320AIC3100
WM8960 is obsolete, so this change is needed.
Fixes #29
2025-11-25 14:54:23 +01:00
Vlastimil Slinták
683f1ef7d1 Added a 1.8 V LDO for the digital IOs
This simple LDO will serve as a powersource for the audio codec and
any other IC with 1.8V IOVCC.
2025-11-25 14:54:23 +01:00
Vlastimil Slinták
5a18f2f31a Fixed wrong pinout on the 3.5 mm jack
RX signal is on the same pin as PTT on the Kenwood style connector.
This is used by many HT manufacturers, so for example Baofeng programming
cable can be used to connect to the debug UART of LinHT.

Fixes #31
2025-11-25 14:54:23 +01:00
Vlastimil Slinták
6711c0c110 Added 4 decoupling capacitors to the SoM V_SOM pins
Fixes #30
2025-11-25 14:54:23 +01:00
Vlastimil Slinták
db61958958 Removed 22 Ohm resistors on USB data lines
These are not needed as per manufacturer's documentation.
Fixes #25
2025-11-25 14:54:23 +01:00
Wojciech Kaczmarski
32564d867a
Update README.md
removed unnecessary space
2025-09-14 11:06:29 +02:00
Andreas Schmidberger
dc6ed73d73 Added image, flashing and driver docs 2025-08-09 09:28:42 +02:00
Andreas Schmidberger
f784b5a8a6 Fixed color and position 2025-08-09 09:10:02 +02:00
Andreas Schmidberger
8840e3fa0d added viewer-js 2025-08-09 09:10:02 +02:00
Andreas Schmidberger
a7ac1844e1 Added vrml viewer 2025-08-09 09:10:02 +02:00
Andreas Schmidberger
b808110bee moved gzip call 2025-08-09 09:10:02 +02:00
Andreas Schmidberger
ce03a52af7 added vrml-viewer 2025-08-09 09:10:02 +02:00
Andreas Schmidberger
9f44ff04f5 generate .vrml.gz file 2025-08-09 09:10:02 +02:00
Andreas Schmidberger
069e86d921 Update README.md
Added link to the Wiki entry for build environment setup
Added links to yocto layer repos and a short summary
2025-08-06 20:08:39 +02:00
Wojciech Kaczmarski
f891fbeec4 readme update 2025-08-05 20:56:56 +03:00
Wojciech Kaczmarski
ee4920c1d3
Update README.md
eMMC is 32, not 64GB
2025-08-05 12:06:06 +03:00
Vlastimil Slinták
ddb70aa593 Fixed Markdown formatting in README 2025-08-02 09:09:51 +02:00
Vlastimil Slintak
a55d1fbacd
Fixed formatting in README.md 2025-07-31 18:08:47 +02:00
Vlastimil Slinták
8cd713a8b3 Basic Github Actions for the web deploy 2025-07-31 18:14:13 +03:00
Vlastimil Slinták
83a305c57d Added a basic build system for renders, fabrication files and web 2025-07-31 18:14:13 +03:00
Wojciech Kaczmarski
e80deca250 BOM update
- changed the case of 74AHC1G86
- R23 changed to 133k
- pdf render
2025-07-29 20:23:25 +03:00
Vlastimil Slinták
fee98d917e Updated PCB from schematics 2025-07-29 20:23:25 +03:00
Vlastimil Slinták
d80b2bdfc4 Added BOM assigment for most of the parts 2025-07-29 20:23:25 +03:00
Wojciech Kaczmarski
ee584c027a Merge branch 'pcb_logo' 2025-07-29 20:16:22 +03:00
Wojciech Kaczmarski
7dbc1397e9 Reorganized silkscreen text 2025-07-29 17:20:02 +03:00
Vlastimil Slinták
0cb667a9d4 Added M17 logo and authors to the PCB's silkscreen 2025-07-29 15:47:24 +02:00
Wojciech Kaczmarski
5ceb169aa0 added a few more GND vias 2025-07-28 17:09:42 +03:00
Wojciech Kaczmarski
f86341ef56 added GND vias
- updated PDF render
2025-07-28 16:58:25 +03:00
Vlastimil Slinták
cc714a7ebe Fixed board edge and position of 3.5 mm jack
The 3.5 mm jack footprint from the standard KiCAD library had to be
modified. The PCB edge was moved 0.85 mm outward to match the C62
connector and PCB layout.
2025-07-28 16:58:25 +03:00
Vlastimil Slinták
3bd1c8fe0d Fixed PCB-edge/component clearance
Some components were too close to the PCB edge where aluminum heat-sink
is located.
2025-07-28 16:58:25 +03:00
Vlastimil Slinták
103fc45bef Added more GND vias 2025-07-28 16:58:25 +03:00
Vlastimil Slinták
c4f2c3bf8b Added thermal relieves for GND on the THT components
* USB connector
* Volume pot
* 2.5 mm jack
2025-07-28 16:58:25 +03:00
Vlastimil Slinták
0eae68dfae Fixed resistor R48 symbol to "small" version
To keep resistor symbols consistent on the page.
2025-07-28 16:58:25 +03:00
Vlastimil Slinták
74896bcf16 Fixed text about the "mounting holes" 2025-07-28 16:58:25 +03:00
Vlastimil Slinták
b202f16f33 Swapped signal names RF_IN and RF_OUT 2025-07-28 16:58:25 +03:00
Vlastimil Slinták
dccf54a41e Completed PCB layout
* DRC without warnings or errors.
* All traces connected.
2025-07-28 16:58:25 +03:00
Vlastimil Slinták
f18ea484e8 Changed MCLK audio signal for the 12.288 MHz oscillator 2025-07-28 16:58:25 +03:00
Vlastimil Slinták
8b0d309ee9 Added series resistors to the DEBUG_DEV_* signals 2025-07-28 16:58:25 +03:00
Vlastimil Slinták
7465b693e3 Fixed footprint of the battery connector
Mounting holes were inside copper pad.
2025-07-28 16:58:25 +03:00
Vlastimil Slinták
9f22b15a0d Added DRC exclusions and modified constrains 2025-07-28 16:58:25 +03:00
Vlastimil Slinták
e367ab4c4b Removed copper rectangle from the SMA footprint 2025-07-28 16:58:25 +03:00
Vlastimil Slinták
a9584d65b5 Fixed footprint of the MCM-iMX93
The pads had "paste" enabled but with negative offset making the paste
layer zero size. Real "paste" was defined as a custom polygon.

This commit fixes issues, leaving paste layer as per manufacturer's
specification.
2025-07-28 16:58:25 +03:00
Vlastimil Slinták
f369475c96 Fixed project constrains 2025-07-28 16:58:25 +03:00
Vlastimil Slinták
e4cd38725a Fixed pinout of the Kenwood connector and added RX/TX for debug 2025-07-28 16:58:25 +03:00
Vlastimil Slinták
a7f825d046 Changed keyboard tracks to narrower netclass for easier layout 2025-07-28 16:58:25 +03:00
Vlastimil Slinták
a602204754 Connected battery voltage to the SoM ADC input 2025-07-28 16:58:25 +03:00
Vlastimil Slinták
42cd1cb314 Removed two bottom mounting holes 2025-07-28 16:58:25 +03:00
Wojciech Kaczmarski
b8413e6fb0 tiny changes
- rearranged the `SWITCH_ON_OFF` connection on the root page slightly
- updated the date
- updated PDF render
2025-07-28 16:58:25 +03:00
Vlastimil Slinták
7ada320776 Changed resistor value for the volume to 15 kΩ 2025-07-28 16:58:25 +03:00
Vlastimil Slinták
d7ef1a6732 Changed LED power from 5V to 3.3 V and fixed their resistor values 2025-07-28 16:58:25 +03:00
Vlastimil Slinták
09441c8ca0 Assigned RF_SW_CTRL signal to the pin 104 on SoM 2025-07-28 16:58:25 +03:00
Vlastimil Slinták
00801c7ce1 Swapped RF inputs of the BGS12P2L6 for better PCB routing 2025-07-28 16:58:25 +03:00
Vlastimil Slinták
f183342342 Fixed 3D model path of the QFN50P500 footprint 2025-07-28 16:58:25 +03:00
Vlastimil Slinták
44fb812e66 Changed footprint of the C16 capacitor from 1206 to 0402 2025-07-28 16:58:25 +03:00
Vlastimil Slinták
b86fc3095c Added USB netclass to the USB traces near SoM 2025-07-28 16:58:25 +03:00
Vlastimil Slinták
a6525bceab Fixed minor schematic issues 2025-07-28 16:58:25 +03:00
Vlastimil Slinták
1e12e05291 Fixed value of the C39 capacitor to 10u from 100n 2025-07-28 16:58:25 +03:00
Vlastimil Slinták
c38361edcb Changed R1-R4 footprints from 0603 to 0402
Original footprint was a mistake.
2025-07-28 16:58:25 +03:00
Vlastimil Slinták
49f5e1c6f7 Fixed majority of ERC warnings and errors 2025-07-28 16:58:25 +03:00
Vlastimil Slinták
3f6bbc1195 Fixed MCM-iMX93 symbol, added pads G25-G28 2025-07-28 16:58:25 +03:00
Vlastimil Slinták
50ef9b7905 Added silkscreen and courtyard to the TSLP footprint 2025-07-28 16:58:25 +03:00
Vlastimil Slinták
f2776fc459 Assigned missing footprints 2025-07-28 16:58:25 +03:00
Vlastimil Slinták
12bf07995f Connected display pins 6-12 and 14 to the GND
Based on the original Retevis C62 PCB, these pins are grounded.
2025-07-28 16:58:25 +03:00
55 changed files with 176872 additions and 31951 deletions

62
.github/workflows/main.yml vendored Normal file
View file

@ -0,0 +1,62 @@
name: CI
on:
push:
branches: [ main ]
jobs:
build-web:
runs-on: ubuntu-latest
container:
image: ghcr.io/slintak/kicad-builder:latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Build Everything
run: make
- name: Upload Fabrication Files
uses: actions/upload-artifact@v4
with:
name: build-fabrication
path: build/web/files/
if-no-files-found: error
- name: Upload Web Files
uses: actions/upload-artifact@v4
with:
name: build-web
path: build/web/
if-no-files-found: error
# Deploy job
deploy:
# Add a dependency to the build job
needs: [build-web]
# Grant GITHUB_TOKEN the permissions required to make a Pages deployment
permissions:
pages: write # to deploy to Pages
id-token: write # to verify the deployment originates from an appropriate source
# Deploy to the github-pages environment
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
# Specify runner + deployment step
runs-on: ubuntu-latest
steps:
- name: Get Web Files
uses: actions/download-artifact@v4
with:
name: build-web
path: build/
- name: Upload Pages Artifact
uses: actions/upload-pages-artifact@v3
with:
path: build/
- name: Deploy to GitHub Pages
id: deployment
uses: actions/deploy-pages@v4

65
.gitignore vendored
View file

@ -1,31 +1,34 @@
# For PCBs designed using KiCad: http://www.kicad-pcb.org/
# Format documentation: http://kicad-pcb.org/help/file-formats/
# Temporary files
*.000
*.bak
*.bck
*.kicad_pcb-bak
*.kicad_sch-bak
*-backups
*.kicad_prl
*.sch-bak
*~
_autosave-*
*.tmp
*-save.pro
*-save.kicad_pcb
*.lck
fp-info-cache
\#auto_saved_files\#
# Netlist files (exported from Eeschema)
*.net
# Autorouter files (exported from Pcbnew)
*.dsn
*.ses
# Exported BOM files
*.xml
#*.csv
# For PCBs designed using KiCad: http://www.kicad-pcb.org/
# Format documentation: http://kicad-pcb.org/help/file-formats/
# Temporary files
*.000
*.bak
*.bck
*.kicad_pcb-bak
*.kicad_sch-bak
*-backups
*.kicad_prl
*.sch-bak
*~
_autosave-*
*.tmp
*-save.pro
*-save.kicad_pcb
*.lck
fp-info-cache
\#auto_saved_files\#
# Netlist files (exported from Eeschema)
*.net
# Autorouter files (exported from Pcbnew)
*.dsn
*.ses
# Exported BOM files
*.xml
#*.csv
# Build directory
build/

1
CNAME Normal file
View file

@ -0,0 +1 @@
linht-radio.eu

89
Makefile Normal file
View file

@ -0,0 +1,89 @@
.PHONY: all clean
BOARD = linht-hw
FABHOUSES = jlcpcb pcbway
# Markdown processing
MARKDOWN_SRC := $(wildcard *.md)
MARKDOWN_HTML := $(patsubst %.md, build/%.html, $(MARKDOWN_SRC))
MARKDOWN_EXT := tables fenced_code codehilite attr_list def_list admonition toc
MARKDOWN_ARGS := $(foreach e,$(MARKDOWN_EXT),-x $(e))
# Copy templates
TEMPLATE_SRC_DIR := present/template
TEMPLATE_BUILD_DIR := build
TEMPLATE_OUTPUT_DIR := build/web
TEMPLATE_RENDER_DIR := $(TEMPLATE_OUTPUT_DIR)/imgs
TEMPLATE_FAB_DIR := $(TEMPLATE_OUTPUT_DIR)/files
TEMPLATE_J2 := $(wildcard $(TEMPLATE_SRC_DIR)/*.html.j2)
TEMPLATE_JSON := $(wildcard $(TEMPLATE_SRC_DIR)/*.json)
COPIED_J2 := $(patsubst $(TEMPLATE_SRC_DIR)/%, $(TEMPLATE_BUILD_DIR)/%, $(TEMPLATE_J2))
COPIED_JSON := $(patsubst $(TEMPLATE_SRC_DIR)/%, $(TEMPLATE_BUILD_DIR)/%, $(TEMPLATE_JSON))
RENDERED_HTML := $(patsubst build/%.html.j2, build/web/%.html, $(COPIED_J2))
RENDER_ARGS := --preset follow_pcb_editor --background transparent --quality high -w 1440 -h 1080
STATIC_DIRS := $(shell find present/template -mindepth 1 -maxdepth 1 -type d)
GERBER_ZIPS = $(foreach fab,$(FABHOUSES),$(TEMPLATE_FAB_DIR)/gerbers_$(fab).zip)
all: render models fabrication web
web: $(MARKDOWN_HTML) $(COPIED_J2) $(COPIED_JSON) $(RENDERED_HTML)
fabrication: $(TEMPLATE_BUILD_DIR)/panel/$(BOARD)_panel.kicad_pcb $(BOARD).kicad_sch $(GERBER_ZIPS)
@mkdir -p $(TEMPLATE_FAB_DIR)
kicad-cli sch export pdf $(word 2,$^) -o $(TEMPLATE_FAB_DIR)/$(BOARD)_schematic.pdf
kicad-cli sch export pdf -b -n -o $(TEMPLATE_FAB_DIR)/$(BOARD)_schematic_bw.pdf $(word 2,$^)
kicad-cli sch export python-bom $(word 2,$^) -o $(TEMPLATE_FAB_DIR)/$(BOARD)_bom.xml
xsltproc -o $(TEMPLATE_FAB_DIR)/$(BOARD)_bom.csv present/bom2grouped_csv_jlcpcb.xsl $(TEMPLATE_FAB_DIR)/$(BOARD)_bom.xml
#
kicad-cli pcb export pos $< --side both --format csv --units mm -o $(TEMPLATE_FAB_DIR)/$(BOARD)_pos.csv
kicad-cli pcb export pos $< --side both --format ascii --units mm -o $(TEMPLATE_FAB_DIR)/$(BOARD)_pos.txt
sed -e '1 s/Ref/Designator/' -e '1 s/PosX/Mid X/' -e '1 s/PosY/Mid Y/' -e '1 s/Rot/Rotation/' -e '1 s/Side/Layer/' $(TEMPLATE_FAB_DIR)/$(BOARD)_pos.csv > $(TEMPLATE_FAB_DIR)/$(BOARD)_pos_jlcpcb.csv
models: $(BOARD).kicad_pcb
kicad-cli pcb export step --subst-models $< -o $(TEMPLATE_FAB_DIR)/$(BOARD)_model.step ; \
rc=$$?; if [ $$rc -ne 0 ] && [ $$rc -ne 2 ]; then exit $$rc; fi
kicad-cli pcb export vrml $< -o $(TEMPLATE_FAB_DIR)/$(BOARD)_model.vrml
@gzip -c $(TEMPLATE_FAB_DIR)/$(BOARD)_model.vrml > $(TEMPLATE_FAB_DIR)/$(BOARD)_model.vrml.gz
@xz -f $(TEMPLATE_FAB_DIR)/$(BOARD)_model.step
@xz -f $(TEMPLATE_FAB_DIR)/$(BOARD)_model.vrml
@touch $(TEMPLATE_FAB_DIR)
render: $(BOARD).kicad_pcb
@mkdir -p $(TEMPLATE_RENDER_DIR)
kicad-cli pcb render $(RENDER_ARGS) --side top -o $(TEMPLATE_RENDER_DIR)/$(BOARD)-front.png $^
kicad-cli pcb render $(RENDER_ARGS) --side bottom -o $(TEMPLATE_RENDER_DIR)/$(BOARD)-back.png $^
kicad-cli pcb render $(RENDER_ARGS) --side top --rotate "315,0,315" -o $(TEMPLATE_RENDER_DIR)/$(BOARD)-preview.png $^
$(TEMPLATE_FAB_DIR)/gerbers_%.zip: $(TEMPLATE_BUILD_DIR)/panel/$(BOARD)_panel.kicad_pcb
@mkdir -p $(TEMPLATE_FAB_DIR)
kikit fab $* --no-drc $< $(TEMPLATE_BUILD_DIR)/fab_$*
@cp $(TEMPLATE_BUILD_DIR)/fab_$*/gerbers.zip $@
$(TEMPLATE_BUILD_DIR)/panel/$(BOARD)_panel.kicad_pcb: $(BOARD).kicad_pcb
@mkdir -p $(TEMPLATE_BUILD_DIR)/panel
kikit panelize -p ./panel.json $< $@
# Convert .md → build/.html using python-markdown
build/%.html: %.md
@mkdir -p build
python3 -m markdown $(MARKDOWN_ARGS) $< > $@
build/%.html.j2: present/template/%.html.j2
@mkdir -p build
@cp $< $@
build/%.json: present/template/%.json
@cp $< $@
build/web/%.html: build/%.html.j2 build/%.json build/README.html
@mkdir -p build/web
@rsync -a $(STATIC_DIRS) build/web/
JINJA2_PATH=build jinja2 --format=json -D datetime="$$(date '+%Y-%m-%d %H:%M UTC')" $< build/$*.json -o $@
clean:
rm -rf build

342
README.md
View file

@ -1,42 +1,332 @@
[![CC BY-NC-SA 4.0][cc-by-nc-sa-shield]][cc-by-nc-sa]
# LinHT-hw
Open-source hardware, Linux-based, SDR handheld transceiver. [OpenHT](https://github.com/M17-Project/OpenHT-hw) successor with greatly simplified hardware - no FPGAs involved.
This project offers a replacement board for the Retevis C62 radio, greatly expanding its capabilities.
## Hardware
The device uses an [MCM-iMX93](https://www.compulab.com/products/computer-on-modules/mcm-imx93-nxp-i-mx-93-som-smd-system-on-module) System on Module (SoM) running Linux. The RF front-end is based on the [Semtech SX1255](https://www.semtech.com/products/wireless-rf/lora-core/sx1255). The chip is used as a complete IQ modulator/demodulator, allowing for true all-mode support.
**Open-source, Linux-based, SDR handheld transceiver**
### Resources
**CPU:**
- Dual-core ARM Cortex-A55 @ 1.7GHz
- ARM Cortex-M33 coprocessor @ 250MHz
- Floating Point Unit
- ARM Ethos U-65 microNPU (Neural Processing Unit with Tensor Flow Lite support)
[![CC BY-NC-SA 4.0][cc-by-nc-sa-shield]][cc-by-nc-sa]
![GitHub Actions](https://github.com/M17-Project/LinHT-hw/actions/workflows/main.yml/badge.svg)
[![Docs](https://img.shields.io/badge/docs-GitHub%20Pages-blue)](https://m17-project.github.io/LinHT-hw/)
![Status](https://img.shields.io/badge/status-active%20development-orange)
**Memory:**
- 2GB LPDDR4
- 64GB eMMC
## What is LinHT?
**RF:**
- 500kHz bandwidth complete IQ transceiver
**LinHT** is an open-source handheld **software-defined radio (SDR) transceiver**
built around a modern Linux System-on-Module and a true IQ RF front-end.
## Software
Developers can use C/C++/Python as well as (or in conjunction with) GNU Radio flowgraphs. Tools such as gcc are built-in. The Linux image will be published later.
It is the **successor of the OpenHT project**, with focus on:
### Supported modes (so far):
* M17 - transmission and reception,
* TETRA - reception only,
* Demo 64QAM transmission at 2Mbps
* simpler and more maintainable hardware,
* no FPGA in the signal path,
* tight integration with Linux, GNU Radio, and modern SDR tooling,
* long-term openness and hackability.
Other modes can be added later (analog FM/AM/SSB, FreeDV, APRS, etc.).
LinHT is developed by members of the [**M17 community**](https://m17project.org) and is intended primarily
for **radio amateurs, SDR experimenters, and developers**.
This repository contains the **hardware design files** for LinHT.
> ⚠️ **Important**<br>
> LinHT is **not a consumer product** yet.<br>
> It is an experimental, community-driven open hardware project.
## Key ideas behind LinHT
* **True SDR**: IQ baseband access, not FM-only
* **Linux-first**: no microcontroller firmware lock-in
* **No FPGA**: easier development, lower entry barrier
* **Open everything**: hardware, software, toolchains
* **Hackable handheld**: not just another black box walkie-talkie
## Hardware overview
LinHT is built around a Linux SoM and a wideband IQ transceiver.
* **System on Module:** [CompuLab MCM-iMX93](https://www.compulab.com/products/computer-on-modules/mcm-imx93-nxp-i-mx-93-som-smd-system-on-module)
* **RF front-end:** [Semtech SX1255](https://www.semtech.com/products/wireless-rf/lora-core/sx1255)
**CPU**
* Dual-core ARM Cortex-A55 @ 1.7 GHz
* ARM Cortex-M33 coprocessor @ 250 MHz
* Floating-Point Unit
* ARM Ethos-U65 microNPU (TensorFlow Lite support)
**Memory**
* 2 GB LPDDR4
* 32 GB eMMC
### RF capabilities (revision B target)
| Parameter | Value |
| --------------- | ------------------------------------------------------------- |
| Frequency range | **UHF band** (exact limits depend on PA/filter configuration) |
| Bandwidth | up to **500 kHz IQ** |
| Architecture | Direct IQ (complex baseband) |
| TX power | up to **~5 W** (revision B, internal PA) |
| RX features | Programmable attenuation, gain control |
| Modes | FM, SSB, M17, experimental digital modes |
> 📌 **UHF only!**<br>
> VHF support is frequently requested, but **is not planned for revision B**.
> The current priority is **stability, manufacturability, and software maturity**.
## Software overview
LinHT runs a **custom Yocto-based Linux distribution** designed for SDR and
embedded radio use.
### Supported development models
* C / C++
* Python
* GNU Radio flowgraphs
* SoapySDR
* Custom DSP pipelines
Standard Linux tools (gcc, gdb, strace, etc.) are available directly on the device.
### Supported modes (current status)
* ✅ FM (TX/RX) with pre-/de-emphasis and CTCSS
* ✅ SSB (TX/RX)
* ✅ **M17** (TX/RX)
* ✅ TETRA (RX only)
* 🧪 Experimental 64-QAM @ 2 Mbps
* ⏳ Planned / possible: FreeDV, APRS, packet radio, custom modulations
## Hardware revisions
LinHT is developed iteratively. Each revision serves a specific purpose.
| Revision | Status | Purpose |
| ---------- | --------------------------------------------- | -------------------------------------------- |
| **Rev. A** | <span style="color:green">Completed</span> | Early prototype, architecture validation |
| **Rev. B** | <span style="color:orange">In progress</span> | Feature-complete, manufacturing-ready design |
### Revision A
* Manufactured earlier in 2025
* **4 assembled prototype units**
* Used to:
* validate the Linux + SDR architecture,
* bring up SX1255 under Linux,
* start software and DSP development,
* identify mechanical, RF, and power issues
* Revision A was **never intended for production**.
### Revision B (current focus)
* Incorporates lessons learned from Rev. A
* Major improvements:
* redesigned power supply
* internal PA (~5 W)
* improved RF path and attenuation for RX
* cleaner layout and grounding
* **Not yet released for manufacturing**
> 📅 **February 2026 status**<br>
> A test batch of Revision B PCBs is currently being assembled.<br>
> Please check this page later for updates.
## Repository contents
This repository contains:
* KiCad 9.0 project files
* Schematics
* PCB layout
* Manufacturing outputs (generated automatically)
Gerbers, BOM, pick-and-place files, and schematics are:
* generated automatically via **GitHub Actions**
* published on [**GitHub Pages**](https://m17-project.github.io/LinHT-hw/)
## Required hardware (donor radio)
LinHT is designed as a **replacement mainboard** for the
**Retevis C62 handheld radio**. You will need:
* a Retevis C62 (donor device)
* its:
* enclosure
* display
* keypad
* battery
* connectors
More details (Rev. A focused, older but useful): [LinHT Open SDR Handheld For Radio Amateurs](https://uart.cz/2811/linht-open-sdr-handheld-for-radio-amateurs/)
## Firmware images
Prebuilt Linux images for LinHT are available here:
[https://m17project.org/linht/](https://m17project.org/linht/)
Documentation:
* [https://wiki.m17foundation.org/index.php?title=LinHT_Image_Build](https://wiki.m17foundation.org/index.php?title=LinHT_Image_Build)
Yocto layers:
* [meta-linht-hardware](https://github.com/M17-Project/meta-linht-hardware)
* [meta-linht-software](https://github.com/M17-Project/meta-linht-software)
* [meta-linht-sdr](https://github.com/M17-Project/meta-linht-sdr)
## Flashing the device
Flashing is done using **NXP Universal Update Utility (uuu)**.
1. Boot LinHT into flash mode
(hold the secondary side button while powering on)
2. Flash using:
```bash
uuu -v -b emmc_all imx-boot-mcm-imx93-sd.bin-flash_singleboot linht-image-mcm-imx93.rootfs.wic.zst
```
Tool download: [mfgtools](https://github.com/nxp-imx/mfgtools/releases)
To access LinHTs USB network device on Windows, install the **RNDIS driver**: [microsoft.com USB RNDIS Gadget](https://www.catalog.update.microsoft.com/Search.aspx?q=USB%20RNDIS%20Gadget)
## Documentation & Wiki
Primary documentation lives on the **M17 Wiki**:
* [LinHT overview](https://wiki.m17foundation.org/index.php?title=LinHT)
* [Image build instructions](https://wiki.m17foundation.org/index.php?title=LinHT_Image_Build)
* [Image usage & manual](https://wiki.m17foundation.org/index.php?title=LinHT_Image_Manual)
## Contributing
LinHT is a **community project** and contributions are welcome. The best way to
get involved is [**joining the M17 Discord**](https://discord.gg/4brEP8wwVp), look for channel: **#linht**.
This is the preferred place to:
* discuss ideas,
* coordinate work,
* ask questions,
* avoid duplicated effort.
Other ways to contribute:
* Open issues in this repository (design notes, questions, suggestions)
* Help on the **software side** (especially welcome):
* Yocto recipes
* device tree improvements
* CI / GitHub Actions
* build automation
* Explore and extend [LinHT-utils](https://github.com/M17-Project/LinHT-utils)
If youre an experienced **embedded Linux or SDR developer**, we would love
your help.
## FAQ Frequently Asked Questions
### ❓ Where can I buy LinHT hardware?
You currently **cannot buy LinHT as a product**. To build LinHT, you need to:
* manufacture the PCB yourself (using provided Gerbers),
* source components,
* assemble the board,
* use a **Retevis C62** handheld radio as a donor for:
* enclosure,
* display,
* keypad,
* battery,
* connectors.
This may change in the future.
### ❓ Is LinHT suitable for everyday radio use?
Not yet. And maybe never in the "consumer radio" sense. LinHT is currently best
suited for:
* developers,
* radio amateurs comfortable with Linux,
* SDR experimenters,
* people who enjoy building and debugging hardware.
You should **not** expect:
* plug-and-play user experience,
* polished UI,
* certification,
* warranty,
* commercial-grade RF compliance.
### ❓ Does LinHT support VHF?
**No, not in revision B.**
VHF support is a **frequently requested feature**, but it is
**not planned for revision B**, adding another band significantly increases:
* RF complexity,
* filtering requirements,
* PCB area,
* development time.
Right now, the project is focused on:
* stabilizing the hardware,
* finishing revision B,
* improving software and DSP,
* validating the new power amplifier and RF chain.
VHF is **not ruled out** for future revisions, but it is
**not a current priority**.
### ❓ Is LinHT certified / legal to transmit with?
LinHT itself is **not certified**. Responsibility lies with the builder and
the operator. LinHT is intended primarily for:
* amateur radio use,
* experimental licenses,
* lab and research environments.
Always follow your local radio regulations.
### ❓ I want to help. Where do I start?
The best starting point is **discussion**. Join the M17 Discord, channel: **#linht**.
Good ways to contribute:
* software development (Yocto, drivers, tooling),
* testing and feedback,
* documentation,
* RF/DSP experiments,
* CI and automation improvements.
If youre unsure where to help - just ask.
## License
This work is licensed under a
[Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License][cc-by-nc-sa].
This project is licensed under: **Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International**
You are free to:
* share
* adapt
Under the conditions:
* attribution
* non-commercial use
* share alike
[![CC BY-NC-SA 4.0][cc-by-nc-sa-image]][cc-by-nc-sa]
## Acknowledgements
LinHT is developed by the **M17 community**, with contributions from many individuals.
Thanks to everyone testing prototypes, reviewing schematics, writing software, and sharing ideas.
[cc-by-nc-sa]: http://creativecommons.org/licenses/by-nc-sa/4.0/
[cc-by-nc-sa-image]: https://licensebuttons.net/l/by-nc-sa/4.0/88x31.png
[cc-by-nc-sa-shield]: https://img.shields.io/badge/License-CC%20BY--NC--SA%204.0-lightgrey.svg

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

4909
gnss.kicad_sch Normal file

File diff suppressed because it is too large Load diff

View file

@ -6,8 +6,8 @@
(paper "A4")
(title_block
(title "LinHT - Linux-based SDR handheld transceiver")
(date "21 July 2025")
(rev "A")
(date "2025-12-03")
(rev "B")
(company "M17 Foundation")
(comment 1 "Author: Wojciech SP5WWP, Andy OE3ANC, Vlastimil OK5VAS")
)
@ -838,6 +838,7 @@
)
(symbol "Transistor_FET:BSS138"
(pin_names
(offset 0)
(hide yes)
)
(exclude_from_sim no)
@ -1053,7 +1054,7 @@
)
(polyline
(pts
(xy 2.794 0.508) (xy 2.921 0.381) (xy 3.683 0.381) (xy 3.81 0.254)
(xy 2.921 0.381) (xy 3.683 0.381)
)
(stroke
(width 0)
@ -1467,6 +1468,15 @@
)
(uuid "3d61a873-7837-4c5d-a885-5b7af28670ff")
)
(bus_entry
(at 138.43 80.01)
(size -2.54 2.54)
(stroke
(width 0)
(type default)
)
(uuid "41ce0292-28c0-492d-863e-f0ed99bdf8ac")
)
(bus_entry
(at 138.43 82.55)
(size -2.54 2.54)
@ -1485,15 +1495,6 @@
)
(uuid "4e3833e6-475a-48f6-8dbb-046f0fa6eb97")
)
(bus_entry
(at 138.43 80.01)
(size -2.54 2.54)
(stroke
(width 0)
(type default)
)
(uuid "73c54284-2c21-4bed-8a2d-234efdb6a7e8")
)
(bus_entry
(at 138.43 92.71)
(size -2.54 2.54)
@ -1581,16 +1582,6 @@
)
(uuid "122819c6-f57d-42e4-abbf-51c0e86e55d1")
)
(bus
(pts
(xy 138.43 82.55) (xy 138.43 85.09)
)
(stroke
(width 0)
(type default)
)
(uuid "16b6d971-e8fc-4b46-8c01-e6df6ca94ae8")
)
(wire
(pts
(xy 130.81 119.38) (xy 130.81 120.65)
@ -1741,6 +1732,16 @@
)
(uuid "53ea28b7-80bc-4f92-9faf-6cc571742bd0")
)
(wire
(pts
(xy 128.27 82.55) (xy 135.89 82.55)
)
(stroke
(width 0)
(type default)
)
(uuid "5654ea1f-bb19-4afd-8697-62de48a4be10")
)
(wire
(pts
(xy 60.96 100.33) (xy 63.5 100.33)
@ -1811,16 +1812,6 @@
)
(uuid "83ed8917-06db-485c-b66f-1a27951f2443")
)
(wire
(pts
(xy 128.27 82.55) (xy 135.89 82.55)
)
(stroke
(width 0)
(type default)
)
(uuid "8641ccf9-16fb-4d97-a919-b7db1190b882")
)
(bus
(pts
(xy 138.43 90.17) (xy 138.43 92.71)
@ -1961,6 +1952,16 @@
)
(uuid "e69e6356-8827-4a13-b56f-a122a8b708c2")
)
(bus
(pts
(xy 138.43 82.55) (xy 138.43 85.09)
)
(stroke
(width 0)
(type default)
)
(uuid "eb86925e-d28a-4d79-926d-4d94499805b7")
)
(wire
(pts
(xy 154.94 77.47) (xy 154.94 80.01)
@ -2041,15 +2042,15 @@
)
(uuid "38fb9ac0-7ee6-471f-9128-5926bf8601e8")
)
(label "{KBD}"
(at 138.43 82.55 0)
(label "D9"
(at 132.08 82.55 0)
(effects
(font
(size 1.27 1.27)
)
(justify left bottom)
)
(uuid "442dae26-0518-449c-aa02-1b0930091367")
(uuid "5d6fd1a5-7fc0-4ccb-9b8b-2ae728bc66a6")
)
(label "D8"
(at 132.08 85.09 0)
@ -2081,16 +2082,6 @@
)
(uuid "c96bc0d3-abe1-4c8e-a405-dfea01741ef8")
)
(label "D9"
(at 132.08 82.55 0)
(effects
(font
(size 1.27 1.27)
)
(justify left bottom)
)
(uuid "cdcf4a88-e9eb-437d-ad97-9fed97db680f")
)
(label "D3"
(at 132.08 97.79 0)
(effects
@ -2155,7 +2146,7 @@
)
(uuid "ae9101f6-8046-4193-b280-b7540523b492")
)
(hierarchical_label "KBD"
(hierarchical_label "{KBD}"
(shape bidirectional)
(at 140.97 102.87 0)
(effects
@ -2288,6 +2279,42 @@
(hide yes)
)
)
(property "LCSC" "C25792"
(at 165.1 101.6 0)
(effects
(font
(size 1.27 1.27)
)
(hide yes)
)
)
(property "PN" ""
(at 165.1 101.6 0)
(effects
(font
(size 1.27 1.27)
)
(hide yes)
)
)
(property "LCSC Part" ""
(at 165.1 101.6 0)
(effects
(font
(size 1.27 1.27)
)
(hide yes)
)
)
(property "MPN" "0402WGF4702TCE"
(at 165.1 101.6 0)
(effects
(font
(size 1.27 1.27)
)
(hide yes)
)
)
(pin "2"
(uuid "ac3ca4e9-33e3-4e9a-8e7e-f234f122d2ae")
)
@ -2423,6 +2450,15 @@
(hide yes)
)
)
(property "LCSC Part" ""
(at 55.88 114.3 0)
(effects
(font
(size 1.27 1.27)
)
(hide yes)
)
)
(pin "1"
(uuid "27a69361-e298-497b-b45d-512bd0954e22")
)
@ -2488,6 +2524,15 @@
(hide yes)
)
)
(property "LCSC Part" ""
(at 55.88 118.11 0)
(effects
(font
(size 1.27 1.27)
)
(hide yes)
)
)
(pin "1"
(uuid "b49e1642-5ab3-4a68-88ce-fcb095bd1e53")
)
@ -2555,6 +2600,42 @@
(hide yes)
)
)
(property "LCSC" "C542965"
(at 154.94 83.82 0)
(effects
(font
(size 1.27 1.27)
)
(hide yes)
)
)
(property "PN" ""
(at 154.94 83.82 0)
(effects
(font
(size 1.27 1.27)
)
(hide yes)
)
)
(property "LCSC Part" ""
(at 154.94 83.82 0)
(effects
(font
(size 1.27 1.27)
)
(hide yes)
)
)
(property "MPN" "ERJPA2F1500X"
(at 154.94 83.82 0)
(effects
(font
(size 1.27 1.27)
)
(hide yes)
)
)
(pin "1"
(uuid "2259c10c-90fb-4862-9168-59927e8dd43f")
)
@ -2825,6 +2906,42 @@
(hide yes)
)
)
(property "LCSC" "C25076"
(at 171.45 95.25 90)
(effects
(font
(size 1.27 1.27)
)
(hide yes)
)
)
(property "PN" ""
(at 171.45 95.25 90)
(effects
(font
(size 1.27 1.27)
)
(hide yes)
)
)
(property "LCSC Part" ""
(at 171.45 95.25 90)
(effects
(font
(size 1.27 1.27)
)
(hide yes)
)
)
(property "MPN" "0402WGF1000TCE"
(at 171.45 95.25 90)
(effects
(font
(size 1.27 1.27)
)
(hide yes)
)
)
(pin "1"
(uuid "48d5333e-0bea-4f19-a512-ffff28461cbf")
)
@ -2959,6 +3076,15 @@
(hide yes)
)
)
(property "LCSC Part" ""
(at 55.88 110.49 0)
(effects
(font
(size 1.27 1.27)
)
(hide yes)
)
)
(pin "1"
(uuid "527fae63-5afd-4eea-88b1-a2254f7f0b8a")
)
@ -3024,6 +3150,15 @@
(hide yes)
)
)
(property "LCSC Part" ""
(at 55.88 100.33 0)
(effects
(font
(size 1.27 1.27)
)
(hide yes)
)
)
(pin "1"
(uuid "af641070-2291-4f46-a574-0ef525df7fe7")
)
@ -3116,6 +3251,15 @@
(hide yes)
)
)
(property "LCSC Part" ""
(at 123.19 92.71 0)
(effects
(font
(size 1.27 1.27)
)
(hide yes)
)
)
(pin "1"
(uuid "c1fae89d-1cc8-4b69-b6e0-97c447335ffd")
)
@ -3229,6 +3373,15 @@
(hide yes)
)
)
(property "LCSC Part" ""
(at 55.88 104.14 0)
(effects
(font
(size 1.27 1.27)
)
(hide yes)
)
)
(pin "1"
(uuid "ac7ce14b-8f85-48be-aa3f-eaf8bbadfb50")
)
@ -3299,6 +3452,42 @@
(hide yes)
)
)
(property "LCSC" "C40912"
(at 157.48 95.25 0)
(effects
(font
(size 1.27 1.27)
)
(hide yes)
)
)
(property "MPN" "BSS138-7-F"
(at 157.48 95.25 0)
(effects
(font
(size 1.27 1.27)
)
(hide yes)
)
)
(property "PN" "621-BSS138-7-F"
(at 157.48 95.25 0)
(effects
(font
(size 1.27 1.27)
)
(hide yes)
)
)
(property "LCSC Part" ""
(at 157.48 95.25 0)
(effects
(font
(size 1.27 1.27)
)
(hide yes)
)
)
(pin "3"
(uuid "02da6969-4e38-435a-8d88-5c4a60b2828a")
)

File diff suppressed because it is too large Load diff

View file

@ -37,9 +37,9 @@
"other_text_thickness": 0.15,
"other_text_upright": false,
"pads": {
"drill": 0.0,
"height": 4.0,
"width": 4.0
"drill": 0.4,
"height": 2.2,
"width": 1.2
},
"silk_line_width": 0.1,
"silk_text_italic": false,
@ -48,7 +48,7 @@
"silk_text_thickness": 0.1,
"silk_text_upright": false,
"zones": {
"min_clearance": 0.25
"min_clearance": 0.3
}
},
"diff_pair_dimensions": [
@ -58,7 +58,16 @@
"width": 0.0
}
],
"drc_exclusions": [],
"drc_exclusions": [
[
"clearance|108775500|119310000|02a1131b-98f8-4e77-8f06-f91a9c7aba4e|17b7483f-1cbe-4de4-ba83-99e1a907f329",
""
],
[
"clearance|110455000|119230500|74cf3d9e-d74b-46d4-83e5-241b865105e9|074758df-e958-4e73-be7f-4dfd6804f3ff",
""
]
],
"meta": {
"version": 2
},
@ -66,7 +75,7 @@
"annular_width": "error",
"clearance": "error",
"connection_width": "warning",
"copper_edge_clearance": "error",
"copper_edge_clearance": "ignore",
"copper_sliver": "warning",
"courtyards_overlap": "error",
"creepage": "error",
@ -79,7 +88,7 @@
"footprint_filters_mismatch": "ignore",
"footprint_symbol_mismatch": "warning",
"footprint_type_mismatch": "ignore",
"hole_clearance": "error",
"hole_clearance": "ignore",
"hole_to_hole": "warning",
"holes_co_located": "warning",
"invalid_outline": "error",
@ -100,8 +109,8 @@
"padstack": "warning",
"pth_inside_courtyard": "ignore",
"shorting_items": "error",
"silk_edge_clearance": "warning",
"silk_over_copper": "warning",
"silk_edge_clearance": "ignore",
"silk_over_copper": "ignore",
"silk_overlap": "warning",
"skew_out_of_range": "error",
"solder_mask_bridge": "error",
@ -125,9 +134,9 @@
"max_error": 0.005,
"min_clearance": 0.0,
"min_connection": 0.0,
"min_copper_edge_clearance": 0.25,
"min_copper_edge_clearance": 0.2,
"min_groove_width": 0.0,
"min_hole_clearance": 0.25,
"min_hole_clearance": 0.2,
"min_hole_to_hole": 0.25,
"min_microvia_diameter": 0.2,
"min_microvia_drill": 0.1,
@ -135,7 +144,7 @@
"min_silk_clearance": 0.0,
"min_text_height": 0.6,
"min_text_thickness": 0.08,
"min_through_hole_diameter": 0.3,
"min_through_hole_diameter": 0.2,
"min_track_width": 0.15,
"min_via_annular_width": 0.15,
"min_via_diameter": 0.3,
@ -453,6 +462,7 @@
"single_global_label": "ignore",
"unannotated": "error",
"unconnected_wire_endpoint": "warning",
"undefined_netclass": "error",
"unit_value_mismatch": "error",
"unresolved_variable": "error",
"wire_dangling": "error"
@ -470,7 +480,7 @@
"classes": [
{
"bus_width": 12,
"clearance": 0.2,
"clearance": 0.11,
"diff_pair_gap": 0.25,
"diff_pair_via_gap": 0.25,
"diff_pair_width": 0.2,
@ -488,11 +498,21 @@
},
{
"clearance": 0.1,
"name": "RF",
"name": "Narrow",
"pcb_color": "rgba(0, 0, 0, 0.000)",
"priority": 0,
"schematic_color": "rgba(0, 0, 0, 0.000)",
"track_width": 0.16,
"via_diameter": 0.6,
"via_drill": 0.3
},
{
"clearance": 0.17,
"name": "RF",
"pcb_color": "rgba(0, 0, 0, 0.000)",
"priority": 1,
"schematic_color": "rgb(132, 0, 132)",
"track_width": 0.234,
"track_width": 0.2,
"via_diameter": 0.6,
"via_drill": 0.3
},
@ -502,7 +522,7 @@
"diff_pair_width": 0.165,
"name": "USB",
"pcb_color": "rgba(0, 0, 0, 0.000)",
"priority": 1,
"priority": 2,
"schematic_color": "rgba(0, 0, 0, 0.000)",
"track_width": 0.165,
"via_diameter": 0.6,
@ -526,12 +546,30 @@
"/Connectors/xUDP": [
"USB"
],
"/RF/ATT_IN_OUT": [
"RF"
],
"/RF/RF_IN": [
"RF"
],
"/RF/RF_IN_ATT": [
"RF"
],
"/RF/RF_OUT": [
"RF"
],
"Net-(C52-Pad2)": [
"RF"
],
"Net-(C54-Pad2)": [
"RF"
],
"Net-(C55-Pad1)": [
"RF"
],
"Net-(C56-Pad2)": [
"RF"
],
"Net-(FL1-IN)": [
"RF"
],
@ -544,14 +582,45 @@
"Net-(IC1-RFO_P)": [
"RF"
],
"Net-(U1-USB1_DN)": [
"USB"
],
"Net-(U1-USB1_DP)": [
"USB"
],
"Net-(U2-RF_IN)": [
"RF"
],
"Net-(U2-RF_OUT_1)": [
"RF"
],
"Net-(U2-RF_OUT_2)": [
"RF"
],
"Net-(U9-RF1)": [
"RF"
],
"Net-(U9-RF2)": [
"RF"
],
"Net-(U9-RF3)": [
"RF"
]
},
"netclass_patterns": []
"netclass_patterns": [
{
"netclass": "Narrow",
"pattern": "/Keyboard/D."
},
{
"netclass": "Narrow",
"pattern": "GND"
},
{
"netclass": "Default",
"pattern": ""
}
]
},
"pcbnew": {
"last_paths": {
@ -691,11 +760,35 @@
"label": "Sim.Pins",
"name": "Sim.Pins",
"show": false
},
{
"group_by": false,
"label": "LCSC",
"name": "LCSC",
"show": true
},
{
"group_by": false,
"label": "LCSC Part",
"name": "LCSC Part",
"show": false
},
{
"group_by": false,
"label": "Sim.Device",
"name": "Sim.Device",
"show": false
},
{
"group_by": false,
"label": "MP",
"name": "MP",
"show": false
}
],
"filter_string": "",
"group_symbols": true,
"include_excluded_from_bom": true,
"include_excluded_from_bom": false,
"name": "",
"sort_asc": true,
"sort_field": "Reference"
@ -772,6 +865,10 @@
[
"5f168690-b6ac-4b3d-aad0-4e97277dc85d",
"Connectors"
],
[
"0b7c638a-0bf4-4df2-9e8c-e9dd4f727b29",
"GNSS"
]
],
"text_variables": {}

File diff suppressed because it is too large Load diff

Binary file not shown.

View file

@ -50,7 +50,7 @@
| | POR_B_3P3 | Pin 46 | | | |
| SAI3_TX_SYNC | GPIO2_IO[26] | Pin 47 | I2S1_WS | 3.3V | MX93_PAD_GPIO_IO26__SAI3_TX_SYNC |
| GPIO2_IO[27] | GPIO2_IO[27] | Pin 48 | | 3.3V | MX93_PAD_GPIO_IO27__GPIO2_IO27 |
| GPIO4_IO[15] | ENET2_MDIO | Pin 49 | | 1.8V | MX93_PAD_ENET2_MDIO__GPIO4_IO15 |
| GPIO4_IO[15] | ENET2_MDIO | Pin 49 | JACK_DETECT | 1.8V | MX93_PAD_ENET2_MDIO__GPIO4_IO15 |
| GPIO4_IO[14] | ENET2_MDC | Pin 50 | | 1.8V | MX93_PAD_ENET2_MDC__GPIO4_IO14 |
| GPIO4_IO[16] | ENET2_TD3 | Pin 51 | KBD_D1 | 1.8V | MX93_PAD_ENET2_TD3__GPIO4_IO16 |
| GPIO4_IO[19] | ENET2_TD0 | Pin 52 | KBD_D2 | 1.8V | MX93_PAD_ENET2_TD0__GPIO4_IO19 |
@ -68,8 +68,8 @@
| UART1_RX | UART1_RX | Pin 64 | UART_RX | | |
| GPIO3_IO[7] | SDIO2_RESET_B | Pin 65 | | 3.3V/1.8V | MX93_PAD_SD2_RESET_B__GPIO3_IO07 |
| SAI1_TX_DATA[0] | SAI1_TX_DATA[0] | Pin 66 | I2S0_DOUT | | MX93_PAD_SAI1_TXD0__SAI1_TX_DATA00 |
| GPIO3_IO[6] | SDIO2_DATA3 | Pin 67 | MIC_GAIN | 3.3V/1.8V | MX93_PAD_SD2_DATA3__GPIO3_IO06 |
| GPIO3_IO[5] | SDIO2_DATA2 | Pin 68 | /MIC_MUTE | 3.3V/1.8V | MX93_PAD_SD2_DATA2__GPIO3_IO05 |
| GPIO3_IO[6] | SDIO2_DATA3 | Pin 67 | | 3.3V/1.8V | MX93_PAD_SD2_DATA3__GPIO3_IO06 |
| GPIO3_IO[5] | SDIO2_DATA2 | Pin 68 | | 3.3V/1.8V | MX93_PAD_SD2_DATA2__GPIO3_IO05 |
| GPIO3_IO[2] | SDIO2_CMD | Pin 69 | | 3.3V/1.8V | MX93_PAD_SD2_CMD__GPIO3_IO02 |
| GPIO3_IO[1] | SDIO2_CLK | Pin 70 | | 3.3V/1.8V | MX93_PAD_SD2_CLK__GPIO3_IO01 |
| | RESERVED | Pin 71 | | | |
@ -84,35 +84,35 @@
| GPIO3_IO[31] | JTAG_TDO | Pin 80 | | 1.8V | MX93_PAD_DAP_TDO_TRACESWO__GPIO3_IO31 |
| GPIO4_IO[6] | ENET1_TX_CTL | Pin 81 | | 1.8V | MX93_PAD_ENET1_TX_CTL__GPIO4_IO06 |
| GPIO4_IO[4] | ENET1_TD1 | Pin 82 | | 1.8V | MX93_PAD_ENET1_TD1__GPIO4_IO04 |
| GPIO4_IO[3] | ENET1_TD2 | Pin 83 | | 1.8V | MX93_PAD_ENET1_TD2__GPIO4_IO03 |
| GPIO4_IO[5] | ENET1_TD0 | Pin 84 | | 1.8V | MX93_PAD_ENET1_TD0__GPIO4_IO05 |
| GPIO4_IO[2] | ENET1_TD3 | Pin 85 | | 1.8V | MX93_PAD_ENET1_TD3__GPIO4_IO02 |
| GPIO4_IO[3] | ENET1_TD2 | Pin 83 | GNSS_RST | 1.8V | MX93_PAD_ENET1_TD2__GPIO4_IO03 |
| GPIO4_IO[5] | ENET1_TD0 | Pin 84 | GNSS_TX | 1.8V | MX93_PAD_ENET1_TD0__GPIO4_IO05 |
| GPIO4_IO[2] | ENET1_TD3 | Pin 85 | GNSS_WAKEUP | 1.8V | MX93_PAD_ENET1_TD3__GPIO4_IO02 |
| GPIO4_IO[7] | ENET1_TXC | Pin 86 | | 1.8V | MX93_PAD_ENET1_TXC__GPIO4_IO07 |
| GPIO4_IO[8] | ENET1_RX_CTL | Pin 87 | | 1.8V | MX93_PAD_ENET1_RX_CTL__GPIO4_IO08 |
| GPIO4_IO[10] | ENET1_RD0 | Pin 88 | | 1.8V | MX93_PAD_ENET1_RD0__GPIO4_IO10 |
| GPIO4_IO[8] | ENET1_RX_CTL | Pin 87 | GNSS_PPS | 1.8V | MX93_PAD_ENET1_RX_CTL__GPIO4_IO08 |
| GPIO4_IO[10] | ENET1_RD0 | Pin 88 | GNSS_RX | 1.8V | MX93_PAD_ENET1_RD0__GPIO4_IO10 |
| GPIO4_IO[9] | ENET1_RXC | Pin 89 | | 1.8V | MX93_PAD_ENET1_RXC__GPIO4_IO09 |
| GPIO4_IO[11] | ENET1_RD1 | Pin 90 | | 1.8V | MX93_PAD_ENET1_RD1__GPIO4_IO11 |
| GPIO4_IO[12] | ENET1_RD2 | Pin 91 | | 1.8V | MX93_PAD_ENET1_RD2__GPIO4_IO12 |
| GPIO4_IO[13] | ENET1_RD3 | Pin 92 | | 1.8V | MX93_PAD_ENET1_RD3__GPIO4_IO13 |
| GPIO4_IO[1] | ENET1_MDIO | Pin 93 | | 1.8V | MX93_PAD_ENET1_MDIO__GPIO4_IO01 |
| GPIO4_IO[0] | ENET1_MDC | Pin 94 | | 1.8V | MX93_PAD_ENET1_MDC__GPIO4_IO00 |
| GPIO2_IO[25] | GPIO2_IO[25] | Pin 95 | | 3.3V | MX93_PAD_GPIO_IO25__GPIO2_IO25 |
| GPIO2_IO[25] | GPIO2_IO[25] | Pin 95 | KBD_PWM | 3.3V | MX93_PAD_GPIO_IO25__GPIO2_IO25 |
| GPIO2_IO[23] | GPIO2_IO[23] | Pin 96 | | 3.3V | MX93_PAD_GPIO_IO23__GPIO2_IO23 |
| I2C3_SCL | GPIO2_IO[29] | Pin 97 | I2C_SCL | 3.3V | MX93_PAD_GPIO_IO29__LPI2C3_SCL |
| I2C3_SDA | GPIO2_IO[28] | Pin 98 | I2C_SDA | 3.3V | MX93_PAD_GPIO_IO28__LPI2C3_SDA |
| TPM3_CH3 | GPIO2_IO[24] | Pin 99 | LCD_PWM | 3.3V | MX93_PAD_GPIO_IO24__TPM3_CH3 |
| SAI3_MCLK | GPIO2_IO[17] | Pin 100 | SPI1_MCLK | 3.3V | MX93_PAD_GPIO_IO17__SAI3_MCLK |
| SAI3_TX_BCLK | GPIO2_IO[16] | Pin 101 | I2S1_CLK | 3.3V | MX93_PAD_GPIO_IO16__SAI3_TX_BCLK |
| GPIO2_IO[14] | GPIO2_IO[14] | Pin 102 | ON/OFF_SW | 3.3V | MX93_PAD_GPIO_IO14__GPIO2_IO14 |
| GPIO2_IO[15] | GPIO2_IO[15] | Pin 103 | | 3.3V | MX93_PAD_GPIO_IO15__GPIO2_IO15 |
| GPIO2_IO[13] | GPIO2_IO[13] | Pin 104 | | 3.3V | MX93_PAD_GPIO_IO13__GPIO2_IO13 |
| TPM3_CH2 | GPIO2_IO[12] | Pin 105 | KBD_PWM | 3.3V | MX93_PAD_GPIO_IO12__TPM3_CH2 |
| GPIO2_IO[7] | GPIO2_IO[7] | Pin 106 | | 3.3V | MX93_PAD_GPIO_IO07__GPIO2_IO07 |
| GPIO2_IO[6] | GPIO2_IO[6] | Pin 107 | | 3.3V | MX93_PAD_GPIO_IO06__GPIO2_IO06 |
| GPIO2_IO[14] | GPIO2_IO[14] | Pin 102 | | 3.3V | MX93_PAD_GPIO_IO14__GPIO2_IO14 |
| GPIO2_IO[15] | GPIO2_IO[15] | Pin 103 | RF_SW_CTRL | 3.3V | MX93_PAD_GPIO_IO15__GPIO2_IO15 |
| GPIO2_IO[13] | GPIO2_IO[13] | Pin 104 | RF_ATT_LE2 | 3.3V | MX93_PAD_GPIO_IO13__GPIO2_IO13 |
| TPM3_CH2 | GPIO2_IO[12] | Pin 105 | RF_ATT_LE1 | 3.3V | MX93_PAD_GPIO_IO12__TPM3_CH2 |
| GPIO2_IO[7] | GPIO2_IO[7] | Pin 106 | RF_ATT_CLK | 3.3V | MX93_PAD_GPIO_IO07__GPIO2_IO07 |
| GPIO2_IO[6] | GPIO2_IO[6] | Pin 107 | RF_ATT_DATA | 3.3V | MX93_PAD_GPIO_IO06__GPIO2_IO06 |
| SPI6_SCK | GPIO2_IO[3] | Pin 108 | SPI1_SCK | 3.3V | MX93_PAD_GPIO_IO03__LPSPI6_SCK |
| GPIO3_IO[20] | SDIO3_CLK | Pin 109 | | 1.8V | MX93_PAD_SD3_CLK__GPIO3_IO20 |
| GPIO3_IO[24] | SDIO3_DATA2 | Pin 110 | | 1.8V | MX93_PAD_SD3_DATA2__GPIO3_IO24 |
| GPIO3_IO[25] | SDIO3_DATA3 | Pin 111 | | 1.8V | MX93_PAD_SD3_DATA3__GPIO3_IO25 |
| GPIO3_IO[25] | SDIO3_DATA3 | Pin 111 | RF_PA_ENABLE | 1.8V | MX93_PAD_SD3_DATA3__GPIO3_IO25 |
| GPIO3_IO[23] | SDIO3_DATA1 | Pin 112 | EXT_PTT | 1.8V | MX93_PAD_SD3_DATA1__GPIO3_IO23 |
| GPIO3_IO[21] | SDIO3_CMD | Pin 113 | INT_PTT | 1.8V | MX93_PAD_SD3_CMD__GPIO3_IO21 |
| GPIO3_IO[22] | SDIO3_DATA0 | Pin 114 | SIDE_BTN | 1.8V | MX93_PAD_SD3_DATA0__GPIO3_IO22 |

30
panel.json Normal file
View file

@ -0,0 +1,30 @@
{
"tabs": {
"type": "full",
"patchcorners": "False"
},
"cuts": {
"type": "vcuts"
},
"framing": {
"type": "frame",
"width": "11mm"
},
"tooling": {
"type": "4hole",
"hoffset": "5mm",
"voffset": "25mm"
},
"fiducials": {
"type": "3fid",
"hoffset": "5mm",
"voffset": "20mm"
},
"text": {
"type": "simple",
"voffset": "3mm",
"width": "2.0mm",
"height": "2.0mm",
"text": "LinHT PCB"
}
}

View file

@ -3042,6 +3042,82 @@
)
)
)
(pin no_connect line
(at 49.53 -45.72 180)
(length 3.81)
(hide yes)
(name "NC"
(effects
(font
(size 1.27 1.27)
)
)
)
(number "G28"
(effects
(font
(size 1.27 1.27)
)
)
)
)
(pin no_connect line
(at 49.53 -46.99 180)
(length 3.81)
(hide yes)
(name "NC"
(effects
(font
(size 1.27 1.27)
)
)
)
(number "G25"
(effects
(font
(size 1.27 1.27)
)
)
)
)
(pin no_connect line
(at 49.53 -48.26 180)
(length 3.81)
(hide yes)
(name "NC"
(effects
(font
(size 1.27 1.27)
)
)
)
(number "G26"
(effects
(font
(size 1.27 1.27)
)
)
)
)
(pin no_connect line
(at 49.53 -49.53 180)
(length 3.81)
(hide yes)
(name "NC"
(effects
(font
(size 1.27 1.27)
)
)
)
(number "G27"
(effects
(font
(size 1.27 1.27)
)
)
)
)
)
(embedded_fonts no)
)

View file

@ -0,0 +1,930 @@
ISO-10303-21;
HEADER;
FILE_DESCRIPTION(('STEP AP214'),'1');
FILE_NAME('ANT_ANT8010LL05R1516A_PUL','2025-11-26T08:41:00',(''),(''),'','','');
FILE_SCHEMA(('AUTOMOTIVE_DESIGN'));
ENDSEC;
DATA;
#1=SHAPE_DEFINITION_REPRESENTATION(#2,#3);
#2=PRODUCT_DEFINITION_SHAPE('',$,#4);
#3=SHAPE_REPRESENTATION('',(#188,#484,#780,#1077,#19),#11);
#4=PRODUCT_DEFINITION('design','example product_definition',#6,#5);
#5=PRODUCT_DEFINITION_CONTEXT('3D Mechanical Parts',#10,'design');
#6=PRODUCT_DEFINITION_FORMATION('1.0','first version',#8);
#7=APPLICATION_PROTOCOL_DEFINITION('international standard','automotive_design',2003,#10);
#8=PRODUCT('product','part','',(#9));
#9=PRODUCT_CONTEXT('3D Mechanical Parts',#10,'mechanical');
#10=APPLICATION_CONTEXT('Core Data for Automotive Mechanical Design Process');
#11=(GEOMETRIC_REPRESENTATION_CONTEXT(3) GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#12)) GLOBAL_UNIT_ASSIGNED_CONTEXT((#13,#14,#18)) REPRESENTATION_CONTEXT('ID1','3D'));
#12=UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-005),#13,'DISTANCE_ACCURACY_VALUE','Maximum model space distance between geometric entities at asserted connectivities');
#13=(LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.));
#14=(CONVERSION_BASED_UNIT('degree',#16) NAMED_UNIT(#15) PLANE_ANGLE_UNIT());
#15=DIMENSIONAL_EXPONENTS(0.,0.,0.,0.,0.,0.,0.);
#16=MEASURE_WITH_UNIT(PLANE_ANGLE_MEASURE(0.01745329252),#17);
#17=(NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.));
#18=(NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT());
#19=AXIS2_PLACEMENT_3D('',#20,#21,#22);
#20=CARTESIAN_POINT('',(0.0,0.0,0.0));
#21=DIRECTION('',(0.0,0.0,1.0));
#22=DIRECTION('',(1.0,0.0,0.0));
#25=MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION($,(#190,#239,#288,#337,#386,#435,#486,#535,#584,#633,#682,#731,#782,#831,#880,#929,#978,#1027,#1079,#1128,#1177,#1226,#1275,#1344,#1413,#1482,#1551,#1600,#1649,#1698),#11);
#26=PRODUCT_CATEGORY_RELATIONSHIP('','',#27,#28);
#27=PRODUCT_CATEGORY('part','');
#28=PRODUCT_RELATED_PRODUCT_CATEGORY('','',(#8));
#34=PRESENTATION_STYLE_ASSIGNMENT((#35,#40));
#35=SURFACE_STYLE_USAGE(.BOTH.,#36);
#36=SURFACE_SIDE_STYLE('',(#37));
#37=SURFACE_STYLE_FILL_AREA(#38);
#38=FILL_AREA_STYLE('',(#39));
#39=FILL_AREA_STYLE_COLOUR('',#41);
#40=CURVE_STYLE('',#42,POSITIVE_LENGTH_MEASURE(0.1),#41);
#41=COLOUR_RGB('Aluminum',0.725,0.725,0.725);
#42=DRAUGHTING_PRE_DEFINED_CURVE_FONT('continuous');
#43=PRESENTATION_STYLE_ASSIGNMENT((#44,#49));
#44=SURFACE_STYLE_USAGE(.BOTH.,#45);
#45=SURFACE_SIDE_STYLE('',(#46));
#46=SURFACE_STYLE_FILL_AREA(#47);
#47=FILL_AREA_STYLE('',(#48));
#48=FILL_AREA_STYLE_COLOUR('',#50);
#49=CURVE_STYLE('',#51,POSITIVE_LENGTH_MEASURE(0.1),#50);
#50=COLOUR_RGB('Brown',0.459,0.345,0.176);
#51=DRAUGHTING_PRE_DEFINED_CURVE_FONT('continuous');
#52=PRESENTATION_STYLE_ASSIGNMENT((#53,#58));
#53=SURFACE_STYLE_USAGE(.BOTH.,#54);
#54=SURFACE_SIDE_STYLE('',(#55));
#55=SURFACE_STYLE_FILL_AREA(#56);
#56=FILL_AREA_STYLE('',(#57));
#57=FILL_AREA_STYLE_COLOUR('',#59);
#58=CURVE_STYLE('',#60,POSITIVE_LENGTH_MEASURE(0.1),#59);
#59=COLOUR_RGB('Pin1Wrap',0.98,0.706,0.176);
#60=DRAUGHTING_PRE_DEFINED_CURVE_FONT('continuous');
#61=PRESENTATION_STYLE_ASSIGNMENT((#62,#67));
#62=SURFACE_STYLE_USAGE(.BOTH.,#63);
#63=SURFACE_SIDE_STYLE('',(#64));
#64=SURFACE_STYLE_FILL_AREA(#65);
#65=FILL_AREA_STYLE('',(#66));
#66=FILL_AREA_STYLE_COLOUR('',#68);
#67=CURVE_STYLE('',#69,POSITIVE_LENGTH_MEASURE(0.1),#68);
#68=COLOUR_RGB('HeatTab',0.588,0.588,0.588);
#69=DRAUGHTING_PRE_DEFINED_CURVE_FONT('continuous');
#70=PRESENTATION_STYLE_ASSIGNMENT((#71,#76));
#71=SURFACE_STYLE_USAGE(.BOTH.,#72);
#72=SURFACE_SIDE_STYLE('',(#73));
#73=SURFACE_STYLE_FILL_AREA(#74);
#74=FILL_AREA_STYLE('',(#75));
#75=FILL_AREA_STYLE_COLOUR('',#77);
#76=CURVE_STYLE('',#78,POSITIVE_LENGTH_MEASURE(0.1),#77);
#77=COLOUR_RGB('Black',0.196,0.196,0.196);
#78=DRAUGHTING_PRE_DEFINED_CURVE_FONT('continuous');
#79=PRESENTATION_STYLE_ASSIGNMENT((#80,#85));
#80=SURFACE_STYLE_USAGE(.BOTH.,#81);
#81=SURFACE_SIDE_STYLE('',(#82));
#82=SURFACE_STYLE_FILL_AREA(#83);
#83=FILL_AREA_STYLE('',(#84));
#84=FILL_AREA_STYLE_COLOUR('',#86);
#85=CURVE_STYLE('',#87,POSITIVE_LENGTH_MEASURE(0.1),#86);
#86=COLOUR_RGB('Gold',0.843,0.686,0.0);
#87=DRAUGHTING_PRE_DEFINED_CURVE_FONT('continuous');
#88=PRESENTATION_STYLE_ASSIGNMENT((#89,#94));
#89=SURFACE_STYLE_USAGE(.BOTH.,#90);
#90=SURFACE_SIDE_STYLE('',(#91));
#91=SURFACE_STYLE_FILL_AREA(#92);
#92=FILL_AREA_STYLE('',(#93));
#93=FILL_AREA_STYLE_COLOUR('',#95);
#94=CURVE_STYLE('',#96,POSITIVE_LENGTH_MEASURE(0.1),#95);
#95=COLOUR_RGB('Tan',0.784,0.686,0.51);
#96=DRAUGHTING_PRE_DEFINED_CURVE_FONT('continuous');
#97=PRESENTATION_STYLE_ASSIGNMENT((#98,#103));
#98=SURFACE_STYLE_USAGE(.BOTH.,#99);
#99=SURFACE_SIDE_STYLE('',(#100));
#100=SURFACE_STYLE_FILL_AREA(#101);
#101=FILL_AREA_STYLE('',(#102));
#102=FILL_AREA_STYLE_COLOUR('',#104);
#103=CURVE_STYLE('',#105,POSITIVE_LENGTH_MEASURE(0.1),#104);
#104=COLOUR_RGB('Gray',0.431,0.431,0.431);
#105=DRAUGHTING_PRE_DEFINED_CURVE_FONT('continuous');
#106=PRESENTATION_STYLE_ASSIGNMENT((#107,#112));
#107=SURFACE_STYLE_USAGE(.BOTH.,#108);
#108=SURFACE_SIDE_STYLE('',(#109));
#109=SURFACE_STYLE_FILL_AREA(#110);
#110=FILL_AREA_STYLE('',(#111));
#111=FILL_AREA_STYLE_COLOUR('',#113);
#112=CURVE_STYLE('',#114,POSITIVE_LENGTH_MEASURE(0.1),#113);
#113=COLOUR_RGB('Red',0.6,0.0,0.0);
#114=DRAUGHTING_PRE_DEFINED_CURVE_FONT('continuous');
#115=PRESENTATION_STYLE_ASSIGNMENT((#116,#121));
#116=SURFACE_STYLE_USAGE(.BOTH.,#117);
#117=SURFACE_SIDE_STYLE('',(#118));
#118=SURFACE_STYLE_FILL_AREA(#119);
#119=FILL_AREA_STYLE('',(#120));
#120=FILL_AREA_STYLE_COLOUR('',#122);
#121=CURVE_STYLE('',#123,POSITIVE_LENGTH_MEASURE(0.1),#122);
#122=COLOUR_RGB('Blue',0.157,0.157,0.588);
#123=DRAUGHTING_PRE_DEFINED_CURVE_FONT('continuous');
#124=PRESENTATION_STYLE_ASSIGNMENT((#125,#130));
#125=SURFACE_STYLE_USAGE(.BOTH.,#126);
#126=SURFACE_SIDE_STYLE('',(#127));
#127=SURFACE_STYLE_FILL_AREA(#128);
#128=FILL_AREA_STYLE('',(#129));
#129=FILL_AREA_STYLE_COLOUR('',#131);
#130=CURVE_STYLE('',#132,POSITIVE_LENGTH_MEASURE(0.1),#131);
#131=COLOUR_RGB('Maroon',0.294,0.0,0.0);
#132=DRAUGHTING_PRE_DEFINED_CURVE_FONT('continuous');
#133=PRESENTATION_STYLE_ASSIGNMENT((#134,#139));
#134=SURFACE_STYLE_USAGE(.BOTH.,#135);
#135=SURFACE_SIDE_STYLE('',(#136));
#136=SURFACE_STYLE_FILL_AREA(#137);
#137=FILL_AREA_STYLE('',(#138));
#138=FILL_AREA_STYLE_COLOUR('',#140);
#139=CURVE_STYLE('',#141,POSITIVE_LENGTH_MEASURE(0.1),#140);
#140=COLOUR_RGB('Green',0.0,0.294,0.0);
#141=DRAUGHTING_PRE_DEFINED_CURVE_FONT('continuous');
#142=PRESENTATION_STYLE_ASSIGNMENT((#143,#148));
#143=SURFACE_STYLE_USAGE(.BOTH.,#144);
#144=SURFACE_SIDE_STYLE('',(#145));
#145=SURFACE_STYLE_FILL_AREA(#146);
#146=FILL_AREA_STYLE('',(#147));
#147=FILL_AREA_STYLE_COLOUR('',#149);
#148=CURVE_STYLE('',#150,POSITIVE_LENGTH_MEASURE(0.1),#149);
#149=COLOUR_RGB('Pin1',0.588,0.588,0.059);
#150=DRAUGHTING_PRE_DEFINED_CURVE_FONT('continuous');
#151=PRESENTATION_STYLE_ASSIGNMENT((#152,#157));
#152=SURFACE_STYLE_USAGE(.BOTH.,#153);
#153=SURFACE_SIDE_STYLE('',(#154));
#154=SURFACE_STYLE_FILL_AREA(#155);
#155=FILL_AREA_STYLE('',(#156));
#156=FILL_AREA_STYLE_COLOUR('',#158);
#157=CURVE_STYLE('',#159,POSITIVE_LENGTH_MEASURE(0.1),#158);
#158=COLOUR_RGB('Pin1Rad',0.588,0.588,0.588);
#159=DRAUGHTING_PRE_DEFINED_CURVE_FONT('continuous');
#160=PRESENTATION_STYLE_ASSIGNMENT((#161,#166));
#161=SURFACE_STYLE_USAGE(.BOTH.,#162);
#162=SURFACE_SIDE_STYLE('',(#163));
#163=SURFACE_STYLE_FILL_AREA(#164);
#164=FILL_AREA_STYLE('',(#165));
#165=FILL_AREA_STYLE_COLOUR('',#167);
#166=CURVE_STYLE('',#168,POSITIVE_LENGTH_MEASURE(0.1),#167);
#167=COLOUR_RGB('Pin1Axial',0.98,0.706,0.176);
#168=DRAUGHTING_PRE_DEFINED_CURVE_FONT('continuous');
#169=PRESENTATION_STYLE_ASSIGNMENT((#170,#175));
#170=SURFACE_STYLE_USAGE(.BOTH.,#171);
#171=SURFACE_SIDE_STYLE('',(#172));
#172=SURFACE_STYLE_FILL_AREA(#173);
#173=FILL_AREA_STYLE('',(#174));
#174=FILL_AREA_STYLE_COLOUR('',#176);
#175=CURVE_STYLE('',#177,POSITIVE_LENGTH_MEASURE(0.1),#176);
#176=COLOUR_RGB('Pin1Tant',0.459,0.345,0.176);
#177=DRAUGHTING_PRE_DEFINED_CURVE_FONT('continuous');
#178=PRESENTATION_STYLE_ASSIGNMENT((#179,#184));
#179=SURFACE_STYLE_USAGE(.BOTH.,#180);
#180=SURFACE_SIDE_STYLE('',(#181));
#181=SURFACE_STYLE_FILL_AREA(#182);
#182=FILL_AREA_STYLE('',(#183));
#183=FILL_AREA_STYLE_COLOUR('',#185);
#184=CURVE_STYLE('',#186,POSITIVE_LENGTH_MEASURE(0.1),#185);
#185=COLOUR_RGB('Shroud',0.235,0.235,0.235);
#186=DRAUGHTING_PRE_DEFINED_CURVE_FONT('continuous');
#188=MANIFOLD_SOLID_BREP($,#189);
#189=CLOSED_SHELL('',(#191,#240,#289,#338,#387,#436));
#190=STYLED_ITEM('',(#43),#191);
#191=ADVANCED_FACE('',(#197),#192,.T.);
#192=PLANE('',#193);
#193=AXIS2_PLACEMENT_3D('',#194,#195,#196);
#194=CARTESIAN_POINT('',(-3.061,-0.48,0.117));
#195=DIRECTION('',(0.0,-1.0,0.0));
#196=DIRECTION('',(0.,0.,1.));
#197=FACE_OUTER_BOUND('',#198,.T.);
#198=EDGE_LOOP('',(#199,#209,#219,#229));
#202=CARTESIAN_POINT('',(3.061,-0.48,0.117));
#201=VERTEX_POINT('',#202);
#204=CARTESIAN_POINT('',(-3.061,-0.48,0.117));
#203=VERTEX_POINT('',#204);
#200=EDGE_CURVE('',#201,#203,#205,.T.);
#205=LINE('',#202,#207);
#207=VECTOR('',#208,6.1214);
#208=DIRECTION('',(-1.0,0.0,0.0));
#199=ORIENTED_EDGE('',*,*,#200,.F.);
#212=CARTESIAN_POINT('',(3.061,-0.48,1.077));
#211=VERTEX_POINT('',#212);
#210=EDGE_CURVE('',#211,#201,#215,.T.);
#215=LINE('',#212,#217);
#217=VECTOR('',#218,0.959394285714286);
#218=DIRECTION('',(0.0,0.0,-1.0));
#209=ORIENTED_EDGE('',*,*,#210,.F.);
#222=CARTESIAN_POINT('',(-3.061,-0.48,1.077));
#221=VERTEX_POINT('',#222);
#220=EDGE_CURVE('',#221,#211,#225,.T.);
#225=LINE('',#222,#227);
#227=VECTOR('',#228,6.1214);
#228=DIRECTION('',(1.0,0.0,0.0));
#219=ORIENTED_EDGE('',*,*,#220,.F.);
#230=EDGE_CURVE('',#203,#221,#235,.T.);
#235=LINE('',#204,#237);
#237=VECTOR('',#238,0.959394285714286);
#238=DIRECTION('',(0.0,0.0,1.0));
#229=ORIENTED_EDGE('',*,*,#230,.F.);
#239=STYLED_ITEM('',(#43),#240);
#240=ADVANCED_FACE('',(#246),#241,.T.);
#241=PLANE('',#242);
#242=AXIS2_PLACEMENT_3D('',#243,#244,#245);
#243=CARTESIAN_POINT('',(3.061,-0.48,0.117));
#244=DIRECTION('',(1.0,0.0,0.0));
#245=DIRECTION('',(0.,0.,1.));
#246=FACE_OUTER_BOUND('',#247,.T.);
#247=EDGE_LOOP('',(#248,#258,#268,#278));
#251=CARTESIAN_POINT('',(3.061,0.48,0.117));
#250=VERTEX_POINT('',#251);
#249=EDGE_CURVE('',#250,#201,#254,.T.);
#254=LINE('',#251,#256);
#256=VECTOR('',#257,0.959394285714286);
#257=DIRECTION('',(0.0,-1.0,0.0));
#248=ORIENTED_EDGE('',*,*,#249,.F.);
#261=CARTESIAN_POINT('',(3.061,0.48,1.077));
#260=VERTEX_POINT('',#261);
#259=EDGE_CURVE('',#260,#250,#264,.T.);
#264=LINE('',#261,#266);
#266=VECTOR('',#267,0.959394285714286);
#267=DIRECTION('',(0.0,0.0,-1.0));
#258=ORIENTED_EDGE('',*,*,#259,.F.);
#269=EDGE_CURVE('',#211,#260,#274,.T.);
#274=LINE('',#212,#276);
#276=VECTOR('',#277,0.959394285714286);
#277=DIRECTION('',(0.0,1.0,0.0));
#268=ORIENTED_EDGE('',*,*,#269,.F.);
#278=ORIENTED_EDGE('',*,*,#210,.T.);
#288=STYLED_ITEM('',(#43),#289);
#289=ADVANCED_FACE('',(#295),#290,.T.);
#290=PLANE('',#291);
#291=AXIS2_PLACEMENT_3D('',#292,#293,#294);
#292=CARTESIAN_POINT('',(3.061,0.48,0.117));
#293=DIRECTION('',(0.0,1.0,0.0));
#294=DIRECTION('',(0.,0.,1.));
#295=FACE_OUTER_BOUND('',#296,.T.);
#296=EDGE_LOOP('',(#297,#307,#317,#327));
#300=CARTESIAN_POINT('',(-3.061,0.48,0.117));
#299=VERTEX_POINT('',#300);
#298=EDGE_CURVE('',#299,#250,#303,.T.);
#303=LINE('',#300,#305);
#305=VECTOR('',#306,6.1214);
#306=DIRECTION('',(1.0,0.0,0.0));
#297=ORIENTED_EDGE('',*,*,#298,.F.);
#310=CARTESIAN_POINT('',(-3.061,0.48,1.077));
#309=VERTEX_POINT('',#310);
#308=EDGE_CURVE('',#309,#299,#313,.T.);
#313=LINE('',#310,#315);
#315=VECTOR('',#316,0.959394285714286);
#316=DIRECTION('',(0.0,0.0,-1.0));
#307=ORIENTED_EDGE('',*,*,#308,.F.);
#318=EDGE_CURVE('',#260,#309,#323,.T.);
#323=LINE('',#261,#325);
#325=VECTOR('',#326,6.1214);
#326=DIRECTION('',(-1.0,0.0,0.0));
#317=ORIENTED_EDGE('',*,*,#318,.F.);
#327=ORIENTED_EDGE('',*,*,#259,.T.);
#337=STYLED_ITEM('',(#43),#338);
#338=ADVANCED_FACE('',(#344),#339,.T.);
#339=PLANE('',#340);
#340=AXIS2_PLACEMENT_3D('',#341,#342,#343);
#341=CARTESIAN_POINT('',(-3.061,0.48,0.117));
#342=DIRECTION('',(-1.0,0.0,0.0));
#343=DIRECTION('',(0.,0.,1.));
#344=FACE_OUTER_BOUND('',#345,.T.);
#345=EDGE_LOOP('',(#346,#356,#366,#376));
#347=EDGE_CURVE('',#203,#299,#352,.T.);
#352=LINE('',#204,#354);
#354=VECTOR('',#355,0.959394285714286);
#355=DIRECTION('',(0.0,1.0,0.0));
#346=ORIENTED_EDGE('',*,*,#347,.F.);
#356=ORIENTED_EDGE('',*,*,#230,.T.);
#367=EDGE_CURVE('',#309,#221,#372,.T.);
#372=LINE('',#310,#374);
#374=VECTOR('',#375,0.959394285714286);
#375=DIRECTION('',(0.0,-1.0,0.0));
#366=ORIENTED_EDGE('',*,*,#367,.F.);
#376=ORIENTED_EDGE('',*,*,#308,.T.);
#386=STYLED_ITEM('',(#43),#387);
#387=ADVANCED_FACE('',(#393),#388,.T.);
#388=PLANE('',#389);
#389=AXIS2_PLACEMENT_3D('',#390,#391,#392);
#390=CARTESIAN_POINT('',(-3.061,0.48,0.117));
#391=DIRECTION('',(0.0,0.0,-1.0));
#392=DIRECTION('',(0.,1.,0.));
#393=FACE_OUTER_BOUND('',#394,.T.);
#394=EDGE_LOOP('',(#395,#405,#415,#425));
#395=ORIENTED_EDGE('',*,*,#298,.T.);
#405=ORIENTED_EDGE('',*,*,#249,.T.);
#415=ORIENTED_EDGE('',*,*,#200,.T.);
#425=ORIENTED_EDGE('',*,*,#347,.T.);
#435=STYLED_ITEM('',(#43),#436);
#436=ADVANCED_FACE('',(#442),#437,.T.);
#437=PLANE('',#438);
#438=AXIS2_PLACEMENT_3D('',#439,#440,#441);
#439=CARTESIAN_POINT('',(-3.061,-0.48,1.077));
#440=DIRECTION('',(0.0,0.0,1.0));
#441=DIRECTION('',(0.,1.,0.));
#442=FACE_OUTER_BOUND('',#443,.T.);
#443=EDGE_LOOP('',(#444,#454,#464,#474));
#444=ORIENTED_EDGE('',*,*,#220,.T.);
#454=ORIENTED_EDGE('',*,*,#269,.T.);
#464=ORIENTED_EDGE('',*,*,#318,.T.);
#474=ORIENTED_EDGE('',*,*,#367,.T.);
#484=MANIFOLD_SOLID_BREP($,#485);
#485=CLOSED_SHELL('',(#487,#536,#585,#634,#683,#732));
#486=STYLED_ITEM('',(#34),#487);
#487=ADVANCED_FACE('',(#493),#488,.T.);
#488=PLANE('',#489);
#489=AXIS2_PLACEMENT_3D('',#490,#491,#492);
#490=CARTESIAN_POINT('',(3.061,-0.597,0.0));
#491=DIRECTION('',(0.0,-1.0,0.0));
#492=DIRECTION('',(0.,0.,1.));
#493=FACE_OUTER_BOUND('',#494,.T.);
#494=EDGE_LOOP('',(#495,#505,#515,#525));
#498=CARTESIAN_POINT('',(4.102,-0.597,0.0));
#497=VERTEX_POINT('',#498);
#500=CARTESIAN_POINT('',(3.061,-0.597,0.0));
#499=VERTEX_POINT('',#500);
#496=EDGE_CURVE('',#497,#499,#501,.T.);
#501=LINE('',#498,#503);
#503=VECTOR('',#504,1.0414);
#504=DIRECTION('',(-1.0,0.0,0.0));
#495=ORIENTED_EDGE('',*,*,#496,.F.);
#508=CARTESIAN_POINT('',(4.102,-0.597,1.194));
#507=VERTEX_POINT('',#508);
#506=EDGE_CURVE('',#507,#497,#511,.T.);
#511=LINE('',#508,#513);
#513=VECTOR('',#514,1.1938);
#514=DIRECTION('',(0.0,0.0,-1.0));
#505=ORIENTED_EDGE('',*,*,#506,.F.);
#518=CARTESIAN_POINT('',(3.061,-0.597,1.194));
#517=VERTEX_POINT('',#518);
#516=EDGE_CURVE('',#517,#507,#521,.T.);
#521=LINE('',#518,#523);
#523=VECTOR('',#524,1.0414);
#524=DIRECTION('',(1.0,0.0,0.0));
#515=ORIENTED_EDGE('',*,*,#516,.F.);
#526=EDGE_CURVE('',#499,#517,#531,.T.);
#531=LINE('',#500,#533);
#533=VECTOR('',#534,1.1938);
#534=DIRECTION('',(0.0,0.0,1.0));
#525=ORIENTED_EDGE('',*,*,#526,.F.);
#535=STYLED_ITEM('',(#34),#536);
#536=ADVANCED_FACE('',(#542),#537,.T.);
#537=PLANE('',#538);
#538=AXIS2_PLACEMENT_3D('',#539,#540,#541);
#539=CARTESIAN_POINT('',(4.102,-0.597,0.0));
#540=DIRECTION('',(1.0,0.0,0.0));
#541=DIRECTION('',(0.,0.,1.));
#542=FACE_OUTER_BOUND('',#543,.T.);
#543=EDGE_LOOP('',(#544,#554,#564,#574));
#547=CARTESIAN_POINT('',(4.102,0.597,0.0));
#546=VERTEX_POINT('',#547);
#545=EDGE_CURVE('',#546,#497,#550,.T.);
#550=LINE('',#547,#552);
#552=VECTOR('',#553,1.1938);
#553=DIRECTION('',(0.0,-1.0,0.0));
#544=ORIENTED_EDGE('',*,*,#545,.F.);
#557=CARTESIAN_POINT('',(4.102,0.597,1.194));
#556=VERTEX_POINT('',#557);
#555=EDGE_CURVE('',#556,#546,#560,.T.);
#560=LINE('',#557,#562);
#562=VECTOR('',#563,1.1938);
#563=DIRECTION('',(0.0,0.0,-1.0));
#554=ORIENTED_EDGE('',*,*,#555,.F.);
#565=EDGE_CURVE('',#507,#556,#570,.T.);
#570=LINE('',#508,#572);
#572=VECTOR('',#573,1.1938);
#573=DIRECTION('',(0.0,1.0,0.0));
#564=ORIENTED_EDGE('',*,*,#565,.F.);
#574=ORIENTED_EDGE('',*,*,#506,.T.);
#584=STYLED_ITEM('',(#34),#585);
#585=ADVANCED_FACE('',(#591),#586,.T.);
#586=PLANE('',#587);
#587=AXIS2_PLACEMENT_3D('',#588,#589,#590);
#588=CARTESIAN_POINT('',(4.102,0.597,0.0));
#589=DIRECTION('',(0.0,1.0,0.0));
#590=DIRECTION('',(0.,0.,1.));
#591=FACE_OUTER_BOUND('',#592,.T.);
#592=EDGE_LOOP('',(#593,#603,#613,#623));
#596=CARTESIAN_POINT('',(3.061,0.597,0.0));
#595=VERTEX_POINT('',#596);
#594=EDGE_CURVE('',#595,#546,#599,.T.);
#599=LINE('',#596,#601);
#601=VECTOR('',#602,1.0414);
#602=DIRECTION('',(1.0,0.0,0.0));
#593=ORIENTED_EDGE('',*,*,#594,.F.);
#606=CARTESIAN_POINT('',(3.061,0.597,1.194));
#605=VERTEX_POINT('',#606);
#604=EDGE_CURVE('',#605,#595,#609,.T.);
#609=LINE('',#606,#611);
#611=VECTOR('',#612,1.1938);
#612=DIRECTION('',(0.0,0.0,-1.0));
#603=ORIENTED_EDGE('',*,*,#604,.F.);
#614=EDGE_CURVE('',#556,#605,#619,.T.);
#619=LINE('',#557,#621);
#621=VECTOR('',#622,1.0414);
#622=DIRECTION('',(-1.0,0.0,0.0));
#613=ORIENTED_EDGE('',*,*,#614,.F.);
#623=ORIENTED_EDGE('',*,*,#555,.T.);
#633=STYLED_ITEM('',(#34),#634);
#634=ADVANCED_FACE('',(#640),#635,.T.);
#635=PLANE('',#636);
#636=AXIS2_PLACEMENT_3D('',#637,#638,#639);
#637=CARTESIAN_POINT('',(3.061,0.597,0.0));
#638=DIRECTION('',(-1.0,0.0,0.0));
#639=DIRECTION('',(0.,0.,1.));
#640=FACE_OUTER_BOUND('',#641,.T.);
#641=EDGE_LOOP('',(#642,#652,#662,#672));
#643=EDGE_CURVE('',#499,#595,#648,.T.);
#648=LINE('',#500,#650);
#650=VECTOR('',#651,1.1938);
#651=DIRECTION('',(0.0,1.0,0.0));
#642=ORIENTED_EDGE('',*,*,#643,.F.);
#652=ORIENTED_EDGE('',*,*,#526,.T.);
#663=EDGE_CURVE('',#605,#517,#668,.T.);
#668=LINE('',#606,#670);
#670=VECTOR('',#671,1.1938);
#671=DIRECTION('',(0.0,-1.0,0.0));
#662=ORIENTED_EDGE('',*,*,#663,.F.);
#672=ORIENTED_EDGE('',*,*,#604,.T.);
#682=STYLED_ITEM('',(#34),#683);
#683=ADVANCED_FACE('',(#689),#684,.T.);
#684=PLANE('',#685);
#685=AXIS2_PLACEMENT_3D('',#686,#687,#688);
#686=CARTESIAN_POINT('',(3.061,0.597,0.0));
#687=DIRECTION('',(0.0,0.0,-1.0));
#688=DIRECTION('',(0.,1.,0.));
#689=FACE_OUTER_BOUND('',#690,.T.);
#690=EDGE_LOOP('',(#691,#701,#711,#721));
#691=ORIENTED_EDGE('',*,*,#594,.T.);
#701=ORIENTED_EDGE('',*,*,#545,.T.);
#711=ORIENTED_EDGE('',*,*,#496,.T.);
#721=ORIENTED_EDGE('',*,*,#643,.T.);
#731=STYLED_ITEM('',(#34),#732);
#732=ADVANCED_FACE('',(#738),#733,.T.);
#733=PLANE('',#734);
#734=AXIS2_PLACEMENT_3D('',#735,#736,#737);
#735=CARTESIAN_POINT('',(3.061,-0.597,1.194));
#736=DIRECTION('',(0.0,0.0,1.0));
#737=DIRECTION('',(0.,1.,0.));
#738=FACE_OUTER_BOUND('',#739,.T.);
#739=EDGE_LOOP('',(#740,#750,#760,#770));
#740=ORIENTED_EDGE('',*,*,#516,.T.);
#750=ORIENTED_EDGE('',*,*,#565,.T.);
#760=ORIENTED_EDGE('',*,*,#614,.T.);
#770=ORIENTED_EDGE('',*,*,#663,.T.);
#780=MANIFOLD_SOLID_BREP($,#781);
#781=CLOSED_SHELL('',(#783,#832,#881,#930,#979,#1028));
#782=STYLED_ITEM('',(#34),#783);
#783=ADVANCED_FACE('',(#789),#784,.T.);
#784=PLANE('',#785);
#785=AXIS2_PLACEMENT_3D('',#786,#787,#788);
#786=CARTESIAN_POINT('',(-4.102,-0.597,0.0));
#787=DIRECTION('',(0.0,-1.0,0.0));
#788=DIRECTION('',(0.,0.,1.));
#789=FACE_OUTER_BOUND('',#790,.T.);
#790=EDGE_LOOP('',(#791,#801,#811,#821));
#794=CARTESIAN_POINT('',(-3.061,-0.597,0.0));
#793=VERTEX_POINT('',#794);
#796=CARTESIAN_POINT('',(-4.102,-0.597,0.0));
#795=VERTEX_POINT('',#796);
#792=EDGE_CURVE('',#793,#795,#797,.T.);
#797=LINE('',#794,#799);
#799=VECTOR('',#800,1.0414);
#800=DIRECTION('',(-1.0,0.0,0.0));
#791=ORIENTED_EDGE('',*,*,#792,.F.);
#804=CARTESIAN_POINT('',(-3.061,-0.597,1.194));
#803=VERTEX_POINT('',#804);
#802=EDGE_CURVE('',#803,#793,#807,.T.);
#807=LINE('',#804,#809);
#809=VECTOR('',#810,1.1938);
#810=DIRECTION('',(0.0,0.0,-1.0));
#801=ORIENTED_EDGE('',*,*,#802,.F.);
#814=CARTESIAN_POINT('',(-4.102,-0.597,1.194));
#813=VERTEX_POINT('',#814);
#812=EDGE_CURVE('',#813,#803,#817,.T.);
#817=LINE('',#814,#819);
#819=VECTOR('',#820,1.0414);
#820=DIRECTION('',(1.0,0.0,0.0));
#811=ORIENTED_EDGE('',*,*,#812,.F.);
#822=EDGE_CURVE('',#795,#813,#827,.T.);
#827=LINE('',#796,#829);
#829=VECTOR('',#830,1.1938);
#830=DIRECTION('',(0.0,0.0,1.0));
#821=ORIENTED_EDGE('',*,*,#822,.F.);
#831=STYLED_ITEM('',(#34),#832);
#832=ADVANCED_FACE('',(#838),#833,.T.);
#833=PLANE('',#834);
#834=AXIS2_PLACEMENT_3D('',#835,#836,#837);
#835=CARTESIAN_POINT('',(-3.061,-0.597,0.0));
#836=DIRECTION('',(1.0,0.0,0.0));
#837=DIRECTION('',(0.,0.,1.));
#838=FACE_OUTER_BOUND('',#839,.T.);
#839=EDGE_LOOP('',(#840,#850,#860,#870));
#843=CARTESIAN_POINT('',(-3.061,0.597,0.0));
#842=VERTEX_POINT('',#843);
#841=EDGE_CURVE('',#842,#793,#846,.T.);
#846=LINE('',#843,#848);
#848=VECTOR('',#849,1.1938);
#849=DIRECTION('',(0.0,-1.0,0.0));
#840=ORIENTED_EDGE('',*,*,#841,.F.);
#853=CARTESIAN_POINT('',(-3.061,0.597,1.194));
#852=VERTEX_POINT('',#853);
#851=EDGE_CURVE('',#852,#842,#856,.T.);
#856=LINE('',#853,#858);
#858=VECTOR('',#859,1.1938);
#859=DIRECTION('',(0.0,0.0,-1.0));
#850=ORIENTED_EDGE('',*,*,#851,.F.);
#861=EDGE_CURVE('',#803,#852,#866,.T.);
#866=LINE('',#804,#868);
#868=VECTOR('',#869,1.1938);
#869=DIRECTION('',(0.0,1.0,0.0));
#860=ORIENTED_EDGE('',*,*,#861,.F.);
#870=ORIENTED_EDGE('',*,*,#802,.T.);
#880=STYLED_ITEM('',(#34),#881);
#881=ADVANCED_FACE('',(#887),#882,.T.);
#882=PLANE('',#883);
#883=AXIS2_PLACEMENT_3D('',#884,#885,#886);
#884=CARTESIAN_POINT('',(-3.061,0.597,0.0));
#885=DIRECTION('',(0.0,1.0,0.0));
#886=DIRECTION('',(0.,0.,1.));
#887=FACE_OUTER_BOUND('',#888,.T.);
#888=EDGE_LOOP('',(#889,#899,#909,#919));
#892=CARTESIAN_POINT('',(-4.102,0.597,0.0));
#891=VERTEX_POINT('',#892);
#890=EDGE_CURVE('',#891,#842,#895,.T.);
#895=LINE('',#892,#897);
#897=VECTOR('',#898,1.0414);
#898=DIRECTION('',(1.0,0.0,0.0));
#889=ORIENTED_EDGE('',*,*,#890,.F.);
#902=CARTESIAN_POINT('',(-4.102,0.597,1.194));
#901=VERTEX_POINT('',#902);
#900=EDGE_CURVE('',#901,#891,#905,.T.);
#905=LINE('',#902,#907);
#907=VECTOR('',#908,1.1938);
#908=DIRECTION('',(0.0,0.0,-1.0));
#899=ORIENTED_EDGE('',*,*,#900,.F.);
#910=EDGE_CURVE('',#852,#901,#915,.T.);
#915=LINE('',#853,#917);
#917=VECTOR('',#918,1.0414);
#918=DIRECTION('',(-1.0,0.0,0.0));
#909=ORIENTED_EDGE('',*,*,#910,.F.);
#919=ORIENTED_EDGE('',*,*,#851,.T.);
#929=STYLED_ITEM('',(#34),#930);
#930=ADVANCED_FACE('',(#936),#931,.T.);
#931=PLANE('',#932);
#932=AXIS2_PLACEMENT_3D('',#933,#934,#935);
#933=CARTESIAN_POINT('',(-4.102,0.597,0.0));
#934=DIRECTION('',(-1.0,0.0,0.0));
#935=DIRECTION('',(0.,0.,1.));
#936=FACE_OUTER_BOUND('',#937,.T.);
#937=EDGE_LOOP('',(#938,#948,#958,#968));
#939=EDGE_CURVE('',#795,#891,#944,.T.);
#944=LINE('',#796,#946);
#946=VECTOR('',#947,1.1938);
#947=DIRECTION('',(0.0,1.0,0.0));
#938=ORIENTED_EDGE('',*,*,#939,.F.);
#948=ORIENTED_EDGE('',*,*,#822,.T.);
#959=EDGE_CURVE('',#901,#813,#964,.T.);
#964=LINE('',#902,#966);
#966=VECTOR('',#967,1.1938);
#967=DIRECTION('',(0.0,-1.0,0.0));
#958=ORIENTED_EDGE('',*,*,#959,.F.);
#968=ORIENTED_EDGE('',*,*,#900,.T.);
#978=STYLED_ITEM('',(#34),#979);
#979=ADVANCED_FACE('',(#985),#980,.T.);
#980=PLANE('',#981);
#981=AXIS2_PLACEMENT_3D('',#982,#983,#984);
#982=CARTESIAN_POINT('',(-4.102,0.597,0.0));
#983=DIRECTION('',(0.0,0.0,-1.0));
#984=DIRECTION('',(0.,1.,0.));
#985=FACE_OUTER_BOUND('',#986,.T.);
#986=EDGE_LOOP('',(#987,#997,#1007,#1017));
#987=ORIENTED_EDGE('',*,*,#890,.T.);
#997=ORIENTED_EDGE('',*,*,#841,.T.);
#1007=ORIENTED_EDGE('',*,*,#792,.T.);
#1017=ORIENTED_EDGE('',*,*,#939,.T.);
#1027=STYLED_ITEM('',(#34),#1028);
#1028=ADVANCED_FACE('',(#1034),#1029,.T.);
#1029=PLANE('',#1030);
#1030=AXIS2_PLACEMENT_3D('',#1031,#1032,#1033);
#1031=CARTESIAN_POINT('',(-4.102,-0.597,1.194));
#1032=DIRECTION('',(0.0,0.0,1.0));
#1033=DIRECTION('',(0.,1.,0.));
#1034=FACE_OUTER_BOUND('',#1035,.T.);
#1035=EDGE_LOOP('',(#1036,#1046,#1056,#1066));
#1036=ORIENTED_EDGE('',*,*,#812,.T.);
#1046=ORIENTED_EDGE('',*,*,#861,.T.);
#1056=ORIENTED_EDGE('',*,*,#910,.T.);
#1066=ORIENTED_EDGE('',*,*,#959,.T.);
#1077=MANIFOLD_SOLID_BREP($,#1078);
#1078=CLOSED_SHELL('',(#1080,#1129,#1178,#1227,#1276,#1345,#1414,#1483,#1552,#1601,#1650,#1699));
#1079=STYLED_ITEM('',(#52),#1080);
#1080=ADVANCED_FACE('',(#1086),#1081,.T.);
#1081=PLANE('',#1082);
#1082=AXIS2_PLACEMENT_3D('',#1083,#1084,#1085);
#1083=CARTESIAN_POINT('',(-2.449,0.482,0.115));
#1084=DIRECTION('',(0.0,0.0,-1.0));
#1085=DIRECTION('',(0.,1.,0.));
#1086=FACE_OUTER_BOUND('',#1087,.T.);
#1087=EDGE_LOOP('',(#1088,#1098,#1108,#1118));
#1091=CARTESIAN_POINT('',(-1.836,0.482,0.115));
#1090=VERTEX_POINT('',#1091);
#1093=CARTESIAN_POINT('',(-2.449,0.482,0.115));
#1092=VERTEX_POINT('',#1093);
#1089=EDGE_CURVE('',#1090,#1092,#1094,.T.);
#1094=LINE('',#1091,#1096);
#1096=VECTOR('',#1097,0.61214);
#1097=DIRECTION('',(-1.0,0.0,0.0));
#1088=ORIENTED_EDGE('',*,*,#1089,.F.);
#1101=CARTESIAN_POINT('',(-1.836,-0.482,0.115));
#1100=VERTEX_POINT('',#1101);
#1099=EDGE_CURVE('',#1100,#1090,#1104,.T.);
#1104=LINE('',#1101,#1106);
#1106=VECTOR('',#1107,0.964474285714287);
#1107=DIRECTION('',(0.0,1.0,0.0));
#1098=ORIENTED_EDGE('',*,*,#1099,.F.);
#1111=CARTESIAN_POINT('',(-2.449,-0.482,0.115));
#1110=VERTEX_POINT('',#1111);
#1109=EDGE_CURVE('',#1110,#1100,#1114,.T.);
#1114=LINE('',#1111,#1116);
#1116=VECTOR('',#1117,0.61214);
#1117=DIRECTION('',(1.0,0.0,0.0));
#1108=ORIENTED_EDGE('',*,*,#1109,.F.);
#1119=EDGE_CURVE('',#1092,#1110,#1124,.T.);
#1124=LINE('',#1093,#1126);
#1126=VECTOR('',#1127,0.964474285714287);
#1127=DIRECTION('',(0.0,-1.0,0.0));
#1118=ORIENTED_EDGE('',*,*,#1119,.F.);
#1128=STYLED_ITEM('',(#52),#1129);
#1129=ADVANCED_FACE('',(#1135),#1130,.T.);
#1130=PLANE('',#1131);
#1131=AXIS2_PLACEMENT_3D('',#1132,#1133,#1134);
#1132=CARTESIAN_POINT('',(-2.449,-0.482,0.115));
#1133=DIRECTION('',(0.0,-1.0,0.0));
#1134=DIRECTION('',(0.,0.,1.));
#1135=FACE_OUTER_BOUND('',#1136,.T.);
#1136=EDGE_LOOP('',(#1137,#1147,#1157,#1167));
#1137=ORIENTED_EDGE('',*,*,#1109,.T.);
#1150=CARTESIAN_POINT('',(-1.836,-0.482,1.079));
#1149=VERTEX_POINT('',#1150);
#1148=EDGE_CURVE('',#1149,#1100,#1153,.T.);
#1153=LINE('',#1150,#1155);
#1155=VECTOR('',#1156,0.964474285714287);
#1156=DIRECTION('',(0.0,0.0,-1.0));
#1147=ORIENTED_EDGE('',*,*,#1148,.F.);
#1160=CARTESIAN_POINT('',(-2.449,-0.482,1.079));
#1159=VERTEX_POINT('',#1160);
#1158=EDGE_CURVE('',#1159,#1149,#1163,.T.);
#1163=LINE('',#1160,#1165);
#1165=VECTOR('',#1166,0.61214);
#1166=DIRECTION('',(1.0,0.0,0.0));
#1157=ORIENTED_EDGE('',*,*,#1158,.F.);
#1168=EDGE_CURVE('',#1110,#1159,#1173,.T.);
#1173=LINE('',#1111,#1175);
#1175=VECTOR('',#1176,0.964474285714287);
#1176=DIRECTION('',(0.0,0.0,1.0));
#1167=ORIENTED_EDGE('',*,*,#1168,.F.);
#1177=STYLED_ITEM('',(#52),#1178);
#1178=ADVANCED_FACE('',(#1184),#1179,.T.);
#1179=PLANE('',#1180);
#1180=AXIS2_PLACEMENT_3D('',#1181,#1182,#1183);
#1181=CARTESIAN_POINT('',(-1.836,0.482,0.115));
#1182=DIRECTION('',(0.0,1.0,0.0));
#1183=DIRECTION('',(0.,0.,1.));
#1184=FACE_OUTER_BOUND('',#1185,.T.);
#1185=EDGE_LOOP('',(#1186,#1196,#1206,#1216));
#1186=ORIENTED_EDGE('',*,*,#1089,.T.);
#1199=CARTESIAN_POINT('',(-2.449,0.482,1.079));
#1198=VERTEX_POINT('',#1199);
#1197=EDGE_CURVE('',#1198,#1092,#1202,.T.);
#1202=LINE('',#1199,#1204);
#1204=VECTOR('',#1205,0.964474285714287);
#1205=DIRECTION('',(0.0,0.0,-1.0));
#1196=ORIENTED_EDGE('',*,*,#1197,.F.);
#1209=CARTESIAN_POINT('',(-1.836,0.482,1.079));
#1208=VERTEX_POINT('',#1209);
#1207=EDGE_CURVE('',#1208,#1198,#1212,.T.);
#1212=LINE('',#1209,#1214);
#1214=VECTOR('',#1215,0.61214);
#1215=DIRECTION('',(-1.0,0.0,0.0));
#1206=ORIENTED_EDGE('',*,*,#1207,.F.);
#1217=EDGE_CURVE('',#1090,#1208,#1222,.T.);
#1222=LINE('',#1091,#1224);
#1224=VECTOR('',#1225,0.964474285714287);
#1225=DIRECTION('',(0.0,0.0,1.0));
#1216=ORIENTED_EDGE('',*,*,#1217,.F.);
#1226=STYLED_ITEM('',(#52),#1227);
#1227=ADVANCED_FACE('',(#1233),#1228,.T.);
#1228=PLANE('',#1229);
#1229=AXIS2_PLACEMENT_3D('',#1230,#1231,#1232);
#1230=CARTESIAN_POINT('',(-2.449,-0.482,1.079));
#1231=DIRECTION('',(0.0,0.0,1.0));
#1232=DIRECTION('',(0.,1.,0.));
#1233=FACE_OUTER_BOUND('',#1234,.T.);
#1234=EDGE_LOOP('',(#1235,#1245,#1255,#1265));
#1235=ORIENTED_EDGE('',*,*,#1158,.T.);
#1246=EDGE_CURVE('',#1208,#1149,#1251,.T.);
#1251=LINE('',#1209,#1253);
#1253=VECTOR('',#1254,0.964474285714287);
#1254=DIRECTION('',(0.0,-1.0,0.0));
#1245=ORIENTED_EDGE('',*,*,#1246,.F.);
#1255=ORIENTED_EDGE('',*,*,#1207,.T.);
#1266=EDGE_CURVE('',#1159,#1198,#1271,.T.);
#1271=LINE('',#1160,#1273);
#1273=VECTOR('',#1274,0.964474285714287);
#1274=DIRECTION('',(0.0,1.0,0.0));
#1265=ORIENTED_EDGE('',*,*,#1266,.F.);
#1275=STYLED_ITEM('',(#52),#1276);
#1276=ADVANCED_FACE('',(#1282),#1277,.T.);
#1277=PLANE('',#1278);
#1278=AXIS2_PLACEMENT_3D('',#1279,#1280,#1281);
#1279=CARTESIAN_POINT('',(-1.836,-0.482,0.115));
#1280=DIRECTION('',(1.0,0.0,0.0));
#1281=DIRECTION('',(0.,0.,1.));
#1282=FACE_OUTER_BOUND('',#1283,.T.);
#1283=EDGE_LOOP('',(#1284,#1294,#1304,#1314,#1324,#1334));
#1284=ORIENTED_EDGE('',*,*,#1099,.T.);
#1294=ORIENTED_EDGE('',*,*,#1217,.T.);
#1307=CARTESIAN_POINT('',(-1.836,0.48,1.077));
#1306=VERTEX_POINT('',#1307);
#1305=EDGE_CURVE('',#1306,#1208,#1310,.T.);
#1310=LINE('',#1307,#1312);
#1312=VECTOR('',#1313,0.00359210244842771);
#1313=DIRECTION('',(0.0,0.707,0.707));
#1304=ORIENTED_EDGE('',*,*,#1305,.F.);
#1317=CARTESIAN_POINT('',(-1.836,0.48,0.117));
#1316=VERTEX_POINT('',#1317);
#1315=EDGE_CURVE('',#1316,#1306,#1320,.T.);
#1320=LINE('',#1317,#1322);
#1322=VECTOR('',#1323,0.959394285714286);
#1323=DIRECTION('',(0.0,0.0,1.0));
#1314=ORIENTED_EDGE('',*,*,#1315,.F.);
#1327=CARTESIAN_POINT('',(-1.836,-0.48,0.117));
#1326=VERTEX_POINT('',#1327);
#1325=EDGE_CURVE('',#1326,#1316,#1330,.T.);
#1330=LINE('',#1327,#1332);
#1332=VECTOR('',#1333,0.959394285714286);
#1333=DIRECTION('',(0.0,1.0,0.0));
#1324=ORIENTED_EDGE('',*,*,#1325,.F.);
#1335=EDGE_CURVE('',#1100,#1326,#1340,.T.);
#1340=LINE('',#1101,#1342);
#1342=VECTOR('',#1343,0.00359210244842768);
#1343=DIRECTION('',(0.0,0.707,0.707));
#1334=ORIENTED_EDGE('',*,*,#1335,.F.);
#1344=STYLED_ITEM('',(#52),#1345);
#1345=ADVANCED_FACE('',(#1351),#1346,.T.);
#1346=PLANE('',#1347);
#1347=AXIS2_PLACEMENT_3D('',#1348,#1349,#1350);
#1348=CARTESIAN_POINT('',(-1.836,-0.482,0.115));
#1349=DIRECTION('',(1.0,0.0,0.0));
#1350=DIRECTION('',(0.,0.,1.));
#1351=FACE_OUTER_BOUND('',#1352,.T.);
#1352=EDGE_LOOP('',(#1353,#1363,#1373,#1383,#1393,#1403));
#1353=ORIENTED_EDGE('',*,*,#1335,.T.);
#1366=CARTESIAN_POINT('',(-1.836,-0.48,1.077));
#1365=VERTEX_POINT('',#1366);
#1364=EDGE_CURVE('',#1365,#1326,#1369,.T.);
#1369=LINE('',#1366,#1371);
#1371=VECTOR('',#1372,0.959394285714286);
#1372=DIRECTION('',(0.0,0.0,-1.0));
#1363=ORIENTED_EDGE('',*,*,#1364,.F.);
#1374=EDGE_CURVE('',#1306,#1365,#1379,.T.);
#1379=LINE('',#1307,#1381);
#1381=VECTOR('',#1382,0.959394285714286);
#1382=DIRECTION('',(0.0,-1.0,0.0));
#1373=ORIENTED_EDGE('',*,*,#1374,.F.);
#1383=ORIENTED_EDGE('',*,*,#1305,.T.);
#1393=ORIENTED_EDGE('',*,*,#1246,.T.);
#1403=ORIENTED_EDGE('',*,*,#1148,.T.);
#1413=STYLED_ITEM('',(#52),#1414);
#1414=ADVANCED_FACE('',(#1420),#1415,.T.);
#1415=PLANE('',#1416);
#1416=AXIS2_PLACEMENT_3D('',#1417,#1418,#1419);
#1417=CARTESIAN_POINT('',(-2.449,0.482,0.115));
#1418=DIRECTION('',(-1.0,0.0,0.0));
#1419=DIRECTION('',(0.,0.,1.));
#1420=FACE_OUTER_BOUND('',#1421,.T.);
#1421=EDGE_LOOP('',(#1422,#1432,#1442,#1452,#1462,#1472));
#1422=ORIENTED_EDGE('',*,*,#1119,.T.);
#1435=CARTESIAN_POINT('',(-2.449,-0.48,0.117));
#1434=VERTEX_POINT('',#1435);
#1433=EDGE_CURVE('',#1434,#1110,#1438,.T.);
#1438=LINE('',#1435,#1440);
#1440=VECTOR('',#1441,0.00359210244842768);
#1441=DIRECTION('',(0.0,-0.707,-0.707));
#1432=ORIENTED_EDGE('',*,*,#1433,.F.);
#1445=CARTESIAN_POINT('',(-2.449,0.48,0.117));
#1444=VERTEX_POINT('',#1445);
#1443=EDGE_CURVE('',#1444,#1434,#1448,.T.);
#1448=LINE('',#1445,#1450);
#1450=VECTOR('',#1451,0.959394285714286);
#1451=DIRECTION('',(0.0,-1.0,0.0));
#1442=ORIENTED_EDGE('',*,*,#1443,.F.);
#1455=CARTESIAN_POINT('',(-2.449,0.48,1.077));
#1454=VERTEX_POINT('',#1455);
#1453=EDGE_CURVE('',#1454,#1444,#1458,.T.);
#1458=LINE('',#1455,#1460);
#1460=VECTOR('',#1461,0.959394285714286);
#1461=DIRECTION('',(0.0,0.0,-1.0));
#1452=ORIENTED_EDGE('',*,*,#1453,.F.);
#1463=EDGE_CURVE('',#1198,#1454,#1468,.T.);
#1468=LINE('',#1199,#1470);
#1470=VECTOR('',#1471,0.00359210244842771);
#1471=DIRECTION('',(0.0,-0.707,-0.707));
#1462=ORIENTED_EDGE('',*,*,#1463,.F.);
#1472=ORIENTED_EDGE('',*,*,#1197,.T.);
#1482=STYLED_ITEM('',(#52),#1483);
#1483=ADVANCED_FACE('',(#1489),#1484,.T.);
#1484=PLANE('',#1485);
#1485=AXIS2_PLACEMENT_3D('',#1486,#1487,#1488);
#1486=CARTESIAN_POINT('',(-2.449,-0.48,0.117));
#1487=DIRECTION('',(-1.0,0.0,0.0));
#1488=DIRECTION('',(0.,0.,1.));
#1489=FACE_OUTER_BOUND('',#1490,.T.);
#1490=EDGE_LOOP('',(#1491,#1501,#1511,#1521,#1531,#1541));
#1491=ORIENTED_EDGE('',*,*,#1433,.T.);
#1501=ORIENTED_EDGE('',*,*,#1168,.T.);
#1511=ORIENTED_EDGE('',*,*,#1266,.T.);
#1521=ORIENTED_EDGE('',*,*,#1463,.T.);
#1534=CARTESIAN_POINT('',(-2.449,-0.48,1.077));
#1533=VERTEX_POINT('',#1534);
#1532=EDGE_CURVE('',#1533,#1454,#1537,.T.);
#1537=LINE('',#1534,#1539);
#1539=VECTOR('',#1540,0.959394285714286);
#1540=DIRECTION('',(0.0,1.0,0.0));
#1531=ORIENTED_EDGE('',*,*,#1532,.F.);
#1542=EDGE_CURVE('',#1434,#1533,#1547,.T.);
#1547=LINE('',#1435,#1549);
#1549=VECTOR('',#1550,0.959394285714286);
#1550=DIRECTION('',(0.0,0.0,1.0));
#1541=ORIENTED_EDGE('',*,*,#1542,.F.);
#1551=STYLED_ITEM('',(#52),#1552);
#1552=ADVANCED_FACE('',(#1558),#1553,.T.);
#1553=PLANE('',#1554);
#1554=AXIS2_PLACEMENT_3D('',#1555,#1556,#1557);
#1555=CARTESIAN_POINT('',(-2.449,0.48,0.117));
#1556=DIRECTION('',(0.0,-1.0,0.0));
#1557=DIRECTION('',(0.,0.,1.));
#1558=FACE_OUTER_BOUND('',#1559,.T.);
#1559=EDGE_LOOP('',(#1560,#1570,#1580,#1590));
#1561=EDGE_CURVE('',#1316,#1444,#1566,.T.);
#1566=LINE('',#1317,#1568);
#1568=VECTOR('',#1569,0.61214);
#1569=DIRECTION('',(-1.0,0.0,0.0));
#1560=ORIENTED_EDGE('',*,*,#1561,.F.);
#1570=ORIENTED_EDGE('',*,*,#1315,.T.);
#1581=EDGE_CURVE('',#1454,#1306,#1586,.T.);
#1586=LINE('',#1455,#1588);
#1588=VECTOR('',#1589,0.61214);
#1589=DIRECTION('',(1.0,0.0,0.0));
#1580=ORIENTED_EDGE('',*,*,#1581,.F.);
#1590=ORIENTED_EDGE('',*,*,#1453,.T.);
#1600=STYLED_ITEM('',(#52),#1601);
#1601=ADVANCED_FACE('',(#1607),#1602,.T.);
#1602=PLANE('',#1603);
#1603=AXIS2_PLACEMENT_3D('',#1604,#1605,#1606);
#1604=CARTESIAN_POINT('',(-1.836,-0.48,0.117));
#1605=DIRECTION('',(0.0,1.0,0.0));
#1606=DIRECTION('',(0.,0.,1.));
#1607=FACE_OUTER_BOUND('',#1608,.T.);
#1608=EDGE_LOOP('',(#1609,#1619,#1629,#1639));
#1610=EDGE_CURVE('',#1434,#1326,#1615,.T.);
#1615=LINE('',#1435,#1617);
#1617=VECTOR('',#1618,0.61214);
#1618=DIRECTION('',(1.0,0.0,0.0));
#1609=ORIENTED_EDGE('',*,*,#1610,.F.);
#1619=ORIENTED_EDGE('',*,*,#1542,.T.);
#1630=EDGE_CURVE('',#1365,#1533,#1635,.T.);
#1635=LINE('',#1366,#1637);
#1637=VECTOR('',#1638,0.61214);
#1638=DIRECTION('',(-1.0,0.0,0.0));
#1629=ORIENTED_EDGE('',*,*,#1630,.F.);
#1639=ORIENTED_EDGE('',*,*,#1364,.T.);
#1649=STYLED_ITEM('',(#52),#1650);
#1650=ADVANCED_FACE('',(#1656),#1651,.T.);
#1651=PLANE('',#1652);
#1652=AXIS2_PLACEMENT_3D('',#1653,#1654,#1655);
#1653=CARTESIAN_POINT('',(-2.449,-0.48,0.117));
#1654=DIRECTION('',(0.0,0.0,1.0));
#1655=DIRECTION('',(0.,1.,0.));
#1656=FACE_OUTER_BOUND('',#1657,.T.);
#1657=EDGE_LOOP('',(#1658,#1668,#1678,#1688));
#1658=ORIENTED_EDGE('',*,*,#1610,.T.);
#1668=ORIENTED_EDGE('',*,*,#1325,.T.);
#1678=ORIENTED_EDGE('',*,*,#1561,.T.);
#1688=ORIENTED_EDGE('',*,*,#1443,.T.);
#1698=STYLED_ITEM('',(#52),#1699);
#1699=ADVANCED_FACE('',(#1705),#1700,.T.);
#1700=PLANE('',#1701);
#1701=AXIS2_PLACEMENT_3D('',#1702,#1703,#1704);
#1702=CARTESIAN_POINT('',(-1.836,-0.48,1.077));
#1703=DIRECTION('',(0.0,0.0,-1.0));
#1704=DIRECTION('',(0.,1.,0.));
#1705=FACE_OUTER_BOUND('',#1706,.T.);
#1706=EDGE_LOOP('',(#1707,#1717,#1727,#1737));
#1707=ORIENTED_EDGE('',*,*,#1630,.T.);
#1717=ORIENTED_EDGE('',*,*,#1532,.T.);
#1727=ORIENTED_EDGE('',*,*,#1581,.T.);
#1737=ORIENTED_EDGE('',*,*,#1374,.T.);
ENDSEC;
END-ISO-10303-21;

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View file

@ -0,0 +1,141 @@
#VRML V2.0 utf8
# 3D model generated by easyeda2kicad.py (https://github.com/uPesy/easyeda2kicad.py)
Shape{
appearance Appearance {
material Material {
diffuseColor 1.0 1.0 1.0
specularColor 0.5019607843137255 0.5019607843137255 0.5019607843137255
ambientIntensity 0.2
transparency 0
shininess 0.5
}
}
geometry IndexedFaceSet {
ccw TRUE
solid FALSE
coord DEF co Coordinate {
point [
1.063 0.3937 0.4291, 1.0236 0.3937 0.4291, 1.063 0.1181 0.4291, 1.0236 0.1181 0.4291, 0.6693 0.3937 -0.0039, 1.063 0.3937 -0.0039, 0.6693 -0.3937 -0.0039, 1.063 -0.3937 -0.0039, 0.6693 0.3937 0.0354, 0.6693 -0.3937 0.0354, 1.0236 0.3937 0.0354, 1.0236 -0.3937 0.0354, 1.0236 0.1181 0.3504, 1.0236 -0.1181 0.3504, 1.0236 -0.1181 0.4291, 1.0236 -0.3937 0.4291, 1.063 -0.3937 0.4291, 1.063 -0.1181 0.4291, 1.063 -0.1181 0.3504, 1.063 0.1181 0.3504, -1.0236 0.3937 0.4291, -1.063 0.3937 0.4291, -1.0236 0.1181 0.4291, -1.063 0.1181 0.4291, -1.063 0.3937 -0.0039, -0.6693 0.3937 -0.0039, -1.063 -0.3937 -0.0039, -0.6693 -0.3937 -0.0039, -0.6693 0.3937 0.0354, -0.6693 -0.3937 0.0354, -1.0236 0.3937 0.0354, -1.0236 -0.3937 0.0354, -1.0236 -0.1181 0.4291, -1.0236 -0.3937 0.4291, -1.0236 -0.1181 0.3504, -1.0236 0.1181 0.3504, -1.063 -0.3937 0.4291, -1.063 -0.1181 0.4291, -1.063 0.1181 0.3504, -1.063 -0.1181 0.3504, -1.063 -0.1181 0.3504
]
}
coordIndex [
0,1,2,-1,2,1,3,-1,4,5,6,-1,6,5,7,-1,8,4,9,-1,9,4,6,-1,10,8,11,-1,11,8,9,-1,3,1,12,-1,12,1,10,-1,12,10,13,-1,13,10,11,-1,13,11,14,-1,14,11,15,-1,15,16,14,-1,14,16,17,-1,17,16,18,-1,18,16,7,-1,18,7,19,-1,19,7,5,-1,19,5,2,-1,2,5,0,-1,1,0,10,-1,10,0,5,-1,10,5,8,-1,8,5,4,-1,9,6,11,-1,11,6,7,-1,11,7,15,-1,15,7,16,-1,19,2,12,-1,12,2,3,-1,18,19,13,-1,13,19,12,-1,17,18,14,-1,14,18,13,-1,20,21,22,-1,22,21,23,-1,24,25,26,-1,26,25,27,-1,25,28,27,-1,27,28,29,-1,28,30,29,-1,29,30,31,-1,32,33,34,-1,34,33,31,-1,34,31,35,-1,35,31,30,-1,35,30,22,-1,22,30,20,-1,36,33,37,-1,37,33,32,-1,23,21,38,-1,38,21,24,-1,38,24,39,-1,39,24,26,-1,39,26,37,-1,37,26,36,-1,28,25,30,-1,30,25,24,-1,30,24,20,-1,20,24,21,-1,33,36,31,-1,31,36,26,-1,31,26,29,-1,29,26,27,-1,23,38,22,-1,22,38,35,-1,38,39,35,-1,35,39,34,-1,39,37,34,-1,34,37,32,-1,
]
}
}
Shape{
appearance Appearance {
material Material {
diffuseColor 0.5019607843137255 0.5019607843137255 0.5019607843137255
specularColor 0.25098039215686274 0.25098039215686274 0.25098039215686274
ambientIntensity 0.2
transparency 0
shininess 0.5
}
}
geometry IndexedFaceSet {
ccw TRUE
solid FALSE
coord DEF co Coordinate {
point [
-0.2222 0.1878 0.7874, -0.2222 -0.0715 0.7874, -0.1646 -0.0715 0.7874, 0.2712 -0.2059 0.7874, 0.2865 -0.132 0.7874, 0.2147 0.1446 0.7874, 0.3151 -0.0463 0.7874, -0.0135 -0.0379 0.7874, -0.0493 -0.0379 0.7874, -0.0493 -0.2059 0.7874, 0.4596 0.1578 0.7874, 0.4 0.0392 0.7874, 1.0236 -0.8071 0.7874, 0.3589 -0.063 0.7874, 0.3342 -0.1476 0.7874, 0.324 -0.2059 0.7874, 0.1379 0.0835 0.7874, 0.1353 0.0567 0.7874, 0.1283 0.0353 0.7874, 0.1173 0.0175 0.7874, 0.3595 0.0546 0.7874, 0.3935 0.1204 0.7874, 0.4068 0.1446 0.7874, 0.4596 0.1878 0.7874, 1.0236 0.8071 0.7874, 1.0169 0.858 0.7874, 0.0526 -0.0218 0.7874, 0.0526 -0.0231 0.7874, 0.0565 -0.0206 0.7874, 0.0704 -0.0335 0.7874, 0.0878 -0.0074 0.7874, 0.9972 0.9055 0.7874, 0.966 0.9463 0.7874, 0.9252 0.9776 0.7874, 0.1085 0.0079 0.7874, 0.0835 -0.0464 0.7874, 0.8268 -1.0039 0.7874, 0.8777 -0.9972 0.7874, 0.1811 -0.2059 0.7874, 0.9252 -0.9776 0.7874, 0.966 -0.9463 0.7874, 0.1067 -0.0797 0.7874, 0.111 -0.0868 0.7874, 0.9972 -0.9055 0.7874, 1.0169 -0.858 0.7874, 0.1235 -0.2059 0.7874, 0.0596 -0.0951 0.7874, 0.0387 -0.0639 0.7874, 0.025 -0.0503 0.7874, 0.013 -0.0431 0.7874, -0.0015 -0.0388 0.7874, -0.2702 -0.2059 0.7874, -0.2702 -0.1147 0.7874, -0.4526 -0.1147 0.7874, -1.0169 0.858 0.7874, -1.0236 0.8071 0.7874, -0.3134 0.1166 0.7874, -0.966 -0.9463 0.7874, -0.2222 -0.2059 0.7874, -0.9972 -0.9055 0.7874, -1.0169 -0.858 0.7874, -0.8268 -1.0039 0.7874, -0.1021 -0.2059 0.7874, -0.8777 -0.9972 0.7874, -0.9252 -0.9776 0.7874, -0.3826 0.0137 0.7874, -1.0236 -0.8071 0.7874, -0.4526 -0.0737 0.7874, 0.0493 0.1852 0.7874, 0.078 0.1771 0.7874, 0.2147 0.1878 0.7874, 0.0994 0.1652 0.7874, -0.1021 0.1878 0.7874, 0.0166 0.1878 0.7874, -0.8268 1.0039 0.7874, 0.8268 1.0039 0.7874, 0.8777 0.9972 0.7874, 0.1099 0.1565 0.7874, 0.1229 0.1407 0.7874, 0.1321 0.1217 0.7874, 0.1374 0.0958 0.7874, -0.8777 0.9972 0.7874, -0.9252 0.9776 0.7874, -0.966 0.9463 0.7874, -0.9972 0.9055 0.7874, -0.2222 -0.1147 0.7874, -0.1646 -0.1147 0.7874, -0.2735 0.1878 0.7874, 0.8268 -1.0039 0.0, -0.0274 -1.0039 0.0, 0.5118 -0.4724 0.0, -0.5118 -0.4724 0.0, -0.5118 -0.0566 0.0, -0.0274 -0.0566 0.0, -1.0169 -0.858 0.0, -1.0236 -0.8071 0.0, -0.8268 -1.0039 0.0, -1.0236 -0.4724 0.0, -0.8777 -0.9972 0.0, -0.9252 -0.9776 0.0, -0.966 -0.9463 0.0, -0.9972 -0.9055 0.0, 0.0951 -0.0566 0.0, 0.0998 -0.0573 0.0, 0.103 -0.0573 0.0, 0.5118 -0.0566 0.0, 1.0236 -0.4724 0.0, 1.0236 -0.8071 0.0, 0.8777 -0.9972 0.0, 0.9252 -0.9776 0.0, 0.966 -0.9463 0.0, 1.0169 -0.858 0.0, 0.9972 -0.9055 0.0, -0.0274 1.0039 0.0, -0.0159 -0.0429 0.0, -0.0159 -0.0559 0.0, 0.0475 -0.0559 0.0, -0.013 0.0493 0.0, 0.0317 0.0493 0.0, 0.0317 0.0104 0.0, 0.0705 -0.0498 0.0, 0.0705 -0.0368 0.0, 0.0475 0.0622 0.0, 0.0831 -0.0549 0.0, 0.5118 0.4724 0.0, 1.0236 0.4724 0.0, 0.8268 1.0039 0.0, 1.0236 0.8071 0.0, 1.0169 0.858 0.0, 0.0317 -0.0026 0.0, 0.0317 -0.0429 0.0, -0.0101 -0.0026 0.0, -0.0101 0.0104 0.0, 0.8777 0.9972 0.0, 0.9252 0.9776 0.0, 0.9972 0.9055 0.0, 0.966 0.9463 0.0, 0.229 -0.0559 0.0, 0.11 -0.0566 0.0, 0.1685 -0.0559 0.0, 0.1176 -0.0558 0.0, 0.129 -0.0519 0.0, -0.013 0.0622 0.0, 0.1098 0.0494 0.0, 0.1187 0.0462 0.0, 0.0727 -0.038 0.0, 0.1269 0.0407 0.0, 0.134 0.0329 0.0, 0.1426 0.0019 0.0, 0.1414 -0.0109 0.0, 0.1382 -0.021 0.0, 0.1119 -0.0431 0.0, 0.1009 -0.0444 0.0, 0.1205 -0.04 0.0, 0.1277 -0.0351 0.0, 0.1333 -0.0292 0.0, 0.0852 -0.0426 0.0, 0.1522 0.0311 0.0, 0.1453 0.0422 0.0, 0.2131 0.0622 0.0, 0.1389 0.0237 0.0, 0.142 0.0111 0.0, 0.1346 0.0524 0.0, 0.229 0.0622 0.0, 0.1385 -0.0458 0.0, 0.1474 -0.0365 0.0, 0.1685 -0.0429 0.0, 0.1537 -0.0252 0.0, 0.2131 -0.0429 0.0, 0.1573 -0.0127 0.0, 0.1584 0.0009 0.0, 0.1567 0.0177 0.0, 0.1234 0.0589 0.0, 0.1102 0.0627 0.0, 0.0983 0.0637 0.0, 0.0842 0.0627 0.0, 0.0705 0.059 0.0, 0.0705 0.0431 0.0, 0.0839 0.0488 0.0, 0.0982 0.0507 0.0, -0.1426 -0.0559 0.0, -0.1281 -0.0235 0.0, -0.1213 -0.0341 0.0, -0.5118 0.4724 0.0, -1.0236 0.4724 0.0, -1.0236 0.8071 0.0, -0.8268 1.0039 0.0, -0.8777 0.9972 0.0, -0.1116 -0.0434 0.0, -0.0993 -0.0505 0.0, -0.0857 -0.0546 0.0, -0.2319 -0.0559 0.0, -0.2492 -0.0559 0.0, -0.2031 0.0622 0.0, -0.1873 0.0622 0.0, -0.071 -0.0559 0.0, -0.0389 -0.0559 0.0, -0.0389 0.0622 0.0, -0.0723 0.0622 0.0, -0.1161 0.0468 0.0, -0.1245 0.0376 0.0, -0.13 0.0274 0.0, -0.1599 -0.0559 0.0, -0.1712 -0.0228 0.0, -0.22 -0.0228 0.0, -0.0893 0.0604 0.0, -0.1031 0.0556 0.0, -0.116 0.0469 0.0, -1.0169 0.858 0.0, -0.9972 0.9055 0.0, -0.9252 0.9776 0.0, -0.966 0.9463 0.0, -0.1331 0.0158 0.0, -0.134 0.0047 0.0, -0.1323 -0.0111 0.0, -1.0236 -0.437 0.0354, -1.0236 0.437 0.0354, 1.0236 0.437 0.0354, 1.0236 -0.437 0.0354, 0.5472 -0.437 0.0354, 0.5472 0.437 0.0354, -0.5472 -0.437 0.0354, -0.5472 0.437 0.0354, -0.5472 0.437 0.0354
]
}
coordIndex [
0,1,2,-1,3,4,5,-1,5,4,6,-1,7,8,9,-1,10,11,12,-1,12,11,13,-1,13,14,12,-1,12,14,15,-1,12,15,3,-1,16,17,3,-1,3,17,18,-1,3,18,19,-1,6,20,5,-1,5,20,21,-1,5,21,22,-1,10,12,23,-1,23,12,24,-1,23,24,25,-1,26,27,28,-1,28,27,29,-1,28,29,30,-1,25,31,23,-1,23,31,32,-1,23,32,33,-1,30,29,34,-1,34,29,35,-1,34,35,19,-1,36,37,38,-1,38,37,39,-1,38,39,40,-1,35,41,19,-1,19,41,42,-1,19,42,3,-1,3,42,38,-1,3,38,12,-1,40,43,38,-1,38,43,44,-1,38,44,12,-1,45,46,9,-1,9,46,47,-1,9,47,48,-1,48,49,9,-1,9,49,50,-1,9,50,7,-1,51,52,53,-1,54,55,56,-1,57,58,59,-1,59,58,51,-1,59,51,60,-1,38,45,36,-1,36,45,9,-1,36,9,61,-1,61,9,62,-1,61,62,63,-1,63,62,58,-1,63,58,64,-1,64,58,57,-1,56,55,65,-1,60,51,66,-1,66,51,53,-1,66,53,55,-1,55,53,67,-1,55,67,65,-1,68,69,70,-1,70,69,71,-1,72,73,74,-1,73,68,74,-1,74,68,70,-1,74,70,75,-1,75,70,23,-1,75,23,76,-1,76,23,33,-1,71,77,70,-1,70,77,78,-1,70,78,5,-1,5,78,79,-1,5,79,3,-1,3,79,80,-1,3,80,16,-1,74,81,56,-1,56,81,82,-1,82,83,56,-1,56,83,84,-1,56,84,54,-1,85,58,86,-1,86,58,62,-1,86,62,2,-1,2,62,72,-1,2,72,0,-1,0,72,74,-1,0,74,87,-1,87,74,56,-1,88,89,90,-1,91,92,93,-1,94,95,96,-1,96,95,97,-1,96,97,89,-1,98,99,100,-1,98,100,96,-1,96,100,101,-1,96,101,94,-1,102,103,89,-1,89,103,90,-1,90,103,104,-1,90,104,105,-1,90,106,88,-1,88,106,107,-1,88,107,108,-1,108,107,109,-1,109,107,110,-1,110,107,111,-1,110,111,112,-1,113,114,93,-1,93,114,115,-1,93,115,116,-1,117,118,119,-1,120,116,121,-1,121,116,122,-1,97,91,89,-1,89,91,93,-1,89,93,102,-1,102,93,116,-1,102,116,123,-1,123,116,120,-1,124,113,125,-1,125,113,126,-1,125,126,127,-1,127,126,128,-1,129,130,131,-1,131,130,114,-1,131,114,132,-1,126,133,128,-1,128,133,134,-1,128,134,135,-1,135,134,136,-1,137,138,139,-1,139,138,140,-1,139,140,141,-1,119,132,117,-1,117,132,114,-1,117,114,142,-1,142,114,113,-1,142,113,122,-1,143,144,145,-1,145,144,146,-1,145,146,147,-1,148,149,145,-1,145,149,150,-1,151,152,153,-1,153,152,154,-1,150,155,145,-1,145,155,154,-1,145,154,156,-1,156,154,152,-1,157,158,159,-1,147,160,145,-1,145,160,161,-1,145,161,148,-1,158,162,159,-1,159,162,113,-1,159,113,163,-1,163,113,124,-1,163,124,137,-1,137,124,105,-1,137,105,138,-1,138,105,104,-1,141,164,139,-1,139,164,165,-1,139,165,166,-1,166,165,167,-1,166,167,168,-1,167,169,168,-1,168,169,170,-1,168,170,159,-1,159,170,171,-1,159,171,157,-1,162,172,113,-1,113,172,173,-1,113,173,174,-1,174,175,113,-1,113,175,176,-1,113,176,122,-1,122,176,177,-1,122,177,121,-1,121,177,178,-1,121,178,145,-1,145,178,179,-1,145,179,143,-1,180,181,182,-1,183,184,113,-1,113,184,185,-1,113,185,186,-1,186,185,187,-1,182,188,180,-1,180,188,189,-1,180,189,190,-1,191,93,192,-1,192,93,92,-1,192,92,193,-1,193,92,183,-1,193,183,194,-1,194,183,113,-1,195,196,93,-1,93,196,197,-1,93,197,113,-1,113,197,198,-1,199,200,194,-1,194,200,201,-1,190,195,180,-1,180,195,93,-1,180,93,202,-1,202,93,191,-1,202,191,203,-1,203,191,204,-1,198,205,113,-1,113,205,206,-1,113,206,194,-1,194,206,207,-1,194,207,199,-1,185,208,187,-1,187,208,209,-1,187,209,210,-1,210,209,211,-1,201,212,194,-1,194,212,213,-1,194,213,180,-1,180,213,214,-1,180,214,181,-1,97,95,215,-1,215,95,66,-1,215,66,216,-1,216,66,55,-1,216,55,184,-1,184,55,185,-1,125,127,217,-1,217,127,24,-1,217,24,218,-1,218,24,12,-1,218,12,106,-1,106,12,107,-1,75,126,74,-1,74,126,113,-1,74,113,186,-1,88,36,89,-1,89,36,61,-1,89,61,96,-1,219,220,218,-1,218,220,217,-1,215,216,221,-1,221,216,222,-1,66,95,94,-1,66,94,60,-1,60,94,101,-1,60,101,59,-1,59,101,100,-1,59,100,57,-1,57,100,99,-1,57,99,64,-1,64,99,98,-1,64,98,63,-1,63,98,96,-1,63,96,61,-1,74,186,187,-1,74,187,81,-1,81,187,210,-1,81,210,82,-1,82,210,211,-1,82,211,83,-1,83,211,209,-1,83,209,84,-1,84,209,208,-1,84,208,54,-1,54,208,185,-1,54,185,55,-1,36,88,108,-1,36,108,37,-1,37,108,109,-1,37,109,39,-1,39,109,110,-1,39,110,40,-1,40,110,112,-1,40,112,43,-1,43,112,111,-1,43,111,44,-1,44,111,107,-1,44,107,12,-1,24,127,128,-1,24,128,25,-1,25,128,135,-1,25,135,31,-1,31,135,136,-1,31,136,32,-1,32,136,134,-1,32,134,33,-1,33,134,133,-1,33,133,76,-1,76,133,126,-1,76,126,75,-1,
]
}
}
Shape{
appearance Appearance {
material Material {
diffuseColor 0.0 0.0 0.0
specularColor 0.0 0.0 0.0
ambientIntensity 0.2
transparency 0
shininess 0.5
}
}
geometry IndexedFaceSet {
ccw TRUE
solid FALSE
coord DEF co Coordinate {
point [
-0.2031 0.0622 0.0004, -0.2492 -0.0559 0.0004, -0.2031 0.0622 0.0, -0.2492 -0.0559 0.0, -0.2319 -0.0559 0.0004, -0.2319 -0.0559 0.0, -0.22 -0.0228 0.0004, -0.22 -0.0228 0.0, -0.1712 -0.0228 0.0004, -0.1712 -0.0228 0.0, -0.1599 -0.0559 0.0004, -0.1599 -0.0559 0.0, -0.1426 -0.0559 0.0004, -0.1426 -0.0559 0.0, -0.1873 0.0622 0.0004, -0.1873 0.0622 0.0, -0.1752 -0.0098 0.0004, -0.2147 -0.0098 0.0004, -0.1928 0.0395 0.0004, -0.1939 0.0436 0.0004, -0.1947 0.0478 0.0004, -0.1951 0.0478 0.0004, -0.1958 0.0437 0.0004, -0.1969 0.0395 0.0004, -0.1752 -0.0098 0.0, -0.2147 -0.0098 0.0, -0.1928 0.0395 0.0, -0.1939 0.0436 0.0, -0.1947 0.0478 0.0, -0.1951 0.0478 0.0, -0.1958 0.0437 0.0, -0.1969 0.0395 0.0, -0.071 -0.0559 0.0004, -0.0389 -0.0559 0.0004, -0.071 -0.0559 0.0, -0.0389 -0.0559 0.0, -0.0389 0.0622 0.0004, -0.0389 0.0622 0.0, -0.0723 0.0622 0.0004, -0.0723 0.0622 0.0, -0.134 0.0047 0.0004, -0.134 0.0047 0.0, -0.1331 0.0158 0.0, -0.1331 0.0158 0.0004, -0.13 0.0274 0.0, -0.13 0.0274 0.0004, -0.1245 0.0376 0.0, -0.1245 0.0376 0.0004, -0.1161 0.0468 0.0, -0.1161 0.0468 0.0004, -0.116 0.0469 0.0, -0.116 0.0469 0.0004, -0.1031 0.0556 0.0, -0.1031 0.0556 0.0004, -0.0893 0.0604 0.0, -0.0893 0.0604 0.0004, -0.0857 -0.0546 0.0, -0.0857 -0.0546 0.0004, -0.0993 -0.0505 0.0, -0.0993 -0.0505 0.0004, -0.1116 -0.0434 0.0, -0.1116 -0.0434 0.0004, -0.1213 -0.0341 0.0, -0.1213 -0.0341 0.0004, -0.1281 -0.0235 0.0, -0.1281 -0.0235 0.0004, -0.1323 -0.0111 0.0, -0.1323 -0.0111 0.0004, -0.1103 0.0327 0.0004, -0.1045 0.0388 0.0004, -0.0959 0.0444 0.0004, -0.0862 0.0478 0.0004, -0.0722 0.0493 0.0004, -0.0548 0.0493 0.0004, -0.0548 -0.0429 0.0004, -0.0715 -0.0429 0.0004, -0.084 -0.0418 0.0004, -0.0939 -0.0387 0.0004, -0.102 -0.0339 0.0004, -0.1086 -0.0273 0.0004, -0.1136 -0.0192 0.0004, -0.1171 -0.0081 0.0004, -0.1181 0.0043 0.0004, -0.1171 0.0161 0.0004, -0.1144 0.0254 0.0004, -0.0722 0.0493 0.0, -0.0548 0.0493 0.0, -0.0862 0.0478 0.0, -0.0959 0.0444 0.0, -0.1045 0.0388 -0.0, -0.1103 0.0327 0.0, -0.1144 0.0254 -0.0, -0.1171 0.0161 -0.0, -0.1181 0.0043 0.0, -0.1171 -0.0081 0.0, -0.1136 -0.0192 0.0, -0.1086 -0.0273 0.0, -0.102 -0.0339 0.0, -0.0939 -0.0387 0.0, -0.084 -0.0418 0.0, -0.0715 -0.0429 0.0, -0.0548 -0.0429 0.0, -0.0159 -0.0429 0.0004, -0.0159 -0.0559 0.0004, -0.0159 -0.0429 0.0, -0.0159 -0.0559 0.0, 0.0475 -0.0559 0.0004, 0.0475 -0.0559 0.0, 0.0475 0.0622 0.0004, 0.0475 0.0622 0.0, -0.013 0.0622 0.0004, -0.013 0.0622 0.0, -0.013 0.0493 0.0004, -0.013 0.0493 0.0, 0.0317 0.0493 0.0004, 0.0317 0.0493 0.0, 0.0317 0.0104 0.0004, 0.0317 0.0104 0.0, -0.0101 0.0104 0.0004, -0.0101 0.0104 0.0, -0.0101 -0.0026 0.0004, -0.0101 -0.0026 0.0, 0.0317 -0.0026 0.0004, 0.0317 -0.0026 0.0, 0.0317 -0.0429 0.0004, 0.0317 -0.0429 0.0, 0.0705 -0.0368 0.0004, 0.0705 -0.0498 0.0004, 0.0705 -0.0368 0.0, 0.0705 -0.0498 0.0, 0.0831 -0.0549 0.0004, 0.103 -0.0573 0.0004, 0.103 -0.0573 0.0, 0.0998 -0.0573 0.0, 0.0998 -0.0573 0.0004, 0.0951 -0.0566 0.0, 0.0831 -0.0549 0.0, 0.11 -0.0566 0.0, 0.1176 -0.0558 0.0004, 0.1176 -0.0558 0.0, 0.129 -0.0519 0.0004, 0.129 -0.0519 0.0, 0.1385 -0.0458 0.0004, 0.1385 -0.0458 0.0, 0.1474 -0.0365 0.0004, 0.1474 -0.0365 0.0, 0.1537 -0.0252 0.0004, 0.1537 -0.0252 0.0, 0.1573 -0.0127 0.0004, 0.1573 -0.0127 0.0, 0.1584 0.0009 0.0004, 0.1584 0.0009 0.0, 0.0983 0.0637 0.0004, 0.0983 0.0637 0.0, 0.1102 0.0627 0.0, 0.1102 0.0627 0.0004, 0.1234 0.0589 0.0, 0.1234 0.0589 0.0004, 0.1346 0.0524 0.0, 0.1346 0.0524 0.0004, 0.1453 0.0422 0.0, 0.1453 0.0422 0.0004, 0.1522 0.0311 0.0, 0.1522 0.0311 0.0004, 0.1567 0.0177 0.0, 0.1567 0.0177 0.0004, 0.0705 0.059 0.0004, 0.0705 0.059 0.0, 0.0842 0.0627 0.0, 0.0842 0.0627 0.0004, 0.0705 0.0431 0.0004, 0.0705 0.0431 0.0, 0.0982 0.0507 0.0004, 0.0982 0.0507 0.0, 0.0839 0.0488 0.0, 0.0839 0.0488 0.0004, 0.1426 0.0019 0.0004, 0.1426 0.0019 0.0, 0.142 0.0111 0.0, 0.142 0.0111 0.0004, 0.1389 0.0237 0.0, 0.1389 0.0237 0.0004, 0.134 0.0329 0.0, 0.134 0.0329 0.0004, 0.1269 0.0407 0.0, 0.1269 0.0407 0.0004, 0.1187 0.0462 0.0, 0.1187 0.0462 0.0004, 0.1098 0.0494 0.0, 0.1098 0.0494 0.0004, 0.1009 -0.0444 0.0004, 0.1009 -0.0444 0.0, 0.1119 -0.0431 0.0, 0.1119 -0.0431 0.0004, 0.1205 -0.04 0.0, 0.1205 -0.04 0.0004, 0.1277 -0.0351 0.0, 0.1277 -0.0351 0.0004, 0.1333 -0.0292 0.0, 0.1333 -0.0292 0.0004, 0.1382 -0.021 0.0, 0.1382 -0.021 0.0004, 0.1414 -0.0109 0.0, 0.1414 -0.0109 0.0004, 0.0727 -0.038 0.0, 0.0727 -0.038 0.0004, 0.0852 -0.0426 0.0, 0.0852 -0.0426 0.0004, 0.1685 -0.0429 0.0004, 0.1685 -0.0559 0.0004, 0.1685 -0.0429 0.0, 0.1685 -0.0559 0.0, 0.229 -0.0559 0.0004, 0.229 -0.0559 0.0, 0.229 0.0622 0.0004, 0.229 0.0622 0.0, 0.2131 0.0622 0.0004, 0.2131 0.0622 0.0, 0.2131 -0.0429 0.0004, 0.2131 -0.0429 0.0, 0.2131 -0.0429 0.0
]
}
coordIndex [
0,1,2,-1,2,1,3,-1,1,4,3,-1,3,4,5,-1,4,6,5,-1,5,6,7,-1,6,8,7,-1,7,8,9,-1,8,10,9,-1,9,10,11,-1,10,12,11,-1,11,12,13,-1,12,14,13,-1,13,14,15,-1,14,0,15,-1,15,0,2,-1,16,8,17,-1,17,8,6,-1,18,14,16,-1,16,14,12,-1,16,12,8,-1,8,12,10,-1,18,19,14,-1,14,19,20,-1,14,20,0,-1,0,20,21,-1,0,21,22,-1,22,23,0,-1,0,23,17,-1,0,17,1,-1,1,17,6,-1,1,6,4,-1,16,17,24,-1,24,17,25,-1,18,16,26,-1,26,16,24,-1,18,26,27,-1,18,27,19,-1,19,27,28,-1,19,28,20,-1,21,20,29,-1,29,20,28,-1,21,29,30,-1,21,30,22,-1,22,30,31,-1,22,31,23,-1,17,23,25,-1,25,23,31,-1,32,33,34,-1,34,33,35,-1,33,36,35,-1,35,36,37,-1,36,38,37,-1,37,38,39,-1,40,41,42,-1,40,42,43,-1,43,42,44,-1,43,44,45,-1,45,44,46,-1,45,46,47,-1,47,46,48,-1,47,48,49,-1,49,48,50,-1,49,50,51,-1,51,50,52,-1,51,52,53,-1,53,52,54,-1,53,54,55,-1,55,54,39,-1,55,39,38,-1,32,34,56,-1,32,56,57,-1,57,56,58,-1,57,58,59,-1,59,58,60,-1,59,60,61,-1,61,60,62,-1,61,62,63,-1,63,62,64,-1,63,64,65,-1,65,64,66,-1,65,66,67,-1,67,66,41,-1,67,41,40,-1,45,47,68,-1,68,47,49,-1,68,49,69,-1,69,49,51,-1,69,51,70,-1,70,51,53,-1,70,53,71,-1,71,53,55,-1,71,55,72,-1,72,55,38,-1,72,38,73,-1,73,38,36,-1,73,36,74,-1,74,36,33,-1,74,33,75,-1,75,33,32,-1,75,32,76,-1,76,32,57,-1,76,57,77,-1,77,57,59,-1,77,59,78,-1,78,59,61,-1,78,61,79,-1,79,61,63,-1,79,63,80,-1,80,63,65,-1,80,65,81,-1,81,65,67,-1,81,67,82,-1,82,67,40,-1,82,40,83,-1,83,40,43,-1,83,43,84,-1,84,43,45,-1,84,45,68,-1,72,73,85,-1,85,73,86,-1,72,85,87,-1,72,87,71,-1,71,87,88,-1,71,88,70,-1,70,88,89,-1,70,89,69,-1,69,89,90,-1,69,90,68,-1,68,90,91,-1,68,91,84,-1,84,91,92,-1,84,92,83,-1,83,92,93,-1,83,93,82,-1,82,93,94,-1,82,94,81,-1,81,94,95,-1,81,95,80,-1,80,95,96,-1,80,96,79,-1,79,96,97,-1,79,97,78,-1,78,97,98,-1,78,98,77,-1,77,98,99,-1,77,99,76,-1,76,99,100,-1,76,100,75,-1,74,75,101,-1,101,75,100,-1,73,74,86,-1,86,74,101,-1,102,103,104,-1,104,103,105,-1,103,106,105,-1,105,106,107,-1,106,108,107,-1,107,108,109,-1,108,110,109,-1,109,110,111,-1,110,112,111,-1,111,112,113,-1,112,114,113,-1,113,114,115,-1,114,116,115,-1,115,116,117,-1,116,118,117,-1,117,118,119,-1,118,120,119,-1,119,120,121,-1,120,122,121,-1,121,122,123,-1,122,124,123,-1,123,124,125,-1,124,102,125,-1,125,102,104,-1,106,103,102,-1,102,124,106,-1,106,124,122,-1,106,122,108,-1,112,110,114,-1,114,110,108,-1,114,108,116,-1,116,108,122,-1,116,122,118,-1,118,122,120,-1,126,127,128,-1,128,127,129,-1,129,127,130,-1,131,132,133,-1,131,133,134,-1,134,133,135,-1,134,135,130,-1,130,135,136,-1,130,136,129,-1,132,131,137,-1,137,131,138,-1,137,138,139,-1,139,138,140,-1,139,140,141,-1,141,140,142,-1,141,142,143,-1,143,142,144,-1,143,144,145,-1,145,144,146,-1,145,146,147,-1,147,146,148,-1,147,148,149,-1,149,148,150,-1,149,150,151,-1,152,153,154,-1,152,154,155,-1,155,154,156,-1,155,156,157,-1,157,156,158,-1,157,158,159,-1,159,158,160,-1,159,160,161,-1,161,160,162,-1,161,162,163,-1,163,162,164,-1,163,164,165,-1,165,164,151,-1,165,151,150,-1,166,167,168,-1,166,168,169,-1,169,168,153,-1,169,153,152,-1,166,170,167,-1,167,170,171,-1,172,173,174,-1,172,174,175,-1,175,174,171,-1,175,171,170,-1,176,177,178,-1,176,178,179,-1,179,178,180,-1,179,180,181,-1,181,180,182,-1,181,182,183,-1,183,182,184,-1,183,184,185,-1,185,184,186,-1,185,186,187,-1,187,186,188,-1,187,188,189,-1,189,188,173,-1,189,173,172,-1,190,191,192,-1,190,192,193,-1,193,192,194,-1,193,194,195,-1,195,194,196,-1,195,196,197,-1,197,196,198,-1,197,198,199,-1,199,198,200,-1,199,200,201,-1,201,200,202,-1,201,202,203,-1,203,202,177,-1,203,177,176,-1,126,128,204,-1,126,204,205,-1,205,204,206,-1,205,206,207,-1,207,206,191,-1,207,191,190,-1,193,131,190,-1,190,131,134,-1,190,134,207,-1,207,134,130,-1,207,130,205,-1,205,130,127,-1,205,127,126,-1,170,166,175,-1,175,166,169,-1,175,169,172,-1,172,169,152,-1,172,152,189,-1,189,152,155,-1,189,155,187,-1,187,155,157,-1,187,157,185,-1,185,157,159,-1,185,159,183,-1,183,159,161,-1,183,161,181,-1,181,161,163,-1,181,163,179,-1,179,163,165,-1,179,165,176,-1,176,165,150,-1,176,150,203,-1,203,150,148,-1,203,148,201,-1,201,148,146,-1,201,146,199,-1,199,146,144,-1,199,144,197,-1,197,144,142,-1,197,142,195,-1,195,142,140,-1,195,140,193,-1,193,140,138,-1,193,138,131,-1,208,209,210,-1,210,209,211,-1,209,212,211,-1,211,212,213,-1,212,214,213,-1,213,214,215,-1,214,216,215,-1,215,216,217,-1,216,218,217,-1,217,218,219,-1,218,208,219,-1,219,208,210,-1,216,214,218,-1,218,214,212,-1,218,212,208,-1,208,212,209,-1,
]
}
}
Shape{
appearance Appearance {
material Material {
diffuseColor 0.5019607843137255 0.5019607843137255 0.5019607843137255
specularColor 0.25098039215686274 0.25098039215686274 0.25098039215686274
ambientIntensity 0.2
transparency 0
shininess 0.5
}
}
geometry IndexedFaceSet {
ccw TRUE
solid FALSE
coord DEF co Coordinate {
point [
-0.1752 -0.0098 0.0, -0.2147 -0.0098 0.0, -0.1928 0.0395 0.0, -0.1969 0.0395 0.0, -0.1939 0.0436 0.0, -0.1958 0.0437 0.0, -0.1947 0.0478 0.0, -0.1951 0.0478 0.0, -0.0548 0.0493 0.0, -0.0548 -0.0429 0.0, -0.0722 0.0493 0.0, -0.0715 -0.0429 0.0, -0.084 -0.0418 0.0, -0.1181 0.0043 0.0, -0.1171 0.0161 -0.0, -0.1144 0.0254 -0.0, -0.0862 0.0478 0.0, -0.0939 -0.0387 0.0, -0.102 -0.0339 0.0, -0.1086 -0.0273 0.0, -0.1136 -0.0192 0.0, -0.1171 -0.0081 0.0, -0.1103 0.0327 0.0, -0.1045 0.0388 -0.0, -0.0959 0.0444 0.0, -0.5472 -0.437 0.0354, -0.5118 -0.4724 0.0, -1.0236 -0.437 0.0354, -1.0236 -0.4724 0.0, -0.5118 -0.0566 0.0, -0.5472 0.437 0.0354, -0.5118 0.4724 0.0, -1.0236 0.4724 0.0, -1.0236 0.437 0.0354, 0.5472 0.437 0.0354, 0.5118 0.4724 0.0, 1.0236 0.437 0.0354, 1.0236 0.4724 0.0, 0.5118 -0.0566 0.0, 0.5472 -0.437 0.0354, 0.5118 -0.4724 0.0, 1.0236 -0.437 0.0354, 1.0236 -0.4724 0.0, 1.0236 -0.4724 0.0
]
}
coordIndex [
0,1,2,-1,2,1,3,-1,2,3,4,-1,4,3,5,-1,4,5,6,-1,6,5,7,-1,8,9,10,-1,10,9,11,-1,10,11,12,-1,13,14,10,-1,10,14,15,-1,10,15,16,-1,12,17,10,-1,10,17,18,-1,10,18,19,-1,19,20,10,-1,10,20,21,-1,10,21,13,-1,22,23,15,-1,15,23,24,-1,15,24,16,-1,25,26,27,-1,27,26,28,-1,26,25,29,-1,29,25,30,-1,29,30,31,-1,31,30,32,-1,32,30,33,-1,34,35,36,-1,36,35,37,-1,35,34,38,-1,38,34,39,-1,38,39,40,-1,41,42,39,-1,39,42,40,-1,
]
}
}
Shape{
appearance Appearance {
material Material {
diffuseColor 0.0 0.0 0.0
specularColor 0.0 0.0 0.0
ambientIntensity 0.2
transparency 0
shininess 0.5
}
}
geometry IndexedFaceSet {
ccw TRUE
solid FALSE
coord DEF co Coordinate {
point [
0.4596 0.1878 0.787, 0.4596 0.1578 0.787, 0.4596 0.1878 0.7874, 0.4596 0.1578 0.7874, 0.324 -0.2059 0.787, 0.324 -0.2059 0.7874, 0.3342 -0.1476 0.7874, 0.3342 -0.1476 0.787, 0.3589 -0.063 0.7874, 0.3589 -0.063 0.787, 0.4 0.0392 0.7874, 0.4 0.0392 0.787, 0.2712 -0.2059 0.787, 0.2712 -0.2059 0.7874, 0.4068 0.1446 0.787, 0.4068 0.1446 0.7874, 0.3935 0.1204 0.7874, 0.3935 0.1204 0.787, 0.3595 0.0546 0.7874, 0.3595 0.0546 0.787, 0.3151 -0.0463 0.7874, 0.3151 -0.0463 0.787, 0.2865 -0.132 0.7874, 0.2865 -0.132 0.787, 0.2147 0.1446 0.787, 0.2147 0.1446 0.7874, 0.2147 0.1878 0.787, 0.2147 0.1878 0.7874, 0.111 -0.0868 0.787, 0.1811 -0.2059 0.787, 0.111 -0.0868 0.7874, 0.1811 -0.2059 0.7874, 0.1235 -0.2059 0.787, 0.1235 -0.2059 0.7874, 0.0596 -0.0951 0.787, 0.0596 -0.0951 0.7874, -0.0135 -0.0379 0.787, -0.0135 -0.0379 0.7874, -0.0015 -0.0388 0.7874, -0.0015 -0.0388 0.787, 0.013 -0.0431 0.7874, 0.013 -0.0431 0.787, 0.025 -0.0503 0.7874, 0.025 -0.0503 0.787, 0.0387 -0.0639 0.7874, 0.0387 -0.0639 0.787, -0.0493 -0.0379 0.787, -0.0493 -0.0379 0.7874, -0.0493 -0.2059 0.787, -0.0493 -0.2059 0.7874, -0.1021 -0.2059 0.787, -0.1021 -0.2059 0.7874, -0.1021 0.1878 0.787, -0.1021 0.1878 0.7874, 0.0166 0.1878 0.787, 0.0166 0.1878 0.7874, 0.1379 0.0835 0.787, 0.1379 0.0835 0.7874, 0.1374 0.0958 0.7874, 0.1374 0.0958 0.787, 0.1321 0.1217 0.7874, 0.1321 0.1217 0.787, 0.1229 0.1407 0.7874, 0.1229 0.1407 0.787, 0.1099 0.1565 0.7874, 0.1099 0.1565 0.787, 0.0994 0.1652 0.7874, 0.0994 0.1652 0.787, 0.078 0.1771 0.7874, 0.078 0.1771 0.787, 0.0493 0.1852 0.7874, 0.0493 0.1852 0.787, 0.0526 -0.0218 0.787, 0.0526 -0.0218 0.7874, 0.0565 -0.0206 0.7874, 0.0565 -0.0206 0.787, 0.0878 -0.0074 0.7874, 0.0878 -0.0074 0.787, 0.1085 0.0079 0.7874, 0.1085 0.0079 0.787, 0.1173 0.0175 0.7874, 0.1173 0.0175 0.787, 0.1283 0.0353 0.7874, 0.1283 0.0353 0.787, 0.1353 0.0567 0.7874, 0.1353 0.0567 0.787, 0.0526 -0.0231 0.787, 0.0526 -0.0231 0.7874, 0.1067 -0.0797 0.7874, 0.1067 -0.0797 0.787, 0.0835 -0.0464 0.7874, 0.0835 -0.0464 0.787, 0.0704 -0.0335 0.7874, 0.0704 -0.0335 0.787, 0.0834 0.0962 0.787, 0.0851 0.0792 0.787, 0.009 0.0053 0.787, 0.084 0.0648 0.787, 0.0797 0.0488 0.787, 0.0711 0.0338 0.787, 0.0791 0.1094 0.787, 0.0723 0.1204 0.787, 0.0633 0.1294 0.787, 0.0518 0.1365 0.787, 0.0338 0.1424 0.787, 0.0097 0.1446 0.787, -0.0493 0.1446 0.787, -0.0493 0.0053 0.787, 0.059 0.0213 0.787, 0.0456 0.0129 0.787, 0.0293 0.0074 0.787, 0.0097 0.1446 0.7874, -0.0493 0.1446 0.7874, 0.0338 0.1424 0.7874, 0.0518 0.1365 0.7874, 0.0633 0.1294 0.7874, 0.0723 0.1204 0.7874, 0.0791 0.1094 0.7874, 0.0834 0.0962 0.7874, 0.0851 0.0792 0.7874, 0.084 0.0648 0.7874, 0.0797 0.0488 0.7874, 0.0711 0.0338 0.7874, 0.059 0.0213 0.7874, 0.0456 0.0129 0.7874, 0.0293 0.0074 0.7874, 0.009 0.0053 0.7874, -0.0493 0.0053 0.7874, -0.2735 0.1878 0.787, -0.2222 0.1878 0.787, -0.2735 0.1878 0.7874, -0.2222 0.1878 0.7874, -0.2222 -0.0715 0.787, -0.2222 -0.0715 0.7874, -0.1646 -0.0715 0.787, -0.1646 -0.0715 0.7874, -0.1646 -0.1147 0.787, -0.1646 -0.1147 0.7874, -0.2222 -0.1147 0.787, -0.2222 -0.1147 0.7874, -0.2222 -0.2059 0.787, -0.2222 -0.2059 0.7874, -0.2702 -0.2059 0.787, -0.2702 -0.2059 0.7874, -0.2702 -0.1147 0.787, -0.2702 -0.1147 0.7874, -0.4526 -0.1147 0.787, -0.4526 -0.1147 0.7874, -0.4526 -0.0737 0.787, -0.4526 -0.0737 0.7874, -0.3134 0.1166 0.7874, -0.3134 0.1166 0.787, -0.3826 0.0137 0.7874, -0.3826 0.0137 0.787, -0.2702 0.1155 0.787, -0.2702 -0.0715 0.787, -0.3294 0.0192 0.787, -0.3969 -0.0715 0.787, -0.3969 -0.0715 0.7874, -0.3294 0.0192 0.7874, -0.2702 0.1155 0.7874, -0.2702 -0.0715 0.7874, -0.2702 -0.0715 0.7874
]
}
coordIndex [
0,1,2,-1,2,1,3,-1,4,5,6,-1,4,6,7,-1,7,6,8,-1,7,8,9,-1,9,8,10,-1,9,10,11,-1,11,10,3,-1,11,3,1,-1,4,12,5,-1,5,12,13,-1,14,15,16,-1,14,16,17,-1,17,16,18,-1,17,18,19,-1,19,18,20,-1,19,20,21,-1,21,20,22,-1,21,22,23,-1,23,22,13,-1,23,13,12,-1,14,24,15,-1,15,24,25,-1,24,26,25,-1,25,26,27,-1,26,0,27,-1,27,0,2,-1,26,24,0,-1,0,24,14,-1,12,4,23,-1,23,4,7,-1,23,7,21,-1,21,7,9,-1,21,9,19,-1,19,9,11,-1,19,11,17,-1,17,11,14,-1,14,11,1,-1,14,1,0,-1,28,29,30,-1,30,29,31,-1,29,32,31,-1,31,32,33,-1,32,34,33,-1,33,34,35,-1,36,37,38,-1,36,38,39,-1,39,38,40,-1,39,40,41,-1,41,40,42,-1,41,42,43,-1,43,42,44,-1,43,44,45,-1,45,44,35,-1,45,35,34,-1,36,46,37,-1,37,46,47,-1,46,48,47,-1,47,48,49,-1,48,50,49,-1,49,50,51,-1,50,52,51,-1,51,52,53,-1,52,54,53,-1,53,54,55,-1,56,57,58,-1,56,58,59,-1,59,58,60,-1,59,60,61,-1,61,60,62,-1,61,62,63,-1,63,62,64,-1,63,64,65,-1,65,64,66,-1,65,66,67,-1,67,66,68,-1,67,68,69,-1,69,68,70,-1,69,70,71,-1,71,70,55,-1,71,55,54,-1,72,73,74,-1,72,74,75,-1,75,74,76,-1,75,76,77,-1,77,76,78,-1,77,78,79,-1,79,78,80,-1,79,80,81,-1,81,80,82,-1,81,82,83,-1,83,82,84,-1,83,84,85,-1,85,84,57,-1,85,57,56,-1,72,86,73,-1,73,86,87,-1,28,30,88,-1,28,88,89,-1,89,88,90,-1,89,90,91,-1,91,90,92,-1,91,92,93,-1,93,92,87,-1,93,87,86,-1,94,95,56,-1,52,50,46,-1,46,50,48,-1,96,39,41,-1,56,95,85,-1,85,95,97,-1,85,97,83,-1,83,97,98,-1,83,98,81,-1,81,98,99,-1,81,99,79,-1,96,41,72,-1,72,41,86,-1,86,41,43,-1,86,43,93,-1,93,43,45,-1,93,45,91,-1,91,45,34,-1,91,34,89,-1,89,34,28,-1,28,34,32,-1,28,32,29,-1,56,59,94,-1,94,59,61,-1,94,61,100,-1,100,61,63,-1,100,63,101,-1,101,63,65,-1,101,65,102,-1,102,65,67,-1,102,67,103,-1,103,67,69,-1,103,69,104,-1,104,69,71,-1,104,71,105,-1,105,71,54,-1,105,54,106,-1,106,54,52,-1,106,52,107,-1,107,52,46,-1,107,46,96,-1,96,46,36,-1,96,36,39,-1,79,99,77,-1,77,99,108,-1,77,108,75,-1,75,108,109,-1,75,109,72,-1,72,109,110,-1,72,110,96,-1,105,106,111,-1,111,106,112,-1,105,111,113,-1,105,113,104,-1,104,113,114,-1,104,114,103,-1,103,114,115,-1,103,115,102,-1,102,115,116,-1,102,116,101,-1,101,116,117,-1,101,117,100,-1,100,117,118,-1,100,118,94,-1,94,118,119,-1,94,119,95,-1,95,119,120,-1,95,120,97,-1,97,120,121,-1,97,121,98,-1,98,121,122,-1,98,122,99,-1,99,122,123,-1,99,123,108,-1,108,123,124,-1,108,124,109,-1,109,124,125,-1,109,125,110,-1,110,125,126,-1,110,126,96,-1,107,96,127,-1,127,96,126,-1,106,107,112,-1,112,107,127,-1,128,129,130,-1,130,129,131,-1,129,132,131,-1,131,132,133,-1,132,134,133,-1,133,134,135,-1,134,136,135,-1,135,136,137,-1,136,138,137,-1,137,138,139,-1,138,140,139,-1,139,140,141,-1,140,142,141,-1,141,142,143,-1,142,144,143,-1,143,144,145,-1,144,146,145,-1,145,146,147,-1,146,148,147,-1,147,148,149,-1,128,130,150,-1,128,150,151,-1,151,150,152,-1,151,152,153,-1,153,152,149,-1,153,149,148,-1,129,154,132,-1,132,154,155,-1,142,140,144,-1,144,140,138,-1,129,128,154,-1,154,128,151,-1,154,151,156,-1,156,151,153,-1,156,153,157,-1,136,134,138,-1,138,134,132,-1,138,132,144,-1,144,132,155,-1,144,155,146,-1,146,155,157,-1,146,157,148,-1,148,157,153,-1,157,158,159,-1,157,159,156,-1,156,159,160,-1,156,160,154,-1,155,154,161,-1,161,154,160,-1,157,155,158,-1,158,155,161,-1,
]
}
}
Shape{
appearance Appearance {
material Material {
diffuseColor 0.5019607843137255 0.5019607843137255 0.5019607843137255
specularColor 0.25098039215686274 0.25098039215686274 0.25098039215686274
ambientIntensity 0.2
transparency 0
shininess 0.5
}
}
geometry IndexedFaceSet {
ccw TRUE
solid FALSE
coord DEF co Coordinate {
point [
0.0097 0.1446 0.7874, 0.0851 0.0792 0.7874, 0.0834 0.0962 0.7874, -0.0493 0.1446 0.7874, -0.0493 0.0053 0.7874, 0.009 0.0053 0.7874, 0.0293 0.0074 0.7874, 0.0633 0.1294 0.7874, 0.0723 0.1204 0.7874, 0.0791 0.1094 0.7874, 0.0518 0.1365 0.7874, 0.0338 0.1424 0.7874, 0.0456 0.0129 0.7874, 0.059 0.0213 0.7874, 0.0711 0.0338 0.7874, 0.0797 0.0488 0.7874, 0.084 0.0648 0.7874, -0.3969 -0.0715 0.7874, -0.2702 -0.0715 0.7874, -0.3294 0.0192 0.7874, -0.2702 0.1155 0.7874, -0.2702 0.1155 0.7874
]
}
coordIndex [
0,1,2,-1,3,4,0,-1,0,4,5,-1,0,5,6,-1,7,2,8,-1,8,2,9,-1,7,10,2,-1,2,10,11,-1,2,11,0,-1,6,12,0,-1,0,12,13,-1,0,13,14,-1,14,15,0,-1,0,15,16,-1,0,16,1,-1,17,18,19,-1,19,18,20,-1,
]
}
}

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,178 @@
(footprint "0908SQ-23N"
(version 20241229)
(generator "pcbnew")
(generator_version "9.0")
(layer "F.Cu")
(property "Reference" "REF**"
(at 0.5 -2 0)
(unlocked yes)
(layer "F.SilkS")
(uuid "ff5069db-971e-4012-a8fe-79a0beeecba2")
(effects
(font
(size 0.6 0.6)
(thickness 0.15)
)
)
)
(property "Value" "0908SQ-23N"
(at 0 2.5 0)
(unlocked yes)
(layer "F.Fab")
(uuid "c788aafb-994d-4f0d-a772-19139ed4b02a")
(effects
(font
(size 1 1)
(thickness 0.15)
)
)
)
(property "Datasheet" "https://www.coilcraft.com/getmedia/b4a6ff85-4c1f-448e-aea7-541369538706/sq_spring.pdf"
(at 0 0 0)
(unlocked yes)
(layer "F.Fab")
(hide yes)
(uuid "69f6b539-b4d8-480f-bee6-8714df5845b6")
(effects
(font
(size 1 1)
(thickness 0.15)
)
)
)
(property "Description" "Square Air Core Inductor 24 nH, Q>120, I_rms=4.4 A"
(at 0 0 0)
(unlocked yes)
(layer "F.Fab")
(hide yes)
(uuid "cbff2ecb-ae54-4bf8-ad5c-7f89f71cb09b")
(effects
(font
(size 1 1)
(thickness 0.15)
)
)
)
(attr smd)
(fp_line
(start -0.5 -1.4)
(end 0.5 -1.4)
(stroke
(width 0.1)
(type default)
)
(layer "F.SilkS")
(uuid "89716351-aa68-45c5-9c3e-57a3f007a040")
)
(fp_line
(start -0.5 1.4)
(end -0.5 1.5)
(stroke
(width 0.1)
(type default)
)
(layer "F.SilkS")
(uuid "cea89c5b-1ac2-48fe-a52f-4eaaf0b14cf0")
)
(fp_line
(start -0.5 1.4)
(end 0.5 1.4)
(stroke
(width 0.1)
(type default)
)
(layer "F.SilkS")
(uuid "1d3ae979-5ae2-473f-8263-c0f541358936")
)
(fp_rect
(start -1.3 -1.4)
(end 1.3 1.4)
(stroke
(width 0.05)
(type default)
)
(fill no)
(layer "F.CrtYd")
(uuid "2381b2f1-d50e-475d-b21e-9824096947db")
)
(fp_line
(start -1.2 -1.3)
(end -1.2 1.3)
(stroke
(width 0.1)
(type default)
)
(layer "F.Fab")
(uuid "4ebbb063-9f45-469d-9765-d35393b51da2")
)
(fp_line
(start -1.2 -1.3)
(end 1.2 -1.3)
(stroke
(width 0.1)
(type default)
)
(layer "F.Fab")
(uuid "a13d60b6-8e9f-4ab4-8d58-b542c5386432")
)
(fp_line
(start -1.2 1.3)
(end 1.2 1.3)
(stroke
(width 0.1)
(type default)
)
(layer "F.Fab")
(uuid "26a9057f-9cb3-4820-8fb7-a169dafbc550")
)
(fp_line
(start 1.2 1.3)
(end 1.2 -1.3)
(stroke
(width 0.1)
(type default)
)
(layer "F.Fab")
(uuid "0895da63-d22e-4748-bfb3-4df06a7f00db")
)
(fp_text user "${REFERENCE}"
(at 0 0 0)
(unlocked yes)
(layer "F.Fab")
(uuid "d81c5e90-a27e-4bbc-94be-a0bf45dfe818")
(effects
(font
(size 1 1)
(thickness 0.15)
)
)
)
(pad "1" smd roundrect
(at -0.95 0)
(size 0.64 2.8)
(layers "F.Cu" "F.Mask" "F.Paste")
(roundrect_rratio 0.15)
(thermal_bridge_angle 45)
(uuid "1835b1b7-3832-4dc2-9517-716f0ba370c6")
)
(pad "2" smd roundrect
(at 0.95 0)
(size 0.64 2.8)
(layers "F.Cu" "F.Mask" "F.Paste")
(roundrect_rratio 0.15)
(thermal_bridge_angle 45)
(uuid "cf1fda8d-d25a-4927-a438-7274d4ea4823")
)
(embedded_fonts no)
(model "${KIPRJMOD}/parts/parts.3dshapes/Coilcraft-0908SQ-23N.step"
(offset
(xyz -1 -0.9 0.15)
)
(scale
(xyz 1 1 1)
)
(rotate
(xyz -90 -0 -0)
)
)
)

View file

@ -0,0 +1,327 @@
(footprint "ANT8010LL05R1516A"
(version 20241229)
(generator "pcbnew")
(generator_version "9.0")
(layer "F.Cu")
(descr "8010 GPS/Galileo&GLONASS chip antenna")
(tags "ANT8010LL05R1516A ")
(property "Reference" "REF**"
(at -2.7 -1.5 0)
(unlocked yes)
(layer "F.SilkS")
(uuid "67de59bd-50d3-4153-8a4e-c58c9f058573")
(effects
(font
(size 1 1)
(thickness 0.15)
)
)
)
(property "Value" "ANT8010LL05R1516A"
(at 0 1.9 0)
(unlocked yes)
(layer "F.Fab")
(uuid "21902822-4981-4d76-b82a-56ff1d338bd9")
(effects
(font
(size 1 1)
(thickness 0.15)
)
)
)
(property "Datasheet" ""
(at 0 0 0)
(layer "F.Fab")
(hide yes)
(uuid "d82f4af2-efea-48d6-810c-b6437c2bcc5a")
(effects
(font
(size 1.27 1.27)
(thickness 0.15)
)
)
)
(property "Description" "8010 GPS/Galileo&GLONASS chip antenna"
(at 0 0 0)
(layer "F.Fab")
(hide yes)
(uuid "a0162afe-b591-4e82-8c03-f2a4918b03eb")
(effects
(font
(size 1.27 1.27)
(thickness 0.15)
)
)
)
(attr smd)
(fp_line
(start -2.75315 0.7239)
(end 2.75315 0.7239)
(stroke
(width 0.1524)
(type solid)
)
(layer "F.SilkS")
(uuid "fb87d9b3-72d0-4381-a7a6-3f99b07fda55")
)
(fp_line
(start 2.75315 -0.7239)
(end -2.75315 -0.7239)
(stroke
(width 0.1524)
(type solid)
)
(layer "F.SilkS")
(uuid "584abc94-0543-4317-8301-7be4bfffde06")
)
(fp_circle
(center -4.8 0)
(end -4.7238 0)
(stroke
(width 0.1524)
(type solid)
)
(fill no)
(layer "F.SilkS")
(uuid "0a1074d0-3150-4078-91bd-f934b88f6a92")
)
(fp_line
(start -4.7117 -0.8509)
(end 4.7117 -0.8509)
(stroke
(width 0.1524)
(type solid)
)
(layer "F.CrtYd")
(uuid "24f6b07a-557a-49a1-a7e7-67748dd14889")
)
(fp_line
(start -4.7117 0.8509)
(end -4.7117 -0.8509)
(stroke
(width 0.1524)
(type solid)
)
(layer "F.CrtYd")
(uuid "84618e66-22e8-49da-8e0c-c9960c6a0f85")
)
(fp_line
(start 4.7117 -0.8509)
(end 4.7117 0.8509)
(stroke
(width 0.1524)
(type solid)
)
(layer "F.CrtYd")
(uuid "27a77f1e-c2ef-48b9-b687-674e49c1a581")
)
(fp_line
(start 4.7117 0.8509)
(end -4.7117 0.8509)
(stroke
(width 0.1524)
(type solid)
)
(layer "F.CrtYd")
(uuid "aaef7064-f6bb-4f5c-81c1-5b638144387f")
)
(fp_line
(start -4.1021 -0.5969)
(end -4.1021 0.5969)
(stroke
(width 0.0254)
(type solid)
)
(layer "F.Fab")
(uuid "122c187b-6ae2-4cb6-9eee-acfe815513c7")
)
(fp_line
(start -4.1021 -0.5969)
(end -4.1021 0.5969)
(stroke
(width 0.0254)
(type solid)
)
(layer "F.Fab")
(uuid "3b4e7593-bc53-4675-a50e-571981bf9a77")
)
(fp_line
(start -4.1021 0.5969)
(end -3.0607 0.5969)
(stroke
(width 0.0254)
(type solid)
)
(layer "F.Fab")
(uuid "46fc8b4c-6230-4c27-b345-df0c1b0f74ea")
)
(fp_line
(start -4.1021 0.5969)
(end 4.1021 0.5969)
(stroke
(width 0.0254)
(type solid)
)
(layer "F.Fab")
(uuid "ab67247b-62e8-4b19-91c6-03251b837afd")
)
(fp_line
(start -3.0607 -0.5969)
(end -4.1021 -0.5969)
(stroke
(width 0.0254)
(type solid)
)
(layer "F.Fab")
(uuid "ea8f05df-6873-433c-b723-188f4297daba")
)
(fp_line
(start -3.0607 0.5969)
(end -3.0607 -0.5969)
(stroke
(width 0.0254)
(type solid)
)
(layer "F.Fab")
(uuid "69a84e84-26fd-45e7-8a91-d5d3d03e320e")
)
(fp_line
(start 3.0607 -0.5969)
(end 3.0607 0.5969)
(stroke
(width 0.0254)
(type solid)
)
(layer "F.Fab")
(uuid "87289390-3cf6-46d8-b4fd-21de84fc60ac")
)
(fp_line
(start 3.0607 0.5969)
(end 4.1021 0.5969)
(stroke
(width 0.0254)
(type solid)
)
(layer "F.Fab")
(uuid "9e0b509f-4f6a-47f3-8e27-b043408466de")
)
(fp_line
(start 4.1021 -0.5969)
(end -4.1021 -0.5969)
(stroke
(width 0.0254)
(type solid)
)
(layer "F.Fab")
(uuid "0b6afa09-8a18-4b64-8d07-6e812735759c")
)
(fp_line
(start 4.1021 -0.5969)
(end 3.0607 -0.5969)
(stroke
(width 0.0254)
(type solid)
)
(layer "F.Fab")
(uuid "3dbd06af-f6b6-4b85-a699-be9d9b213986")
)
(fp_line
(start 4.1021 0.5969)
(end 4.1021 -0.5969)
(stroke
(width 0.0254)
(type solid)
)
(layer "F.Fab")
(uuid "2a578d8d-ba06-4e7c-8a6d-7d24bcb26903")
)
(fp_line
(start 4.1021 0.5969)
(end 4.1021 -0.5969)
(stroke
(width 0.0254)
(type solid)
)
(layer "F.Fab")
(uuid "7c9618c0-8275-4613-aaf2-595256883d05")
)
(fp_circle
(center -3.6322 0)
(end -3.556 0)
(stroke
(width 0.0254)
(type solid)
)
(fill no)
(layer "F.Fab")
(uuid "49375d77-fd81-4fd9-a68f-5d1bc1e75bc0")
)
(fp_text user "${REFERENCE}"
(at 0 0 0)
(unlocked yes)
(layer "F.Fab")
(uuid "95ac6dba-5ee0-4552-a1f1-2d31ef0c3f39")
(effects
(font
(size 1 1)
(thickness 0.15)
)
)
)
(pad "1" smd rect
(at -3.7592 0)
(size 1.397 1.1938)
(layers "F.Cu" "F.Mask" "F.Paste")
(uuid "0229653a-e7b6-4587-8855-9cce52519c5f")
)
(pad "2" smd rect
(at 3.7592 0)
(size 1.397 1.1938)
(layers "F.Cu" "F.Mask" "F.Paste")
(uuid "2af865ae-2dc5-4ea1-887a-94d7706972a2")
)
(zone
(net 0)
(net_name "")
(layer "F.Cu")
(uuid "d6caf877-bc81-468e-b4b0-dea1ddfa3bcc")
(hatch full 0.508)
(connect_pads
(clearance 0)
)
(min_thickness 0.254)
(filled_areas_thickness no)
(keepout
(tracks not_allowed)
(vias not_allowed)
(pads allowed)
(copperpour not_allowed)
(footprints allowed)
)
(placement
(enabled no)
(sheetname "")
)
(fill
(thermal_gap 0.508)
(thermal_bridge_width 0.508)
)
(polygon
(pts
(xy -3.0099 -0.5461) (xy 3.0099 -0.5461) (xy 3.0099 0.5461) (xy -3.0099 0.5461)
)
)
)
(embedded_fonts no)
(model "${KIPRJMOD}/parts/parts.3dshapes/ANT8010LL05R1516A.step"
(offset
(xyz 0 0 0)
)
(scale
(xyz 1 1 1)
)
(rotate
(xyz 0 0 0)
)
)
)

View file

@ -203,7 +203,7 @@
)
(pad "1" smd roundrect
(at -4.1 0)
(size 2.9 9.3)
(size 2.8 9.3)
(layers "F.Cu" "F.Mask" "F.Paste")
(roundrect_rratio 0.05172413793)
(thermal_bridge_angle 45)
@ -219,7 +219,7 @@
)
(pad "3" smd roundrect
(at 4.1 0)
(size 2.9 9.3)
(size 2.8 9.3)
(layers "F.Cu" "F.Mask" "F.Paste")
(roundrect_rratio 0.05172413793)
(thermal_bridge_angle 45)

View file

@ -8,7 +8,7 @@
(at 0 -3 0)
(unlocked yes)
(layer "F.SilkS")
(uuid "9af3315f-3760-4431-a6d3-c961daf93e0a")
(uuid "80102fe9-2f24-4f9f-af06-d957a2339c3f")
(effects
(font
(size 1 1)
@ -20,7 +20,7 @@
(at 0 2.2 0)
(unlocked yes)
(layer "F.Fab")
(uuid "9d3c0d20-9c00-4712-8c97-a71c278c659a")
(uuid "a34d2d62-0765-4da1-ac9b-635ed076b59b")
(effects
(font
(size 1 1)
@ -33,7 +33,7 @@
(unlocked yes)
(layer "F.Fab")
(hide yes)
(uuid "c28d025e-402e-4cd7-87a2-b885ccf131d2")
(uuid "48f94bd9-c136-4e26-9877-e2fb97835e49")
(effects
(font
(size 1 1)
@ -46,7 +46,7 @@
(unlocked yes)
(layer "F.Fab")
(hide yes)
(uuid "4e4892f0-6178-4cfa-9179-fe538b4e4f39")
(uuid "905148bf-d207-4ac9-b1d9-6ecfe4380d18")
(effects
(font
(size 1 1)
@ -55,27 +55,25 @@
)
)
(attr through_hole)
(fp_rect
(fp_line
(start -5 -8.1)
(end 5 -4.1)
(end 5 -8.1)
(stroke
(width 0.2)
(type solid)
(type default)
)
(fill yes)
(layer "F.Cu")
(uuid "1ff807b3-8eae-4b5a-8e89-e82ec4751ea9")
(layer "F.SilkS")
(uuid "18f6e088-da08-4668-8d80-c7d79016a9fc")
)
(fp_rect
(start -5 -8.1)
(end 5 -4.1)
(fp_line
(start -5 -5.95)
(end -5 -8.1)
(stroke
(width 0.2)
(type solid)
(type default)
)
(fill yes)
(layer "F.Mask")
(uuid "57a24409-9f7c-4928-9e1a-216ce6332f1e")
(layer "F.SilkS")
(uuid "fa4fe366-408f-40d3-9128-0e4577149e01")
)
(fp_line
(start -4.5 -13.2)
@ -88,7 +86,7 @@
(uuid "badf7925-5582-499b-9c06-d9bc6933b1fc")
)
(fp_line
(start -4.5 -8.3)
(start -4.5 -8.15)
(end -4.5 -13.2)
(stroke
(width 0.1)
@ -98,7 +96,7 @@
(uuid "27cdc8fc-256e-4503-a5d1-d81e2654d22c")
)
(fp_line
(start -4.5 -3.9)
(start -4.5 -4.1)
(end -4.5 -2.1)
(stroke
(width 0.1)
@ -137,9 +135,19 @@
(layer "F.SilkS")
(uuid "433ca06d-cd4f-40a0-9f39-38c104bc18b2")
)
(fp_line
(start 3 -4.1)
(end -3 -4.1)
(stroke
(width 0.2)
(type default)
)
(layer "F.SilkS")
(uuid "2d8c67bf-57cd-4c7b-b11b-0b9090a11228")
)
(fp_line
(start 4.5 -13.2)
(end 4.5 -8.3)
(end 4.5 -8.1)
(stroke
(width 0.1)
(type default)
@ -149,7 +157,7 @@
)
(fp_line
(start 4.5 -2.1)
(end 4.5 -3.9)
(end 4.5 -4.1)
(stroke
(width 0.1)
(type default)
@ -157,6 +165,16 @@
(layer "F.SilkS")
(uuid "b506e301-9ea3-460a-beda-b6c8179b844e")
)
(fp_line
(start 5 -8.1)
(end 5 -5.95)
(stroke
(width 0.2)
(type default)
)
(layer "F.SilkS")
(uuid "bca821a7-5e69-45e2-8cd9-19084b97066c")
)
(fp_text user "${REFERENCE}"
(at 0 3.7 0)
(unlocked yes)

View file

@ -0,0 +1,139 @@
(footprint "Fuse_1812L200"
(version 20241229)
(generator "pcbnew")
(generator_version "9.0")
(layer "F.Cu")
(descr "16V 2A 100A 4A 20mΩ 1812 PTC Resettable Fuses")
(property "Reference" "REF**"
(at 0 -2.05 0)
(unlocked yes)
(layer "F.SilkS")
(uuid "af2fd0fe-a6b0-4ede-99e9-afca1a15eabe")
(effects
(font
(size 0.6 0.6)
(thickness 0.15)
(bold yes)
)
)
)
(property "Value" "1812L200"
(at 0 2.4 0)
(unlocked yes)
(layer "F.Fab")
(uuid "c2b87a99-99c0-4a9a-92c4-2df3f5800af5")
(effects
(font
(size 1 1)
(thickness 0.15)
)
)
)
(property "Datasheet" ""
(at 0 0 0)
(unlocked yes)
(layer "F.Fab")
(hide yes)
(uuid "c084fba9-c381-4ee9-9f09-3125d2a42c7b")
(effects
(font
(size 1 1)
(thickness 0.15)
)
)
)
(property "Description" "16V 2A 100A 4A 20mΩ 1812 PTC Resettable Fuses"
(at 0 0 0)
(unlocked yes)
(layer "F.Fab")
(hide yes)
(uuid "2deff168-1cff-4a8b-8de0-8c1c73a28161")
(effects
(font
(size 1 1)
(thickness 0.15)
)
)
)
(attr smd)
(fp_line
(start -1.3 -1.5)
(end 1.3 -1.5)
(stroke
(width 0.2)
(type default)
)
(layer "F.SilkS")
(uuid "80f3575f-ad24-4bef-8c93-21539d1c40ae")
)
(fp_line
(start 1.3 1.5)
(end -1.3 1.5)
(stroke
(width 0.2)
(type default)
)
(layer "F.SilkS")
(uuid "e795d725-0e38-471c-9559-6d528f447fae")
)
(fp_rect
(start -3.35 -1.7)
(end 3.35 1.7)
(stroke
(width 0.05)
(type default)
)
(fill no)
(layer "F.CrtYd")
(uuid "c6a858da-55df-47c9-afc8-8a6ceb14ddf0")
)
(fp_rect
(start -2.25 -1.55)
(end 2.25 1.55)
(stroke
(width 0.1)
(type solid)
)
(fill no)
(layer "F.Fab")
(uuid "269c2f99-0ae4-4b3e-9260-e2fe6830033e")
)
(fp_text user "${REFERENCE}"
(at 0 0 0)
(unlocked yes)
(layer "F.Fab")
(uuid "7d52f6eb-3607-49d7-b956-aba6f75e540b")
(effects
(font
(size 1 1)
(thickness 0.15)
)
)
)
(pad "1" smd roundrect
(at -2.2 0)
(size 1.6 3.15)
(layers "F.Cu" "F.Mask" "F.Paste")
(roundrect_rratio 0.1)
(uuid "1596402f-1968-4744-8536-4d34377fd0f1")
)
(pad "2" smd roundrect
(at 2.2 0)
(size 1.6 3.15)
(layers "F.Cu" "F.Mask" "F.Paste")
(roundrect_rratio 0.1)
(uuid "4f990784-974c-4158-9f6c-1dc006e80997")
)
(embedded_fonts no)
(model "${KIPRJMOD}/parts/parts.3dshapes/F1812_L4.5-W3.2-H1.0.step"
(offset
(xyz 0 0 0)
)
(scale
(xyz 1 1 1)
)
(rotate
(xyz 0 0 0)
)
)
)

View file

@ -0,0 +1,599 @@
(footprint "Jack_3.5mm_CUI_SJ1-3525N_Modified"
(version 20241229)
(generator "pcbnew")
(generator_version "9.0")
(layer "F.Cu")
(descr "TRS 3.5mm, horizontal, through-hole, https://www.cuidevices.com/product/resource/pdf/sj1-352xn.pdf")
(tags "TRS audio jack stereo horizontal")
(property "Reference" "REF**"
(at 0 -8.8 0)
(layer "F.SilkS")
(uuid "1add7dcf-a760-4acf-a8df-7191842316d8")
(effects
(font
(size 1 1)
(thickness 0.15)
)
)
)
(property "Value" "Jack_3.5mm_CUI_SJ1-3525N_Modified"
(at 0 -10 0)
(layer "F.Fab")
(uuid "6612f225-863e-4980-926d-c81f7a4c0ba5")
(effects
(font
(size 1 1)
(thickness 0.15)
)
)
)
(property "Datasheet" ""
(at 0 0 0)
(unlocked yes)
(layer "F.Fab")
(hide yes)
(uuid "87b43f88-e722-4fe0-a9f0-7872afe98c67")
(effects
(font
(size 1.27 1.27)
(thickness 0.15)
)
)
)
(property "Description" ""
(at 0 0 0)
(unlocked yes)
(layer "F.Fab")
(hide yes)
(uuid "fcc3ef8c-8425-4c05-ab28-aa0bbbe4a25a")
(effects
(font
(size 1.27 1.27)
(thickness 0.15)
)
)
)
(attr through_hole exclude_from_pos_files exclude_from_bom)
(fp_line
(start -6 -7.7)
(end 6 -7.7)
(stroke
(width 0.12)
(type solid)
)
(layer "F.SilkS")
(uuid "c4ed921b-5978-4907-b8ae-6b0640f1dea6")
)
(fp_line
(start -6 3.3)
(end -6 -7.7)
(stroke
(width 0.12)
(type solid)
)
(layer "F.SilkS")
(uuid "11374064-f99a-4833-9a35-64656a6379df")
)
(fp_line
(start -4.5 3.3)
(end -6 3.3)
(stroke
(width 0.12)
(type solid)
)
(layer "F.SilkS")
(uuid "fcc64e02-2983-4a1e-a31b-27dcbbb26eb0")
)
(fp_line
(start -4.5 4.5)
(end -4.5 3.3)
(stroke
(width 0.12)
(type solid)
)
(layer "F.SilkS")
(uuid "5973c661-5067-4d11-9c7c-eb9ecb3fcf1e")
)
(fp_line
(start -3 4.5)
(end -4.5 4.5)
(stroke
(width 0.12)
(type solid)
)
(layer "F.SilkS")
(uuid "5f44e682-5a0e-4909-91c5-de6e1fd3e758")
)
(fp_line
(start -3 6.3)
(end -3 4.5)
(stroke
(width 0.12)
(type solid)
)
(layer "F.SilkS")
(uuid "12804b3f-e88a-4b05-8f3f-5e0cea0160bf")
)
(fp_line
(start -2 3.3)
(end -2 6.3)
(stroke
(width 0.12)
(type solid)
)
(layer "F.SilkS")
(uuid "fe268b09-68ad-41a9-be41-1a6da3eae22d")
)
(fp_line
(start 2 3.3)
(end -2 3.3)
(stroke
(width 0.12)
(type solid)
)
(layer "F.SilkS")
(uuid "d6f8847e-63f1-4d60-b6d0-26b3d97acaf0")
)
(fp_line
(start 2 6.3)
(end 2 3.3)
(stroke
(width 0.12)
(type solid)
)
(layer "F.SilkS")
(uuid "b6f51c18-3efd-4627-a77f-6d7cc1dccb64")
)
(fp_line
(start 3 4.5)
(end 3 6.3)
(stroke
(width 0.12)
(type solid)
)
(layer "F.SilkS")
(uuid "d0f77083-129b-4203-807d-640854c1c549")
)
(fp_line
(start 3 6.3)
(end -3 6.3)
(stroke
(width 0.12)
(type solid)
)
(layer "F.SilkS")
(uuid "2f7a40ad-250c-4f5a-8245-765c568de5c7")
)
(fp_line
(start 4.5 3.3)
(end 4.5 4.5)
(stroke
(width 0.12)
(type solid)
)
(layer "F.SilkS")
(uuid "17b9415d-4048-4dad-a12f-0690dcdf82b5")
)
(fp_line
(start 4.5 4.5)
(end 3 4.5)
(stroke
(width 0.12)
(type solid)
)
(layer "F.SilkS")
(uuid "dfb46782-e4ff-42a6-8adb-edd75045139d")
)
(fp_line
(start 6 -7.7)
(end 6 3.3)
(stroke
(width 0.12)
(type solid)
)
(layer "F.SilkS")
(uuid "dcf98f86-aaf6-490c-98c3-b153f5552ef1")
)
(fp_line
(start 6 3.3)
(end 4.5 3.3)
(stroke
(width 0.12)
(type solid)
)
(layer "F.SilkS")
(uuid "ad62fed3-471e-4fc4-a7a0-4482ab1ce7ee")
)
(fp_line
(start -3.15 3.500002)
(end -3.15 5.35)
(stroke
(width 0.12)
(type solid)
)
(layer "Edge.Cuts")
(uuid "48f41604-a6e1-4446-881f-772a3ab9e3cf")
)
(fp_line
(start -3.15 5.35)
(end -6 5.35)
(stroke
(width 0.12)
(type solid)
)
(layer "Edge.Cuts")
(uuid "910d111c-8356-4b3a-a4cd-22f14c2881a3")
)
(fp_line
(start 2.75 3.1)
(end -2.75 3.1)
(stroke
(width 0.12)
(type solid)
)
(layer "Edge.Cuts")
(uuid "5a978aba-42e4-4034-9a73-91bf03f2f54d")
)
(fp_line
(start 3.15 3.5)
(end 3.15 5.35)
(stroke
(width 0.12)
(type solid)
)
(layer "Edge.Cuts")
(uuid "cef4abab-1d99-4638-bfd7-bf65ee264ed6")
)
(fp_line
(start 3.15 5.35)
(end 6 5.35)
(stroke
(width 0.12)
(type solid)
)
(layer "Edge.Cuts")
(uuid "1f9968e1-0eee-4dd9-9f60-e366337fcb8a")
)
(fp_arc
(start -3.15 3.5)
(mid -3.032842 3.217158)
(end -2.75 3.1)
(stroke
(width 0.12)
(type solid)
)
(layer "Edge.Cuts")
(uuid "79a8ddb1-bca0-4377-810d-bba745d0d47a")
)
(fp_arc
(start 2.75 3.1)
(mid 3.032843 3.217157)
(end 3.15 3.5)
(stroke
(width 0.12)
(type solid)
)
(layer "Edge.Cuts")
(uuid "fe3354f4-538b-4062-a2ed-7998da18de18")
)
(fp_line
(start -6.25 -7.95)
(end -6.25 4.75)
(stroke
(width 0.05)
(type solid)
)
(layer "F.CrtYd")
(uuid "e37c8ee8-778f-4fb1-a382-58b7f13327aa")
)
(fp_line
(start -6.25 4.75)
(end -3.25 4.75)
(stroke
(width 0.05)
(type solid)
)
(layer "F.CrtYd")
(uuid "ff22bc1d-7252-46c8-aa56-2fcf3b0aed98")
)
(fp_line
(start -3.25 4.75)
(end -3.25 6.55)
(stroke
(width 0.05)
(type solid)
)
(layer "F.CrtYd")
(uuid "d9f9bc89-eae5-48cd-8b86-84d6abf51ccf")
)
(fp_line
(start -3.25 6.55)
(end 3.25 6.55)
(stroke
(width 0.05)
(type solid)
)
(layer "F.CrtYd")
(uuid "518d3713-0903-49d2-b864-26e173b8a0f9")
)
(fp_line
(start 3.25 4.75)
(end 6.25 4.75)
(stroke
(width 0.05)
(type solid)
)
(layer "F.CrtYd")
(uuid "f84130ff-a1e0-4834-9cae-bfae1372f93a")
)
(fp_line
(start 3.25 6.55)
(end 3.25 4.75)
(stroke
(width 0.05)
(type solid)
)
(layer "F.CrtYd")
(uuid "ed8ec206-fcda-446a-9175-18a5c3a8bbe7")
)
(fp_line
(start 6.25 -7.95)
(end -6.25 -7.95)
(stroke
(width 0.05)
(type solid)
)
(layer "F.CrtYd")
(uuid "e5bc91ed-6863-431b-8065-13df5a5a19bf")
)
(fp_line
(start 6.25 4.5)
(end 6.25 -7.95)
(stroke
(width 0.05)
(type solid)
)
(layer "F.CrtYd")
(uuid "8a1bbd25-8cbb-424a-9b43-5d9e23660e59")
)
(fp_line
(start 6.25 4.75)
(end 6.25 4.5)
(stroke
(width 0.05)
(type solid)
)
(layer "F.CrtYd")
(uuid "fea8efb1-2ef5-475a-af92-65909d0f7abe")
)
(fp_line
(start -6 -7.7)
(end 6 -7.7)
(stroke
(width 0.1)
(type solid)
)
(layer "F.Fab")
(uuid "d3c3fba2-2c99-4639-82b3-def615a0a111")
)
(fp_line
(start -6 3.3)
(end -6 -7.7)
(stroke
(width 0.1)
(type solid)
)
(layer "F.Fab")
(uuid "67f0fbee-d2a9-4d1e-b5f5-53c6e26db37e")
)
(fp_line
(start -4.5 3.3)
(end -6 3.3)
(stroke
(width 0.1)
(type solid)
)
(layer "F.Fab")
(uuid "6c9e6964-8f4f-4037-9cfa-40ec74f90ccb")
)
(fp_line
(start -4.5 4.5)
(end -4.5 3.3)
(stroke
(width 0.1)
(type solid)
)
(layer "F.Fab")
(uuid "d2eed008-515f-4d80-8797-64a02ee1a5fb")
)
(fp_line
(start -4.5 4.5)
(end -3 4.5)
(stroke
(width 0.1)
(type solid)
)
(layer "F.Fab")
(uuid "433d632b-1af0-4c6d-b40c-06543e114522")
)
(fp_line
(start -3 4.5)
(end -3 6.3)
(stroke
(width 0.1)
(type solid)
)
(layer "F.Fab")
(uuid "60c30c46-20da-47d2-8dde-e79a9730c8eb")
)
(fp_line
(start -3 6.3)
(end 3 6.3)
(stroke
(width 0.1)
(type solid)
)
(layer "F.Fab")
(uuid "290850ed-73e2-4ba6-869e-4fef127cbb88")
)
(fp_line
(start 3 4.5)
(end 3 6.3)
(stroke
(width 0.1)
(type solid)
)
(layer "F.Fab")
(uuid "3498781e-a632-473a-8750-c7318af73043")
)
(fp_line
(start 4.5 3.3)
(end 6 3.3)
(stroke
(width 0.1)
(type solid)
)
(layer "F.Fab")
(uuid "9f408fd4-cdec-42a6-b29a-045b39095465")
)
(fp_line
(start 4.5 4.5)
(end 3 4.5)
(stroke
(width 0.1)
(type solid)
)
(layer "F.Fab")
(uuid "8c470310-04d8-41c3-adc3-7a545498423f")
)
(fp_line
(start 4.5 4.5)
(end 4.5 3.3)
(stroke
(width 0.1)
(type solid)
)
(layer "F.Fab")
(uuid "a299908d-8fba-44bb-b5be-a7436df93aae")
)
(fp_line
(start 6 3.3)
(end 6 -7.7)
(stroke
(width 0.1)
(type solid)
)
(layer "F.Fab")
(uuid "c692bdd3-7f87-4426-a4f0-4d6ad56edfad")
)
(fp_text user "PCB edge"
(at 0 6.3 0)
(unlocked yes)
(layer "Dwgs.User")
(uuid "280aa230-a25f-414c-9d84-47f182621149")
(effects
(font
(size 1 1)
(thickness 0.15)
)
)
)
(fp_text user "${REFERENCE}"
(at 0 -1.5 0)
(layer "F.Fab")
(uuid "085988cb-9879-4ac3-a25a-5a2bd7285627")
(effects
(font
(size 1 1)
(thickness 0.15)
)
)
)
(pad "" np_thru_hole circle
(at -5 0)
(size 1.2 1.2)
(drill 1.2)
(layers "*.Cu" "*.Mask")
(uuid "2a6783be-49b7-4a5e-8837-fde4f5b6b326")
)
(pad "" np_thru_hole circle
(at -5 2.5)
(size 1.2 1.2)
(drill 1.2)
(layers "*.Cu" "*.Mask")
(uuid "43e28b64-3f22-4d06-a9d9-1a6cbaeb55e4")
)
(pad "" np_thru_hole circle
(at 0 -5)
(size 1.2 1.2)
(drill 1.2)
(layers "*.Cu" "*.Mask")
(uuid "c28e13f1-55b0-4023-8004-5c43f3cb0c59")
)
(pad "" np_thru_hole circle
(at 5 0)
(size 1.2 1.2)
(drill 1.2)
(layers "*.Cu" "*.Mask")
(uuid "a43ddcff-5f56-4ac9-9af6-caeb3e1e6b3b")
)
(pad "" np_thru_hole circle
(at 5 2.5)
(size 1.2 1.2)
(drill 1.2)
(layers "*.Cu" "*.Mask")
(uuid "0dcf70ee-cde7-482b-a3e5-44427c25dbc7")
)
(pad "R" thru_hole oval
(at -5 -5)
(size 1.2 2.2)
(drill oval 0.4 1.4)
(layers "*.Cu" "*.Mask")
(remove_unused_layers no)
(uuid "e54c28a1-dfb5-4e3f-8b5a-7dd641ca7f3c")
)
(pad "RN" thru_hole oval
(at -2.5 -5)
(size 1.6 2.3)
(drill oval 0.8 1.5)
(layers "*.Cu" "*.Mask")
(remove_unused_layers no)
(uuid "02b5eb1d-379e-426e-a14c-f52b3a21405a")
)
(pad "S" thru_hole oval
(at 0 0)
(size 2.2 1.2)
(drill oval 1.4 0.4)
(layers "*.Cu" "*.Mask")
(remove_unused_layers no)
(uuid "3ed7e64f-b114-42be-9bef-9a493d918a48")
)
(pad "T" thru_hole oval
(at 5 -5 180)
(size 1.2 2.2)
(drill oval 0.4 1.4)
(layers "*.Cu" "*.Mask")
(remove_unused_layers no)
(uuid "9fc83e1c-4425-4cec-92d0-a925a45db0ce")
)
(pad "TN" thru_hole oval
(at 2.5 -5 180)
(size 1.6 2.5)
(drill oval 0.8 1.5)
(layers "*.Cu" "*.Mask")
(remove_unused_layers no)
(uuid "1e85fd63-1943-4c11-8b94-66b8fbf95e55")
)
(embedded_fonts no)
(model "${KICAD9_3DMODEL_DIR}/Connector_Audio.3dshapes/Jack_3.5mm_CUI_SJ1-3525N_Horizontal.step"
(offset
(xyz 0 0 0)
)
(scale
(xyz 1 1 1)
)
(rotate
(xyz 0 0 0)
)
)
)

View file

@ -0,0 +1,464 @@
(footprint "LG77L"
(version 20241229)
(generator "pcbnew")
(generator_version "9.0")
(layer "F.Cu")
(descr "Footprint of the Quectel LG77L GNSS module")
(property "Reference" "REF**"
(at -2.6 -4.1 0)
(unlocked yes)
(layer "F.SilkS")
(uuid "5a4a5c43-0705-4e50-a7d4-086544a98c0e")
(effects
(font
(size 0.6 0.6)
(thickness 0.1)
)
)
)
(property "Value" "LG77L"
(at 0 0 0)
(unlocked yes)
(layer "F.Fab")
(uuid "f118f25f-baa0-401f-bc89-ad33a73892ae")
(effects
(font
(size 1 1)
(thickness 0.15)
)
)
)
(property "Datasheet" ""
(at 0 0 0)
(unlocked yes)
(layer "F.Fab")
(hide yes)
(uuid "d2c786e6-4cab-4760-950d-efcc0684fb4e")
(effects
(font
(size 1 1)
(thickness 0.15)
)
)
)
(property "Description" "Footprint of the Quectel LG77L GNSS module"
(at 0 0 0)
(unlocked yes)
(layer "F.Fab")
(hide yes)
(uuid "d71725b2-61d6-4d32-adb0-a029871e94f4")
(effects
(font
(size 1 1)
(thickness 0.15)
)
)
)
(attr smd)
(fp_line
(start -3.7 -3.7)
(end -3.15 -3.7)
(stroke
(width 0.1)
(type solid)
)
(layer "F.SilkS")
(uuid "998a6c69-d629-4dc8-96a8-f738f45ebe67")
)
(fp_line
(start -3.7 -3.35)
(end -3.35 -3.7)
(stroke
(width 0.1)
(type solid)
)
(layer "F.SilkS")
(uuid "1273686e-e3e6-4fc8-9308-84fb6efca4df")
)
(fp_line
(start -3.7 -3.15)
(end -3.7 -3.7)
(stroke
(width 0.1)
(type solid)
)
(layer "F.SilkS")
(uuid "6e1c00a2-8509-4454-ac10-f4b5b854a1dc")
)
(fp_line
(start -3.5 -3.5)
(end 3.5 -3.5)
(stroke
(width 0.1)
(type solid)
)
(layer "F.SilkS")
(uuid "4fd4c71a-3ee3-42ae-b2d7-1945f1aae112")
)
(fp_line
(start -3.5 3.5)
(end -3.5 -3.5)
(stroke
(width 0.1)
(type solid)
)
(layer "F.SilkS")
(uuid "7aae71df-5d86-4554-af04-60abf87632d0")
)
(fp_line
(start -3.5 3.5)
(end 3.5 3.5)
(stroke
(width 0.1)
(type solid)
)
(layer "F.SilkS")
(uuid "48996a6c-9adf-4ef1-8aa5-214cf10145a8")
)
(fp_line
(start 3.5 3.5)
(end 3.5 -3.5)
(stroke
(width 0.1)
(type solid)
)
(layer "F.SilkS")
(uuid "039ccfb8-4512-4397-944d-6c63f82aebe9")
)
(fp_rect
(start -3.7 -3.7)
(end 3.7 3.7)
(stroke
(width 0.05)
(type default)
)
(fill no)
(layer "F.CrtYd")
(uuid "a42469c2-6809-4336-b217-97a467bf35e0")
)
(fp_text user "${REFERENCE}"
(at 0 1.5 0)
(unlocked yes)
(layer "F.Fab")
(uuid "8c8aca7e-4089-4f4a-bd9e-86cba41b2b05")
(effects
(font
(size 1 1)
(thickness 0.15)
)
)
)
(pad "1" smd rect
(at -3.15 -2.6)
(size 0.4 0.3)
(layers "F.Cu" "F.Mask" "F.Paste")
(solder_mask_margin 0.05)
(uuid "8434dda3-042d-4d5f-9e27-84b5860c5093")
)
(pad "2" smd rect
(at -3.15 -1.95)
(size 0.4 0.3)
(layers "F.Cu" "F.Mask" "F.Paste")
(solder_mask_margin 0.05)
(uuid "c0a13736-a7a3-4fe6-8385-080d9328e44c")
)
(pad "3" smd rect
(at -3.15 -1.3)
(size 0.4 0.3)
(layers "F.Cu" "F.Mask" "F.Paste")
(solder_mask_margin 0.05)
(uuid "ce1e8130-2d7a-470e-a56d-e6951d72f81c")
)
(pad "4" smd rect
(at -3.15 -0.65)
(size 0.4 0.3)
(layers "F.Cu" "F.Mask" "F.Paste")
(solder_mask_margin 0.05)
(uuid "d76a556c-d202-4abc-8cf1-f38b2a758bec")
)
(pad "5" smd rect
(at -3.15 0)
(size 0.4 0.3)
(layers "F.Cu" "F.Mask" "F.Paste")
(solder_mask_margin 0.05)
(uuid "05396c81-0ffc-46e4-944e-9a25178566e9")
)
(pad "6" smd rect
(at -3.15 0.65)
(size 0.4 0.3)
(layers "F.Cu" "F.Mask" "F.Paste")
(solder_mask_margin 0.05)
(uuid "407ee700-8dcf-4120-9e66-f763afbc5ead")
)
(pad "7" smd rect
(at -3.15 1.3)
(size 0.4 0.3)
(layers "F.Cu" "F.Mask" "F.Paste")
(solder_mask_margin 0.05)
(uuid "4579ae85-a8d3-4772-9415-0569937fcdda")
)
(pad "8" smd rect
(at -3.15 1.95)
(size 0.4 0.3)
(layers "F.Cu" "F.Mask" "F.Paste")
(solder_mask_margin 0.05)
(uuid "047fa1e4-514b-42ba-85c1-02c289eb6e90")
)
(pad "9" smd rect
(at -3.15 2.6)
(size 0.4 0.3)
(layers "F.Cu" "F.Mask" "F.Paste")
(solder_mask_margin 0.05)
(uuid "58b7dda1-8943-4a42-9800-e08f86b4ef9c")
)
(pad "10" smd rect
(at -2.6 3.15 90)
(size 0.4 0.3)
(layers "F.Cu" "F.Mask" "F.Paste")
(solder_mask_margin 0.05)
(uuid "50a02efc-846c-4881-8f8c-ca92ff96d451")
)
(pad "11" smd rect
(at -1.95 3.15 90)
(size 0.4 0.3)
(layers "F.Cu" "F.Mask" "F.Paste")
(solder_mask_margin 0.05)
(uuid "f4b4525b-28e1-4f80-ae49-2029f055bea0")
)
(pad "12" smd rect
(at -1.3 3.15 90)
(size 0.4 0.3)
(layers "F.Cu" "F.Mask" "F.Paste")
(solder_mask_margin 0.05)
(uuid "64d2a0d3-495a-4414-8c8c-1ba56a807045")
)
(pad "13" smd rect
(at -0.65 3.15 90)
(size 0.4 0.3)
(layers "F.Cu" "F.Mask" "F.Paste")
(solder_mask_margin 0.05)
(uuid "bb66b982-d048-48e4-9453-a1c3e7267812")
)
(pad "14" smd rect
(at 0 3.15 90)
(size 0.4 0.3)
(layers "F.Cu" "F.Mask" "F.Paste")
(solder_mask_margin 0.05)
(uuid "a4ddce47-348e-49ce-bffb-65afb37d16b7")
)
(pad "15" smd rect
(at 0.65 3.15 90)
(size 0.4 0.3)
(layers "F.Cu" "F.Mask" "F.Paste")
(solder_mask_margin 0.05)
(uuid "7035dbbc-981d-41ad-84c6-0c3c676a5e5d")
)
(pad "16" smd rect
(at 1.3 3.15 90)
(size 0.4 0.3)
(layers "F.Cu" "F.Mask" "F.Paste")
(solder_mask_margin 0.05)
(uuid "37acf533-9106-4968-a12e-5a5f08605f42")
)
(pad "17" smd rect
(at 1.95 3.15 90)
(size 0.4 0.3)
(layers "F.Cu" "F.Mask" "F.Paste")
(solder_mask_margin 0.05)
(uuid "e2ec9451-a34b-4910-93c0-fb3b88a0b35d")
)
(pad "18" smd rect
(at 2.6 3.15 90)
(size 0.4 0.3)
(layers "F.Cu" "F.Mask" "F.Paste")
(solder_mask_margin 0.05)
(uuid "21d1a3e3-b919-4d59-9641-4f5da2962429")
)
(pad "19" smd rect
(at 3.15 2.6)
(size 0.4 0.3)
(layers "F.Cu" "F.Mask" "F.Paste")
(solder_mask_margin 0.05)
(uuid "47bc0a58-f13a-4868-a995-85758b92e88e")
)
(pad "20" smd rect
(at 3.15 1.95)
(size 0.4 0.3)
(layers "F.Cu" "F.Mask" "F.Paste")
(solder_mask_margin 0.05)
(uuid "f41feb9f-7549-429f-8019-f3e7ecccf621")
)
(pad "21" smd rect
(at 3.15 1.3)
(size 0.4 0.3)
(layers "F.Cu" "F.Mask" "F.Paste")
(solder_mask_margin 0.05)
(uuid "2b09dd2e-bf6c-45d9-a069-b5a2fefa906d")
)
(pad "22" smd rect
(at 3.15 0.65)
(size 0.4 0.3)
(layers "F.Cu" "F.Mask" "F.Paste")
(solder_mask_margin 0.05)
(uuid "d1ec8d28-096e-480e-94fa-f5a8845d0318")
)
(pad "23" smd rect
(at 3.15 0)
(size 0.4 0.3)
(layers "F.Cu" "F.Mask" "F.Paste")
(solder_mask_margin 0.05)
(uuid "ec875793-5a2b-40bf-9420-61bc489ad12f")
)
(pad "24" smd rect
(at 3.15 -0.65)
(size 0.4 0.3)
(layers "F.Cu" "F.Mask" "F.Paste")
(solder_mask_margin 0.05)
(uuid "a97d1315-d260-46cf-8244-ff5eb24204da")
)
(pad "25" smd rect
(at 3.15 -1.3)
(size 0.4 0.3)
(layers "F.Cu" "F.Mask" "F.Paste")
(solder_mask_margin 0.05)
(uuid "28019ec8-b73a-443f-ba70-a61f82c73447")
)
(pad "26" smd rect
(at 3.15 -1.95)
(size 0.4 0.3)
(layers "F.Cu" "F.Mask" "F.Paste")
(solder_mask_margin 0.05)
(uuid "58ab1220-483d-45fe-9383-468e81974f43")
)
(pad "27" smd rect
(at 3.15 -2.6)
(size 0.4 0.3)
(layers "F.Cu" "F.Mask" "F.Paste")
(solder_mask_margin 0.05)
(uuid "18bba525-ac4c-40ac-97af-7ebdf52dac0a")
)
(pad "28" smd rect
(at 2.6 -3.15 90)
(size 0.4 0.3)
(layers "F.Cu" "F.Mask" "F.Paste")
(solder_mask_margin 0.05)
(uuid "541b85a6-f955-4be8-aa6e-4e5dce3401c8")
)
(pad "29" smd rect
(at 1.95 -3.15 90)
(size 0.4 0.3)
(layers "F.Cu" "F.Mask" "F.Paste")
(solder_mask_margin 0.05)
(uuid "2d4cfb5d-b913-4dc5-8c06-371feb1d4bbc")
)
(pad "30" smd rect
(at 1.3 -3.15 90)
(size 0.4 0.3)
(layers "F.Cu" "F.Mask" "F.Paste")
(solder_mask_margin 0.05)
(uuid "29987e7e-274e-49a3-8817-b8378febf272")
)
(pad "31" smd rect
(at 0.65 -3.15 90)
(size 0.4 0.3)
(layers "F.Cu" "F.Mask" "F.Paste")
(solder_mask_margin 0.05)
(uuid "d7fd6692-c079-4646-abff-75f2e7df79b9")
)
(pad "32" smd rect
(at 0 -3.15 90)
(size 0.4 0.3)
(layers "F.Cu" "F.Mask" "F.Paste")
(solder_mask_margin 0.05)
(uuid "3596584a-a93b-4ad5-a2f2-a73afbe7dbea")
)
(pad "33" smd rect
(at -0.65 -3.15 90)
(size 0.4 0.3)
(layers "F.Cu" "F.Mask" "F.Paste")
(solder_mask_margin 0.05)
(uuid "eeab4309-eb26-45db-a549-dfd3690125d3")
)
(pad "34" smd rect
(at -1.3 -3.15 90)
(size 0.4 0.3)
(layers "F.Cu" "F.Mask" "F.Paste")
(solder_mask_margin 0.05)
(uuid "6e376d9d-099a-49a4-81f2-5344d7e3cd27")
)
(pad "35" smd rect
(at -1.95 -3.15 90)
(size 0.4 0.3)
(layers "F.Cu" "F.Mask" "F.Paste")
(solder_mask_margin 0.05)
(uuid "813acad6-3d64-4053-a12b-80ebb2298b7c")
)
(pad "36" smd rect
(at -2.6 -3.15 90)
(size 0.4 0.3)
(layers "F.Cu" "F.Mask" "F.Paste")
(solder_mask_margin 0.05)
(uuid "f13c26d2-baef-4b84-9a2d-32df5705f1f8")
)
(pad "37" smd rect
(at -1.3 -1.3)
(size 0.5 0.5)
(layers "F.Cu" "F.Mask" "F.Paste")
(solder_mask_margin 0.05)
(uuid "b6275dd6-7d9e-42a1-81b8-fd408bebb21a")
)
(pad "38" smd rect
(at 0 -1.3)
(size 0.5 0.5)
(layers "F.Cu" "F.Mask" "F.Paste")
(solder_mask_margin 0.05)
(uuid "d8a54cb3-569a-4560-8ab4-9f43260d88ad")
)
(pad "39" smd rect
(at -1.3 0)
(size 0.5 0.5)
(layers "F.Cu" "F.Mask" "F.Paste")
(solder_mask_margin 0.05)
(uuid "7eb9a52c-4fbb-49c3-b036-dfdcc2b61134")
)
(pad "40" smd rect
(at 0 0)
(size 0.5 0.5)
(layers "F.Cu" "F.Mask" "F.Paste")
(solder_mask_margin 0.05)
(uuid "a3da43f2-323c-423e-befa-222fb4d903ce")
)
(pad "41" smd rect
(at -1.3 1.3)
(size 0.5 0.5)
(layers "F.Cu" "F.Mask" "F.Paste")
(solder_mask_margin 0.05)
(uuid "a2c16c35-2246-48ef-8721-736d46cf2d53")
)
(pad "42" smd rect
(at 0 1.3)
(size 0.5 0.5)
(layers "F.Cu" "F.Mask" "F.Paste")
(solder_mask_margin 0.05)
(uuid "5f77703a-3395-4a33-8d43-c8e48a729fa2")
)
(pad "43" smd rect
(at 1.3 1.3)
(size 0.5 0.5)
(layers "F.Cu" "F.Mask" "F.Paste")
(solder_mask_margin 0.05)
(uuid "1713a5bf-e34d-421f-8fd8-c1467d39d23f")
)
(embedded_fonts no)
(model "${KIPRJMOD}/parts/parts.3dshapes/LG77L.step"
(offset
(xyz 0 0 0)
)
(scale
(xyz 1 1 1)
)
(rotate
(xyz -90 -0 -0)
)
)
)

View file

@ -0,0 +1,296 @@
(footprint "L_TDK_SPM6530"
(version 20241229)
(generator "pcbnew")
(generator_version "9.0")
(layer "F.Cu")
(descr "Inductor, TDK, SPM6530, 7.1mmx6.5mm")
(tags "Inductor TDK_SPM6530")
(property "Reference" "REF**"
(at -2.4 -4.1 0)
(layer "F.SilkS")
(uuid "73ea877f-3c26-4249-8567-2c147a332783")
(effects
(font
(size 0.6 0.6)
(thickness 0.15)
)
)
)
(property "Value" "L_TDK_SPM6530"
(at 0 4.4 0)
(layer "F.Fab")
(uuid "25da4e9b-cf5b-489b-8077-35b21c4b9ff6")
(effects
(font
(size 1 1)
(thickness 0.15)
)
)
)
(property "Datasheet" ""
(at 0 0 0)
(layer "F.Fab")
(hide yes)
(uuid "fb423d1f-6124-4bb4-a23e-d9201a4817fc")
(effects
(font
(size 1.27 1.27)
(thickness 0.15)
)
)
)
(property "Description" ""
(at 0 0 0)
(layer "F.Fab")
(hide yes)
(uuid "00d899db-5479-4a84-b8a5-61d7bac83b4e")
(effects
(font
(size 1.27 1.27)
(thickness 0.15)
)
)
)
(attr smd)
(fp_line
(start -3.55 -3.55)
(end 3.55 -3.55)
(stroke
(width 0.12)
(type solid)
)
(layer "F.SilkS")
(uuid "fd1cae0b-7518-424a-a653-a2a88468097e")
)
(fp_line
(start -3.55 -2.344)
(end -3.55 -3.55)
(stroke
(width 0.12)
(type solid)
)
(layer "F.SilkS")
(uuid "af170147-b3d3-49cf-a973-19627c931ac0")
)
(fp_line
(start -3.55 3.55)
(end -3.55 1.8)
(stroke
(width 0.12)
(type solid)
)
(layer "F.SilkS")
(uuid "0dc4ae72-6559-4a6e-894b-427e6ff83ff9")
)
(fp_line
(start 3.55 -3.55)
(end 3.55 -1.8)
(stroke
(width 0.12)
(type solid)
)
(layer "F.SilkS")
(uuid "893b775b-00c8-4d1a-99ee-2cd2ed9da719")
)
(fp_line
(start 3.55 1.8)
(end 3.55 3.55)
(stroke
(width 0.12)
(type solid)
)
(layer "F.SilkS")
(uuid "422da8c6-c590-469f-9ced-4fd9748d38ca")
)
(fp_line
(start 3.55 3.55)
(end -3.55 3.55)
(stroke
(width 0.12)
(type solid)
)
(layer "F.SilkS")
(uuid "9ef3e704-b132-48ae-a2a2-1e6ddd38687b")
)
(fp_poly
(pts
(xy -3.547242 -1.8) (xy -3.9 -1.8) (xy -3.547242 -2.344)
)
(stroke
(width 0.12)
(type solid)
)
(fill yes)
(layer "F.SilkS")
(uuid "4d6a56eb-2192-421d-b61d-35b997aa8504")
)
(fp_line
(start -3.75 -1.8)
(end -3.6 -1.8)
(stroke
(width 0.05)
(type solid)
)
(layer "F.CrtYd")
(uuid "4d2cf893-7307-4d3b-9547-7cf316a646dc")
)
(fp_line
(start -3.75 1.8)
(end -3.75 -1.8)
(stroke
(width 0.05)
(type solid)
)
(layer "F.CrtYd")
(uuid "f5fa0654-101c-4867-a3d7-0fcf0a91208b")
)
(fp_line
(start -3.6 -3.6)
(end 3.6 -3.6)
(stroke
(width 0.05)
(type solid)
)
(layer "F.CrtYd")
(uuid "3e13f767-90b6-44d9-b451-2256c55515f9")
)
(fp_line
(start -3.6 -1.8)
(end -3.6 -3.6)
(stroke
(width 0.05)
(type solid)
)
(layer "F.CrtYd")
(uuid "365e080f-0d56-4e65-b286-158ffc027ea7")
)
(fp_line
(start -3.6 1.8)
(end -3.75 1.8)
(stroke
(width 0.05)
(type solid)
)
(layer "F.CrtYd")
(uuid "eb0725dd-4c26-407a-8d29-6482159b4983")
)
(fp_line
(start -3.6 3.6)
(end -3.6 1.8)
(stroke
(width 0.05)
(type solid)
)
(layer "F.CrtYd")
(uuid "831ba7da-133c-41d3-af0f-5c0e724792db")
)
(fp_line
(start 3.6 -3.6)
(end 3.6 -1.8)
(stroke
(width 0.05)
(type solid)
)
(layer "F.CrtYd")
(uuid "fd529a65-3c5f-46c5-82b9-d8ced98977c7")
)
(fp_line
(start 3.6 -1.8)
(end 3.75 -1.8)
(stroke
(width 0.05)
(type solid)
)
(layer "F.CrtYd")
(uuid "4ccdf759-7dfb-4397-a3d0-3bd24e05a392")
)
(fp_line
(start 3.6 1.8)
(end 3.6 3.6)
(stroke
(width 0.05)
(type solid)
)
(layer "F.CrtYd")
(uuid "d09bf15b-a175-4ebf-987c-013115b0dc7d")
)
(fp_line
(start 3.6 3.6)
(end -3.6 3.6)
(stroke
(width 0.05)
(type solid)
)
(layer "F.CrtYd")
(uuid "6247ba8d-1290-4614-b559-cb562b419441")
)
(fp_line
(start 3.75 -1.8)
(end 3.75 1.8)
(stroke
(width 0.05)
(type solid)
)
(layer "F.CrtYd")
(uuid "6960d76d-b2af-42e7-a7f4-2e1970afe7c6")
)
(fp_line
(start 3.75 1.8)
(end 3.6 1.8)
(stroke
(width 0.05)
(type solid)
)
(layer "F.CrtYd")
(uuid "28937305-71a1-457f-8313-f688127b4028")
)
(fp_poly
(pts
(xy -3 -2) (xy -3 3) (xy 3 3) (xy 3 -3) (xy -2 -3)
)
(stroke
(width 0.1)
(type solid)
)
(fill no)
(layer "F.Fab")
(uuid "4266ea0b-a93d-4889-8a3e-30609e1391c7")
)
(fp_text user "${REFERENCE}"
(at 0 0 0)
(layer "F.Fab")
(uuid "134794af-0d6e-446c-933d-b8a675a7919c")
(effects
(font
(size 1 1)
(thickness 0.15)
)
)
)
(pad "1" smd roundrect
(at -2.775 0)
(size 1.85 3.4)
(layers "F.Cu" "F.Mask" "F.Paste")
(roundrect_rratio 0.166667)
(uuid "ec5576c9-933b-49e2-84aa-bf6f1a6bf0e5")
)
(pad "2" smd roundrect
(at 2.775 0)
(size 1.85 3.4)
(layers "F.Cu" "F.Mask" "F.Paste")
(roundrect_rratio 0.166667)
(uuid "4e03847a-9b76-4cd4-a634-620b2038afee")
)
(embedded_fonts no)
(model "${KIPRJMOD}/parts/parts.3dshapes/spm6530.step"
(offset
(xyz 0 0 0)
)
(scale
(xyz 1 1 1)
)
(rotate
(xyz -90 -0 -90)
)
)
)

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,148 @@
(footprint "Oscillator_SMD_4Pin_2.0x1.6mm"
(version 20241229)
(generator "pcbnew")
(generator_version "9.0")
(layer "F.Cu")
(descr "1.62V~3.63V ±10ppm 10mA ±30ppm CMOS 12.288MHz SMD2016-4P Crystal Oscillators ROHS")
(property "Reference" "REF**"
(at 0 -2 0)
(layer "F.SilkS")
(uuid "be437e0f-012f-4cd0-b200-efba2be11bc4")
(effects
(font
(size 1 1)
(thickness 0.15)
)
)
)
(property "Value" "Oscillator_SMD_4Pin_2.0x1.6mm"
(at 0 2 0)
(layer "F.Fab")
(uuid "5a4d1c47-94e0-4472-9436-43d086d9727d")
(effects
(font
(size 1 1)
(thickness 0.15)
)
)
)
(property "Datasheet" ""
(at 0 0 0)
(layer "F.Fab")
(hide yes)
(uuid "afd46d69-e97e-40cf-8b4f-e83a242c837a")
(effects
(font
(size 1.27 1.27)
(thickness 0.15)
)
)
)
(property "Description" ""
(at 0 0 0)
(layer "F.Fab")
(hide yes)
(uuid "6ac4c4fc-6be2-4a2b-b015-95d5e8962218")
(effects
(font
(size 1.27 1.27)
(thickness 0.15)
)
)
)
(attr smd)
(fp_line
(start -1.25 -0.95)
(end -1.25 1)
(stroke
(width 0.12)
(type solid)
)
(layer "F.SilkS")
(uuid "3c8be53e-a263-47d0-8958-b0ad65c6eb12")
)
(fp_line
(start -1.25 1)
(end 1.2 1)
(stroke
(width 0.12)
(type solid)
)
(layer "F.SilkS")
(uuid "92d1fa7b-d138-475e-8f88-7fa8b97547fa")
)
(fp_rect
(start -1.4 -1.15)
(end 1.35 1.15)
(stroke
(width 0.05)
(type solid)
)
(fill no)
(layer "F.CrtYd")
(uuid "5a34ab9d-0b94-47b8-b867-15b39ed84b71")
)
(fp_poly
(pts
(xy -1 -0.8) (xy -1 0.4) (xy -0.6 0.8) (xy 1 0.8) (xy 1 -0.8)
)
(stroke
(width 0.1)
(type solid)
)
(fill no)
(layer "F.Fab")
(uuid "429f6141-b0dd-468d-9e46-2e1c5734b7e5")
)
(fp_text user "${REFERENCE}"
(at 0 0 0)
(layer "F.Fab")
(uuid "35134a7d-cc6c-464d-a050-fcfcaf01825e")
(effects
(font
(size 0.5 0.5)
(thickness 0.08)
)
)
)
(pad "1" smd roundrect
(at -0.7 0.5)
(size 0.9 0.8)
(layers "F.Cu" "F.Mask" "F.Paste")
(roundrect_rratio 0.0625)
(uuid "83ab7010-03bf-4222-b550-6f6692623073")
)
(pad "2" smd roundrect
(at 0.7 0.5)
(size 0.9 0.8)
(layers "F.Cu" "F.Mask" "F.Paste")
(roundrect_rratio 0.0625)
(uuid "90fe8ac0-6adc-4b84-8d6d-146b040d96fe")
)
(pad "3" smd roundrect
(at 0.7 -0.5)
(size 0.9 0.8)
(layers "F.Cu" "F.Mask" "F.Paste")
(roundrect_rratio 0.0625)
(uuid "4f56af08-021f-4f20-a6ed-a35f8c445ca9")
)
(pad "4" smd roundrect
(at -0.7 -0.5)
(size 0.9 0.8)
(layers "F.Cu" "F.Mask" "F.Paste")
(roundrect_rratio 0.0625)
(uuid "4a766761-b248-48f9-abe0-e5134f3e09de")
)
(embedded_fonts no)
(model "${KICAD9_3DMODEL_DIR}/Oscillator.3dshapes/Oscillator_SMD_SiT_PQFN-4Pin_2.0x1.6mm.step"
(offset
(xyz 0 0 0)
)
(scale
(xyz 1 1 1)
)
(rotate
(xyz 0 0 0)
)
)
)

View file

@ -0,0 +1,368 @@
(footprint "QFN-12_L2.0-W2.0-P0.50-BL-EP0.8"
(version 20241229)
(generator "pcbnew")
(generator_version "9.0")
(layer "F.Cu")
(property "Reference" "REF**"
(at -0.2 -1.6 0)
(layer "F.SilkS")
(uuid "a8782719-28f7-4db1-96bf-5c52097446fe")
(effects
(font
(size 0.6 0.6)
(thickness 0.15)
)
)
)
(property "Value" "QFN-12_L2.0-W2.0-P0.50-BL-EP0.8"
(at 0 2.6 0)
(layer "F.Fab")
(uuid "4aed39a9-b881-4214-8490-b053b2e15bbc")
(effects
(font
(size 1 1)
(thickness 0.15)
)
)
)
(property "Datasheet" ""
(at 0 0 0)
(layer "F.Fab")
(hide yes)
(uuid "60d57ccb-a582-4496-bbde-d266d018fed4")
(effects
(font
(size 1.27 1.27)
(thickness 0.15)
)
)
)
(property "Description" ""
(at 0 0 0)
(layer "F.Fab")
(hide yes)
(uuid "15a50e0a-abb9-45fe-9c63-d7dccdd89aed")
(effects
(font
(size 1.27 1.27)
(thickness 0.15)
)
)
)
(attr smd)
(fp_line
(start -1.08 -1.08)
(end -0.83 -1.08)
(stroke
(width 0.15)
(type solid)
)
(layer "F.SilkS")
(uuid "b3ac46b5-8e15-48c3-97bf-071a84fae8d6")
)
(fp_line
(start -1.08 -0.83)
(end -1.08 -1.08)
(stroke
(width 0.15)
(type solid)
)
(layer "F.SilkS")
(uuid "10be5a6d-f17c-4409-a270-ae5f28a7590f")
)
(fp_line
(start -1.08 0.83)
(end -1.08 1.08)
(stroke
(width 0.15)
(type solid)
)
(layer "F.SilkS")
(uuid "8f130482-50f0-448c-b49d-bc89d3062701")
)
(fp_line
(start -1.08 1.08)
(end -0.83 1.08)
(stroke
(width 0.15)
(type solid)
)
(layer "F.SilkS")
(uuid "f4d21aad-ee76-4db6-b582-d5f8f1303a17")
)
(fp_line
(start 1.08 -1.08)
(end 0.83 -1.08)
(stroke
(width 0.15)
(type solid)
)
(layer "F.SilkS")
(uuid "ffcba15f-85e5-472d-a5bd-070aaf4bc708")
)
(fp_line
(start 1.08 -0.83)
(end 1.08 -1.08)
(stroke
(width 0.15)
(type solid)
)
(layer "F.SilkS")
(uuid "d3ddd0d4-01b4-4dc8-b887-2e8e3c086d90")
)
(fp_line
(start 1.08 0.83)
(end 1.08 1.08)
(stroke
(width 0.15)
(type solid)
)
(layer "F.SilkS")
(uuid "4f631bdd-7ff2-418a-bf98-97e73950d1cb")
)
(fp_line
(start 1.08 1.08)
(end 0.83 1.08)
(stroke
(width 0.15)
(type solid)
)
(layer "F.SilkS")
(uuid "cc0adfc1-a251-4812-9488-f43dcce841a4")
)
(fp_circle
(center -0.5 1.47)
(end -0.43 1.47)
(stroke
(width 0.15)
(type solid)
)
(fill no)
(layer "F.SilkS")
(uuid "f5772caa-5350-472b-b828-0e34b5a4bb22")
)
(fp_circle
(center -1 1)
(end -0.97 1)
(stroke
(width 0.06)
(type solid)
)
(fill no)
(layer "F.Fab")
(uuid "19601206-2697-4961-9fd1-d5cde159999f")
)
(fp_text user "${REFERENCE}"
(at 0 0 0)
(layer "F.Fab")
(uuid "2b5a77c6-7481-4bcd-b837-d30210a97c1f")
(effects
(font
(size 1 1)
(thickness 0.15)
)
)
)
(pad "1" smd custom
(at -0.5 0.93)
(size 0.01 0.01)
(layers "F.Cu" "F.Mask" "F.Paste")
(thermal_bridge_angle 90)
(options
(clearance outline)
(anchor circle)
)
(primitives
(gr_poly
(pts
(xy -0.12 0.24) (xy 0.12 0.24) (xy 0.12 -0.24) (xy -0.03 -0.24) (xy -0.13 -0.05)
)
(width 0.1)
(fill yes)
)
)
(uuid "dd162c2b-9f32-4eff-ac73-0b92d8076147")
)
(pad "2" smd rect
(at 0 0.93)
(size 0.25 0.48)
(layers "F.Cu" "F.Mask" "F.Paste")
(uuid "ca2ab885-5f15-4d06-8795-df9769a50a84")
)
(pad "3" smd custom
(at 0.5 0.93)
(size 0.01 0.01)
(layers "F.Cu" "F.Mask" "F.Paste")
(thermal_bridge_angle 90)
(options
(clearance outline)
(anchor circle)
)
(primitives
(gr_poly
(pts
(xy 0.12 0.24) (xy -0.12 0.24) (xy -0.12 -0.24) (xy 0.03 -0.24) (xy 0.12 -0.05)
)
(width 0.1)
(fill yes)
)
)
(uuid "4dfc71ca-2265-45f3-8e39-7253a50af51c")
)
(pad "4" smd custom
(at 0.93 0.5)
(size 0.01 0.01)
(layers "F.Cu" "F.Mask" "F.Paste")
(thermal_bridge_angle 90)
(options
(clearance outline)
(anchor circle)
)
(primitives
(gr_poly
(pts
(xy 0.24 0.12) (xy 0.24 -0.13) (xy -0.24 -0.13) (xy -0.24 -0.12) (xy -0.24 0.03) (xy -0.05 0.12)
)
(width 0.1)
(fill yes)
)
)
(uuid "abc5d17c-bfd1-4349-897b-5c0ca2f8dde7")
)
(pad "5" smd rect
(at 0.93 0)
(size 0.48 0.25)
(layers "F.Cu" "F.Mask" "F.Paste")
(uuid "5dc8d355-be9c-42f6-be27-8cd651b5f099")
)
(pad "6" smd custom
(at 0.93 -0.5)
(size 0.01 0.01)
(layers "F.Cu" "F.Mask" "F.Paste")
(thermal_bridge_angle 90)
(options
(clearance outline)
(anchor circle)
)
(primitives
(gr_poly
(pts
(xy 0.24 -0.12) (xy 0.24 0.13) (xy -0.24 0.13) (xy -0.24 0.12) (xy -0.24 -0.03) (xy -0.05 -0.12)
)
(width 0.1)
(fill yes)
)
)
(uuid "2a687c68-2d92-4132-9cf6-a94ad3b4ff17")
)
(pad "7" smd custom
(at 0.5 -0.93)
(size 0.01 0.01)
(layers "F.Cu" "F.Mask" "F.Paste")
(thermal_bridge_angle 90)
(options
(clearance outline)
(anchor circle)
)
(primitives
(gr_poly
(pts
(xy 0.12 -0.24) (xy -0.13 -0.24) (xy -0.13 0.24) (xy -0.12 0.24) (xy 0.03 0.24) (xy 0.12 0.05)
)
(width 0.1)
(fill yes)
)
)
(uuid "563a62c7-6460-468f-9ed8-3f392e3a66e9")
)
(pad "8" smd rect
(at 0 -0.93)
(size 0.25 0.48)
(layers "F.Cu" "F.Mask" "F.Paste")
(uuid "786a1091-77e3-4c4c-9fec-91ee152eda63")
)
(pad "9" smd custom
(at -0.5 -0.93)
(size 0.01 0.01)
(layers "F.Cu" "F.Mask" "F.Paste")
(thermal_bridge_angle 90)
(options
(clearance outline)
(anchor circle)
)
(primitives
(gr_poly
(pts
(xy -0.12 -0.24) (xy 0.13 -0.24) (xy 0.13 0.24) (xy 0.12 0.24) (xy -0.03 0.24) (xy -0.12 0.05)
)
(width 0.1)
(fill yes)
)
)
(uuid "62334b86-0c16-4adc-a69c-124a79058807")
)
(pad "10" smd custom
(at -0.93 -0.5)
(size 0.01 0.01)
(layers "F.Cu" "F.Mask" "F.Paste")
(thermal_bridge_angle 90)
(options
(clearance outline)
(anchor circle)
)
(primitives
(gr_poly
(pts
(xy -0.24 -0.13) (xy -0.24 0.12) (xy 0.24 0.12) (xy 0.24 -0.03) (xy 0.05 -0.13)
)
(width 0.1)
(fill yes)
)
)
(uuid "96053804-0f8e-42f5-9fa9-3ab57c47ded0")
)
(pad "11" smd rect
(at -0.93 0)
(size 0.48 0.25)
(layers "F.Cu" "F.Mask" "F.Paste")
(uuid "2c8dadd3-e21b-493c-b5df-9afd6866ca88")
)
(pad "12" smd custom
(at -0.93 0.5)
(size 0.01 0.01)
(layers "F.Cu" "F.Mask" "F.Paste")
(thermal_bridge_angle 90)
(options
(clearance outline)
(anchor circle)
)
(primitives
(gr_poly
(pts
(xy -0.24 0.12) (xy -0.24 -0.12) (xy 0.24 -0.12) (xy 0.24 0.03) (xy 0.05 0.12)
)
(width 0.1)
(fill yes)
)
)
(uuid "287ad911-9040-43fc-a616-7bb3f66da731")
)
(pad "13" smd rect
(at 0 0)
(size 0.85 0.85)
(layers "F.Cu" "F.Mask" "F.Paste")
(uuid "5ea7bd86-7f7e-45ee-9a20-b1fa5054d81e")
)
(embedded_fonts no)
(model "${KIPRJMOD}/parts/parts.3dshapes/QFN-12_L2.0-W2.0-P0.50-BL-EP0.8.wrl"
(offset
(xyz 0 -0 0.83)
)
(scale
(xyz 1 1 1)
)
(rotate
(xyz -0 -0 -0)
)
)
)

View file

@ -0,0 +1,621 @@
(footprint "QFN-16-1EP_3x3mm_P0.5mm_EP1.7x1.7mm_ThermalVias"
(version 20241229)
(generator "pcbnew")
(generator_version "9.0")
(layer "F.Cu")
(descr "QFN, 16 Pin (https://www.st.com/resource/en/datasheet/tsv521.pdf), generated with kicad-footprint-generator ipc_noLead_generator.py")
(tags "QFN NoLead")
(property "Reference" "REF**"
(at 0 -2.83 0)
(layer "F.SilkS")
(uuid "146cb097-3a23-4d30-97e1-02afe1715ff0")
(effects
(font
(size 1 1)
(thickness 0.15)
)
)
)
(property "Value" "QFN-16-1EP_3x3mm_P0.5mm_EP1.7x1.7mm_ThermalVias"
(at 0 2.83 0)
(layer "F.Fab")
(uuid "d51956ff-1267-4fa4-aec0-e779bb076052")
(effects
(font
(size 1 1)
(thickness 0.15)
)
)
)
(property "Datasheet" ""
(at 0 0 0)
(layer "F.Fab")
(hide yes)
(uuid "e2650296-9dce-4213-b9ad-c5957d95e9de")
(effects
(font
(size 1.27 1.27)
(thickness 0.15)
)
)
)
(property "Description" ""
(at 0 0 0)
(layer "F.Fab")
(hide yes)
(uuid "6e80eac6-0820-4ed8-a62e-21d57212afde")
(effects
(font
(size 1.27 1.27)
(thickness 0.15)
)
)
)
(attr smd)
(fp_line
(start -1.61 -1.135)
(end -1.61 -1.37)
(stroke
(width 0.12)
(type solid)
)
(layer "F.SilkS")
(uuid "794740e0-cbde-4527-bb22-0b4a4c74449a")
)
(fp_line
(start -1.61 1.61)
(end -1.61 1.135)
(stroke
(width 0.12)
(type solid)
)
(layer "F.SilkS")
(uuid "c30118cb-93db-4f00-bbdd-7910b11869d7")
)
(fp_line
(start -1.135 -1.61)
(end -1.31 -1.61)
(stroke
(width 0.12)
(type solid)
)
(layer "F.SilkS")
(uuid "56f5158c-dd8a-4f6b-a21f-5dd799b5c1d5")
)
(fp_line
(start -1.135 1.61)
(end -1.61 1.61)
(stroke
(width 0.12)
(type solid)
)
(layer "F.SilkS")
(uuid "f2ff359a-2256-4cd4-9da3-a5271d0a8189")
)
(fp_line
(start 1.135 -1.61)
(end 1.61 -1.61)
(stroke
(width 0.12)
(type solid)
)
(layer "F.SilkS")
(uuid "c1dcc67e-52ae-449e-9108-f8c4480d93b1")
)
(fp_line
(start 1.135 1.61)
(end 1.61 1.61)
(stroke
(width 0.12)
(type solid)
)
(layer "F.SilkS")
(uuid "4cdce9dd-a812-4039-8e65-2ae3cd56f9df")
)
(fp_line
(start 1.61 -1.61)
(end 1.61 -1.135)
(stroke
(width 0.12)
(type solid)
)
(layer "F.SilkS")
(uuid "162babcd-8007-46c5-80bd-bbd89b0f6948")
)
(fp_line
(start 1.61 1.61)
(end 1.61 1.135)
(stroke
(width 0.12)
(type solid)
)
(layer "F.SilkS")
(uuid "65658de6-bfbe-46ba-95a4-533601177c79")
)
(fp_poly
(pts
(xy -1.61 -1.61) (xy -1.85 -1.94) (xy -1.37 -1.94)
)
(stroke
(width 0.12)
(type solid)
)
(fill yes)
(layer "F.SilkS")
(uuid "5056cf90-be6a-434a-a325-4a362c32af51")
)
(fp_line
(start -2.13 -1.13)
(end -1.75 -1.13)
(stroke
(width 0.05)
(type solid)
)
(layer "F.CrtYd")
(uuid "1f671b79-d97e-41ad-93fc-1cf51bfa9cb7")
)
(fp_line
(start -2.13 1.13)
(end -2.13 -1.13)
(stroke
(width 0.05)
(type solid)
)
(layer "F.CrtYd")
(uuid "a08deeeb-cd7c-4232-a316-3dafdfdfd22c")
)
(fp_line
(start -1.75 -1.75)
(end -1.13 -1.75)
(stroke
(width 0.05)
(type solid)
)
(layer "F.CrtYd")
(uuid "662e0b38-7053-4314-a76b-084e7c6272ce")
)
(fp_line
(start -1.75 -1.13)
(end -1.75 -1.75)
(stroke
(width 0.05)
(type solid)
)
(layer "F.CrtYd")
(uuid "d0e2a759-83b1-40db-b43d-005c3d7d23ae")
)
(fp_line
(start -1.75 1.13)
(end -2.13 1.13)
(stroke
(width 0.05)
(type solid)
)
(layer "F.CrtYd")
(uuid "19883e16-6c0d-436f-ba5b-4a05292297c2")
)
(fp_line
(start -1.75 1.75)
(end -1.75 1.13)
(stroke
(width 0.05)
(type solid)
)
(layer "F.CrtYd")
(uuid "186bab08-2bad-43d1-8f48-d50ecde883cb")
)
(fp_line
(start -1.13 -2.13)
(end 1.13 -2.13)
(stroke
(width 0.05)
(type solid)
)
(layer "F.CrtYd")
(uuid "64b466da-5271-4218-b766-7f4aa5c20160")
)
(fp_line
(start -1.13 -1.75)
(end -1.13 -2.13)
(stroke
(width 0.05)
(type solid)
)
(layer "F.CrtYd")
(uuid "f05331ee-774e-4698-b4c8-3d8e70d9b824")
)
(fp_line
(start -1.13 1.75)
(end -1.75 1.75)
(stroke
(width 0.05)
(type solid)
)
(layer "F.CrtYd")
(uuid "fabffa53-ad6d-493c-8f94-421324445e39")
)
(fp_line
(start -1.13 2.13)
(end -1.13 1.75)
(stroke
(width 0.05)
(type solid)
)
(layer "F.CrtYd")
(uuid "a496d30d-77fa-498c-ad3a-d5a1f0bdb36e")
)
(fp_line
(start 1.13 -2.13)
(end 1.13 -1.75)
(stroke
(width 0.05)
(type solid)
)
(layer "F.CrtYd")
(uuid "eedb0013-7f64-4e9b-8709-ac33ef35ba86")
)
(fp_line
(start 1.13 -1.75)
(end 1.75 -1.75)
(stroke
(width 0.05)
(type solid)
)
(layer "F.CrtYd")
(uuid "6965b92e-f026-4522-b39c-d1a84a46ed6f")
)
(fp_line
(start 1.13 1.75)
(end 1.13 2.13)
(stroke
(width 0.05)
(type solid)
)
(layer "F.CrtYd")
(uuid "b8956d33-1761-4836-a804-bbf2b778e549")
)
(fp_line
(start 1.13 2.13)
(end -1.13 2.13)
(stroke
(width 0.05)
(type solid)
)
(layer "F.CrtYd")
(uuid "3627ec72-7ac6-4784-8218-dad7d4bfa806")
)
(fp_line
(start 1.75 -1.75)
(end 1.75 -1.13)
(stroke
(width 0.05)
(type solid)
)
(layer "F.CrtYd")
(uuid "ec936198-d501-46f6-a690-abfa32a3b8cb")
)
(fp_line
(start 1.75 -1.13)
(end 2.13 -1.13)
(stroke
(width 0.05)
(type solid)
)
(layer "F.CrtYd")
(uuid "f219ea12-929d-42d5-98d3-50eb61c80fbc")
)
(fp_line
(start 1.75 1.13)
(end 1.75 1.75)
(stroke
(width 0.05)
(type solid)
)
(layer "F.CrtYd")
(uuid "f7a71f8d-a99f-4e39-9862-af6ac30a7091")
)
(fp_line
(start 1.75 1.75)
(end 1.13 1.75)
(stroke
(width 0.05)
(type solid)
)
(layer "F.CrtYd")
(uuid "817093f7-d70e-4e8d-a938-0d501369996e")
)
(fp_line
(start 2.13 -1.13)
(end 2.13 1.13)
(stroke
(width 0.05)
(type solid)
)
(layer "F.CrtYd")
(uuid "db88c6f6-4b31-4243-9654-30d77b022a33")
)
(fp_line
(start 2.13 1.13)
(end 1.75 1.13)
(stroke
(width 0.05)
(type solid)
)
(layer "F.CrtYd")
(uuid "393772b7-f5af-49e8-9612-4b8bb9d9a9ba")
)
(fp_poly
(pts
(xy -1.5 -0.75) (xy -1.5 1.5) (xy 1.5 1.5) (xy 1.5 -1.5) (xy -0.75 -1.5)
)
(stroke
(width 0.1)
(type solid)
)
(fill no)
(layer "F.Fab")
(uuid "c0565ff4-e04c-4de1-8a69-8b14d4a59ec7")
)
(fp_text user "${REFERENCE}"
(at 0 0 0)
(layer "F.Fab")
(uuid "69b96c44-6392-4f22-8818-ebb39567f873")
(effects
(font
(size 0.75 0.75)
(thickness 0.11)
)
)
)
(pad "" smd roundrect
(at -0.425 -0.425)
(size 0.69 0.69)
(layers "F.Paste")
(roundrect_rratio 0.25)
(uuid "edb080ec-f862-442f-a07c-f3f822e92eac")
)
(pad "" smd roundrect
(at -0.425 0.425)
(size 0.69 0.69)
(layers "F.Paste")
(roundrect_rratio 0.25)
(uuid "400bcf57-b44e-4c5a-ab46-c04b3cab419b")
)
(pad "" smd roundrect
(at 0.425 -0.425)
(size 0.69 0.69)
(layers "F.Paste")
(roundrect_rratio 0.25)
(uuid "f168171f-5a00-478e-a94a-74957d998f5a")
)
(pad "" smd roundrect
(at 0.425 0.425)
(size 0.69 0.69)
(layers "F.Paste")
(roundrect_rratio 0.25)
(uuid "a70fb6f2-aa93-4fbd-992d-d2143f65e9aa")
)
(pad "1" smd roundrect
(at -1.4625 -0.75)
(size 0.825 0.25)
(layers "F.Cu" "F.Mask" "F.Paste")
(roundrect_rratio 0.25)
(uuid "f263de75-8f03-4c0d-bbe8-69115199632e")
)
(pad "2" smd roundrect
(at -1.4625 -0.25)
(size 0.825 0.25)
(layers "F.Cu" "F.Mask" "F.Paste")
(roundrect_rratio 0.25)
(uuid "26b64c03-186c-4209-b768-66b3958013f9")
)
(pad "3" smd roundrect
(at -1.4625 0.25)
(size 0.825 0.25)
(layers "F.Cu" "F.Mask" "F.Paste")
(roundrect_rratio 0.25)
(uuid "ad332282-e7de-46d5-8d74-4a20c5bb6abc")
)
(pad "4" smd roundrect
(at -1.4625 0.75)
(size 0.825 0.25)
(layers "F.Cu" "F.Mask" "F.Paste")
(roundrect_rratio 0.25)
(uuid "90175b93-a479-4dd8-9b85-6c77b02a9199")
)
(pad "5" smd roundrect
(at -0.75 1.4625)
(size 0.25 0.825)
(layers "F.Cu" "F.Mask" "F.Paste")
(roundrect_rratio 0.25)
(uuid "38674765-a05d-46f1-becd-9c3168ad661a")
)
(pad "6" smd roundrect
(at -0.25 1.4625)
(size 0.25 0.825)
(layers "F.Cu" "F.Mask" "F.Paste")
(roundrect_rratio 0.25)
(uuid "ce7f813e-4f7e-4157-84af-b30a379f3210")
)
(pad "7" smd roundrect
(at 0.25 1.4625)
(size 0.25 0.825)
(layers "F.Cu" "F.Mask" "F.Paste")
(roundrect_rratio 0.25)
(uuid "eca66c6d-1ffa-440b-bffa-bb087cb75123")
)
(pad "8" smd roundrect
(at 0.75 1.4625)
(size 0.25 0.825)
(layers "F.Cu" "F.Mask" "F.Paste")
(roundrect_rratio 0.25)
(uuid "b38d6cac-61a7-46a7-8872-2596081f1ce3")
)
(pad "9" smd roundrect
(at 1.4625 0.75)
(size 0.825 0.25)
(layers "F.Cu" "F.Mask" "F.Paste")
(roundrect_rratio 0.25)
(uuid "54ab9335-8987-4f76-bf90-b5d0da4be022")
)
(pad "10" smd roundrect
(at 1.4625 0.25)
(size 0.825 0.25)
(layers "F.Cu" "F.Mask" "F.Paste")
(roundrect_rratio 0.25)
(uuid "3fea1b13-3ae4-44a1-83d0-6b9b84e406bf")
)
(pad "11" smd roundrect
(at 1.4625 -0.25)
(size 0.825 0.25)
(layers "F.Cu" "F.Mask" "F.Paste")
(roundrect_rratio 0.25)
(uuid "0bef8fe5-c2dc-4b06-a1ae-68ad9d8423f4")
)
(pad "12" smd roundrect
(at 1.4625 -0.75)
(size 0.825 0.25)
(layers "F.Cu" "F.Mask" "F.Paste")
(roundrect_rratio 0.25)
(uuid "f1f5f2fb-694f-4fdf-ba18-2a55ecdb8b77")
)
(pad "13" smd roundrect
(at 0.75 -1.4625)
(size 0.25 0.825)
(layers "F.Cu" "F.Mask" "F.Paste")
(roundrect_rratio 0.25)
(uuid "70c63b74-ad50-4cf2-b27a-daad0df06ca2")
)
(pad "14" smd roundrect
(at 0.25 -1.4625)
(size 0.25 0.825)
(layers "F.Cu" "F.Mask" "F.Paste")
(roundrect_rratio 0.25)
(uuid "9014df83-ce34-4861-b73d-5f0081a34d0f")
)
(pad "15" smd roundrect
(at -0.25 -1.4625)
(size 0.25 0.825)
(layers "F.Cu" "F.Mask" "F.Paste")
(roundrect_rratio 0.25)
(uuid "a796753a-1977-4937-9ac1-45fdde894bba")
)
(pad "16" smd roundrect
(at -0.75 -1.4625)
(size 0.25 0.825)
(layers "F.Cu" "F.Mask" "F.Paste")
(roundrect_rratio 0.25)
(uuid "f13fdf09-8954-47b4-95d7-5f517ea93f7d")
)
(pad "17" thru_hole circle
(at -0.55 -0.55)
(size 0.6 0.6)
(drill 0.3)
(property pad_prop_heatsink)
(layers "*.Cu")
(remove_unused_layers no)
(uuid "2cf49eb3-69ae-489c-a1a9-fd78a76faff6")
)
(pad "17" thru_hole circle
(at -0.55 0)
(size 0.6 0.6)
(drill 0.3)
(property pad_prop_heatsink)
(layers "*.Cu")
(remove_unused_layers no)
(uuid "940fd9f5-bc60-4156-84bd-47db1f493b07")
)
(pad "17" thru_hole circle
(at -0.55 0.55)
(size 0.6 0.6)
(drill 0.3)
(property pad_prop_heatsink)
(layers "*.Cu")
(remove_unused_layers no)
(uuid "fc118f21-1667-4e35-b534-3bfbff79aab8")
)
(pad "17" thru_hole circle
(at 0 -0.55)
(size 0.6 0.6)
(drill 0.3)
(property pad_prop_heatsink)
(layers "*.Cu")
(remove_unused_layers no)
(uuid "c12a4c25-d958-4e3f-b071-1f45f1378f36")
)
(pad "17" thru_hole circle
(at 0 0)
(size 0.6 0.6)
(drill 0.3)
(property pad_prop_heatsink)
(layers "*.Cu")
(remove_unused_layers no)
(uuid "23510b70-47cb-4362-8a39-9db1315f4f7a")
)
(pad "17" smd roundrect
(at 0 0)
(size 1.7 1.7)
(property pad_prop_heatsink)
(layers "F.Cu" "F.Mask")
(roundrect_rratio 0.05882352941)
(zone_connect 2)
(uuid "4eaa4886-87a8-421e-9a38-c05f26a21d1f")
)
(pad "17" smd roundrect
(at 0 0)
(size 1.7 1.7)
(property pad_prop_heatsink)
(layers "B.Cu")
(roundrect_rratio 0.05882352941)
(zone_connect 2)
(uuid "e511c39e-f8fb-42ad-a37a-e49d7bebf859")
)
(pad "17" thru_hole circle
(at 0 0.55)
(size 0.6 0.6)
(drill 0.3)
(property pad_prop_heatsink)
(layers "*.Cu")
(remove_unused_layers no)
(uuid "45eeca99-2c2c-4d89-8529-b816a2dec996")
)
(pad "17" thru_hole circle
(at 0.55 -0.55)
(size 0.6 0.6)
(drill 0.3)
(property pad_prop_heatsink)
(layers "*.Cu")
(remove_unused_layers no)
(uuid "ec8d14d2-db2f-48d9-a4aa-73b79c5ec504")
)
(pad "17" thru_hole circle
(at 0.55 0)
(size 0.6 0.6)
(drill 0.3)
(property pad_prop_heatsink)
(layers "*.Cu")
(remove_unused_layers no)
(uuid "74e6a742-89cf-4343-bff9-14ed4f09e303")
)
(pad "17" thru_hole circle
(at 0.55 0.55)
(size 0.6 0.6)
(drill 0.3)
(property pad_prop_heatsink)
(layers "*.Cu")
(remove_unused_layers no)
(uuid "484c7ef4-0746-459d-a501-e944bc0a4d11")
)
(embedded_fonts no)
(model "${KICAD9_3DMODEL_DIR}/Package_DFN_QFN.3dshapes/QFN-16-1EP_3x3mm_P0.5mm_EP1.7x1.7mm.step"
(offset
(xyz 0 0 0)
)
(scale
(xyz 1 1 1)
)
(rotate
(xyz 0 0 0)
)
)
)

View file

@ -0,0 +1,433 @@
(footprint "QFN-29_L4.0-W4.0-P0.40-TL-BQ25792RQMR"
(version 20241229)
(generator "pcbnew")
(generator_version "9.0")
(layer "F.Cu")
(property "Reference" "REF**"
(at -1.1 -2.8 0)
(layer "F.SilkS")
(uuid "6599aade-e261-4ab8-8b8b-15cc68510d40")
(effects
(font
(size 0.6 0.6)
(thickness 0.15)
)
)
)
(property "Value" "QFN-29_L4.0-W4.0-P0.40-TL-BQ25792RQMR"
(at 0 3.2 0)
(layer "F.Fab")
(uuid "c140b509-841c-444c-b8de-79c5c34ac8fa")
(effects
(font
(size 1 1)
(thickness 0.15)
)
)
)
(property "Datasheet" ""
(at 0 0 0)
(layer "F.Fab")
(hide yes)
(uuid "90288ff5-9cf7-4f11-91b6-321c6853ebc3")
(effects
(font
(size 1.27 1.27)
(thickness 0.15)
)
)
)
(property "Description" ""
(at 0 0 0)
(layer "F.Fab")
(hide yes)
(uuid "3f7a6fa9-3a31-4eb9-a68a-a133d3efeed8")
(effects
(font
(size 1.27 1.27)
(thickness 0.15)
)
)
)
(attr smd)
(fp_line
(start -2 -2.02)
(end -1.6 -2.02)
(stroke
(width 0.15)
(type solid)
)
(layer "F.SilkS")
(uuid "f55524ca-94f0-4acd-aa21-ce9804d702ad")
)
(fp_line
(start -2 -1.8)
(end -2 -2)
(stroke
(width 0.15)
(type solid)
)
(layer "F.SilkS")
(uuid "960a36aa-41e4-402e-8697-b2bfcaf90657")
)
(fp_line
(start -2 1.97)
(end -2 1.8)
(stroke
(width 0.15)
(type solid)
)
(layer "F.SilkS")
(uuid "8526c0b5-cd2a-47be-bab1-f1dce2f8c4d6")
)
(fp_line
(start -1.6 1.97)
(end -2 1.97)
(stroke
(width 0.15)
(type solid)
)
(layer "F.SilkS")
(uuid "0319cbea-a76a-4dcd-8733-aee7ec62785c")
)
(fp_line
(start 1.6 -2.02)
(end 2 -2.02)
(stroke
(width 0.15)
(type solid)
)
(layer "F.SilkS")
(uuid "53f46456-ce3d-4d9e-afa1-8fbf4a934967")
)
(fp_line
(start 2 -2.02)
(end 2 -1.8)
(stroke
(width 0.15)
(type solid)
)
(layer "F.SilkS")
(uuid "0ff195a4-6e3f-4fd2-b7ac-73dd4adaa4df")
)
(fp_line
(start 2 1.8)
(end 2 1.97)
(stroke
(width 0.15)
(type solid)
)
(layer "F.SilkS")
(uuid "e398322e-1008-453f-a7ab-7bfe29924feb")
)
(fp_line
(start 2 1.97)
(end 1.6 1.97)
(stroke
(width 0.15)
(type solid)
)
(layer "F.SilkS")
(uuid "bf533144-a334-48af-94ac-77e9083fa407")
)
(fp_circle
(center -2.3 -2)
(end -2.26 -2)
(stroke
(width 0.26)
(type solid)
)
(fill no)
(layer "F.SilkS")
(uuid "e2c3de30-af42-493d-92da-44c8b2ff05da")
)
(fp_rect
(start -2.2 -2.2)
(end 2.2 2.2)
(stroke
(width 0.05)
(type default)
)
(fill no)
(layer "F.CrtYd")
(uuid "fc8e23fe-87c2-4ba4-a56a-e23cc2e1a5b1")
)
(fp_text user "${REFERENCE}"
(at 0 0 0)
(layer "F.Fab")
(uuid "01ce11ae-6357-4152-b2c7-4bdde2470eb9")
(effects
(font
(size 1 1)
(thickness 0.15)
)
)
)
(pad "1" smd roundrect
(at -1.35 -1.6)
(size 0.2 0.7)
(drill
(offset 0 -0.25)
)
(layers "F.Cu" "F.Mask" "F.Paste")
(roundrect_rratio 0.25)
(uuid "ba3a59db-39cd-4e75-8ec1-12bd995b561b")
)
(pad "1" smd roundrect
(at -1.35 -1.6 90)
(size 0.2 0.95)
(drill
(offset 0 -0.375)
)
(layers "F.Cu" "F.Mask" "F.Paste")
(roundrect_rratio 0.25)
(uuid "01b62e0c-048d-4385-bb7e-7c5de008d950")
)
(pad "2" smd roundrect
(at -1.9 -1.2)
(size 0.6 0.2)
(layers "F.Cu" "F.Mask" "F.Paste")
(roundrect_rratio 0.25)
(uuid "51ff94ae-67d5-4713-83e3-1616ff0e75eb")
)
(pad "3" smd roundrect
(at -1.9 -0.8)
(size 0.6 0.2)
(layers "F.Cu" "F.Mask" "F.Paste")
(roundrect_rratio 0.25)
(uuid "75a543dc-b49a-4a4f-8a8a-6b381d106769")
)
(pad "4" smd roundrect
(at -1.9 -0.4)
(size 0.6 0.2)
(layers "F.Cu" "F.Mask" "F.Paste")
(roundrect_rratio 0.25)
(uuid "070ac279-c3bf-4291-9ae2-986d5341f318")
)
(pad "5" smd roundrect
(at -1.9 0)
(size 0.6 0.2)
(layers "F.Cu" "F.Mask" "F.Paste")
(roundrect_rratio 0.25)
(uuid "062e8738-fe6c-449a-9e75-a7caa7b35934")
)
(pad "6" smd roundrect
(at -1.9 0.4)
(size 0.6 0.2)
(layers "F.Cu" "F.Mask" "F.Paste")
(roundrect_rratio 0.25)
(uuid "7541255c-870c-4419-a89c-b38367322359")
)
(pad "7" smd roundrect
(at -1.9 0.8)
(size 0.6 0.2)
(layers "F.Cu" "F.Mask" "F.Paste")
(roundrect_rratio 0.25)
(uuid "78187563-72a7-4a5f-a66c-a1da603d464a")
)
(pad "8" smd roundrect
(at -1.9 1.2)
(size 0.6 0.2)
(layers "F.Cu" "F.Mask" "F.Paste")
(roundrect_rratio 0.25)
(uuid "bbbd0b7c-4706-4384-b242-7d362487711a")
)
(pad "9" smd roundrect
(at -1.4 1.6 180)
(size 0.2 0.7)
(drill
(offset 0 -0.25)
)
(layers "F.Cu" "F.Mask" "F.Paste")
(roundrect_rratio 0.25)
(uuid "12df419d-ee54-4c01-8487-3a1ea5efe1be")
)
(pad "9" smd roundrect
(at -1.4 1.6 90)
(size 0.2 0.9)
(drill
(offset 0 -0.35)
)
(layers "F.Cu" "F.Mask" "F.Paste")
(roundrect_rratio 0.25)
(uuid "81f4aaa1-d58c-46f4-952a-971b27422c17")
)
(pad "10" smd roundrect
(at -1 1.9)
(size 0.2 0.6)
(layers "F.Cu" "F.Mask" "F.Paste")
(roundrect_rratio 0.25)
(uuid "6f2540b1-2c03-4620-bd30-c4334c90116e")
)
(pad "11" smd roundrect
(at -0.6 1.9)
(size 0.2 0.6)
(layers "F.Cu" "F.Mask" "F.Paste")
(roundrect_rratio 0.25)
(uuid "5fa4f42a-f380-429e-837d-a3b787b82d79")
)
(pad "12" smd roundrect
(at -0.2 1.9)
(size 0.2 0.6)
(layers "F.Cu" "F.Mask" "F.Paste")
(roundrect_rratio 0.25)
(uuid "678cd046-c882-402b-96b0-5b440ecf0d0e")
)
(pad "13" smd roundrect
(at 0.2 1.9)
(size 0.2 0.6)
(layers "F.Cu" "F.Mask" "F.Paste")
(roundrect_rratio 0.25)
(uuid "7fb2a85e-c298-4a70-9ead-7921c8d436c2")
)
(pad "14" smd roundrect
(at 0.6 1.9)
(size 0.2 0.6)
(layers "F.Cu" "F.Mask" "F.Paste")
(roundrect_rratio 0.25)
(uuid "cbbae3c6-7280-4523-91ef-fa875f02612d")
)
(pad "15" smd roundrect
(at 1 1.9)
(size 0.2 0.6)
(layers "F.Cu" "F.Mask" "F.Paste")
(roundrect_rratio 0.25)
(uuid "ebca0186-36e9-4dd0-ab63-bf622246cb83")
)
(pad "16" smd roundrect
(at 1.4 1.6 180)
(size 0.2 0.7)
(drill
(offset 0 -0.25)
)
(layers "F.Cu" "F.Mask" "F.Paste")
(roundrect_rratio 0.25)
(uuid "c0f77ae7-2244-453d-af17-a76790ad34e3")
)
(pad "16" smd roundrect
(at 1.4 1.6 270)
(size 0.2 0.9)
(drill
(offset 0 -0.35)
)
(layers "F.Cu" "F.Mask" "F.Paste")
(roundrect_rratio 0.25)
(uuid "aef4c759-12b8-4960-9733-e106e9d35ad9")
)
(pad "17" smd roundrect
(at 1.85 1.2)
(size 0.7 0.2)
(layers "F.Cu" "F.Mask" "F.Paste")
(roundrect_rratio 0.25)
(uuid "ab71ef63-3ab6-4abb-94e9-975269fd4309")
)
(pad "18" smd roundrect
(at 1.875 0.8)
(size 0.65 0.2)
(layers "F.Cu" "F.Mask" "F.Paste")
(roundrect_rratio 0.25)
(uuid "b18382b7-f5ad-417d-917f-35ecc910d919")
)
(pad "19" smd roundrect
(at 1.8625 0.4)
(size 0.68 0.2)
(layers "F.Cu" "F.Mask" "F.Paste")
(roundrect_rratio 0.25)
(uuid "6cbf90c5-3ad9-489a-888a-7546142f48cf")
)
(pad "20" smd roundrect
(at 1.9 0)
(size 0.6 0.2)
(layers "F.Cu" "F.Mask" "F.Paste")
(roundrect_rratio 0.25)
(uuid "8f0c4ccd-e618-4cc3-94a3-157feab8f387")
)
(pad "21" smd roundrect
(at 1.9 -0.4)
(size 0.6 0.2)
(layers "F.Cu" "F.Mask" "F.Paste")
(roundrect_rratio 0.25)
(uuid "4b789dea-abf8-4395-9ed7-95c7b82357fb")
)
(pad "22" smd roundrect
(at 1.9 -0.8)
(size 0.6 0.2)
(layers "F.Cu" "F.Mask" "F.Paste")
(roundrect_rratio 0.25)
(uuid "e4017287-9459-429f-abdb-fcddfb80e267")
)
(pad "23" smd roundrect
(at 1.9 -1.2)
(size 0.6 0.2)
(layers "F.Cu" "F.Mask" "F.Paste")
(roundrect_rratio 0.25)
(uuid "0643f254-7f26-4e26-8daa-5c9d63153e8b")
)
(pad "24" smd roundrect
(at 1.35 -1.6)
(size 0.2 0.7)
(drill
(offset 0 -0.25)
)
(layers "F.Cu" "F.Mask" "F.Paste")
(roundrect_rratio 0.25)
(uuid "f6445e30-69d7-445e-9eda-81b5cc58e5a7")
)
(pad "24" smd roundrect
(at 1.35 -1.6 270)
(size 0.2 0.95)
(drill
(offset 0 -0.375)
)
(layers "F.Cu" "F.Mask" "F.Paste")
(roundrect_rratio 0.25)
(uuid "ccef8ac6-0b40-4eec-8440-85306fd1ece9")
)
(pad "25" smd roundrect
(at 0.9 -1.7)
(size 0.22 1)
(layers "F.Cu" "F.Mask" "F.Paste")
(roundrect_rratio 0.2272727273)
(uuid "d3275a0a-6a2b-4d35-8a22-49854e02a924")
)
(pad "26" smd roundrect
(at 0.45 -1.7)
(size 0.22 1)
(layers "F.Cu" "F.Mask" "F.Paste")
(roundrect_rratio 0.2272727273)
(uuid "0b92c444-d36a-4797-8e58-c273c4a27f20")
)
(pad "27" smd roundrect
(at 0 -1.7)
(size 0.22 1)
(layers "F.Cu" "F.Mask" "F.Paste")
(roundrect_rratio 0.2272727273)
(uuid "9eac8c92-637b-46af-bbe0-6ca3e2e3ebe6")
)
(pad "28" smd roundrect
(at -0.45 -1.7)
(size 0.22 1)
(layers "F.Cu" "F.Mask" "F.Paste")
(roundrect_rratio 0.2272727273)
(uuid "b154beb7-3216-4f1c-92b7-02a92eeaf9f6")
)
(pad "29" smd roundrect
(at -0.9 -1.725)
(size 0.22 0.95)
(layers "F.Cu" "F.Mask" "F.Paste")
(roundrect_rratio 0.2272727273)
(uuid "5344e602-4be2-4a71-9cd3-b52d6cf18599")
)
(embedded_fonts no)
(model "${KIPRJMOD}/parts/parts.3dshapes/QFN-29_L4.0-W4.0-P0.40-TL-BQ25792RQMR.wrl"
(offset
(xyz 0 -0.01 -0)
)
(scale
(xyz 1 1 1)
)
(rotate
(xyz 0 0 0)
)
)
)

View file

@ -364,7 +364,7 @@
(uuid "c41c7820-e06b-4bea-a2f0-b70a6e5c02bd")
)
(embedded_fonts no)
(model "SX1255IWLTRT.stp"
(model "${KICAD9_3DMODEL_DIR}/Package_DFN_QFN.3dshapes/QFN-32-1EP_5x5mm_P0.5mm_EP3.45x3.45mm.wrl"
(offset
(xyz 0 0 0)
)

View file

@ -0,0 +1,170 @@
(footprint "SLO0520H1R0MTT"
(version 20241229)
(generator "pcbnew")
(generator_version "9.0")
(layer "F.Cu")
(property "Reference" "REF**"
(at -1.6 -3.1 0)
(layer "F.SilkS")
(uuid "41c7a22f-195d-4286-9376-e35a5beeab80")
(effects
(font
(size 0.6 0.6)
(thickness 0.15)
)
)
)
(property "Value" "IND-SMD_L5.4-W5.1"
(at 0 4 0)
(layer "F.Fab")
(uuid "6452beba-b4e8-408b-8ad2-7a40e8095d51")
(effects
(font
(size 1 1)
(thickness 0.15)
)
)
)
(property "Datasheet" ""
(at 0 0 0)
(layer "F.Fab")
(hide yes)
(uuid "6e2b042f-763d-49d7-b25b-64524ec8b839")
(effects
(font
(size 1.27 1.27)
(thickness 0.15)
)
)
)
(property "Description" ""
(at 0 0 0)
(layer "F.Fab")
(hide yes)
(uuid "18c8fb2f-6b5a-46e5-92ba-50a0f2c77068")
(effects
(font
(size 1.27 1.27)
(thickness 0.15)
)
)
)
(attr smd)
(fp_line
(start -2.7 -2.6)
(end -2.7 -1.48)
(stroke
(width 0.25)
(type solid)
)
(layer "F.SilkS")
(uuid "365a8472-28f6-468c-92ce-632a363ea605")
)
(fp_line
(start -2.7 -2.6)
(end 2.7 -2.6)
(stroke
(width 0.25)
(type solid)
)
(layer "F.SilkS")
(uuid "23280908-433e-4121-9392-af6302b0616d")
)
(fp_line
(start -2.7 1.48)
(end -2.7 2.6)
(stroke
(width 0.25)
(type solid)
)
(layer "F.SilkS")
(uuid "d3b5b7c3-6d6e-4c2c-bcaa-c91601929fe4")
)
(fp_line
(start -2.7 2.6)
(end 2.7 2.6)
(stroke
(width 0.25)
(type solid)
)
(layer "F.SilkS")
(uuid "c0954084-ff72-448b-8a6a-6d8671163165")
)
(fp_line
(start 2.7 -2.6)
(end 2.7 -1.48)
(stroke
(width 0.25)
(type solid)
)
(layer "F.SilkS")
(uuid "4e6d9180-4936-44da-ac3d-036401c0c417")
)
(fp_line
(start 2.7 1.48)
(end 2.7 2.6)
(stroke
(width 0.25)
(type solid)
)
(layer "F.SilkS")
(uuid "343e5950-04fa-4f1e-88ac-541dfb3f2733")
)
(fp_rect
(start -3 -2.7)
(end 3 2.7)
(stroke
(width 0.05)
(type default)
)
(fill no)
(layer "F.CrtYd")
(uuid "7c58817f-924c-4929-ba1b-710ddd679fd7")
)
(fp_circle
(center -2.7 2.6)
(end -2.67 2.6)
(stroke
(width 0.06)
(type solid)
)
(fill no)
(layer "F.Fab")
(uuid "9fdfa3db-7dc6-479e-8bf3-4786c3dfe67e")
)
(fp_text user "${REFERENCE}"
(at 0 0 0)
(layer "F.Fab")
(uuid "6bd7b1fc-cb8f-4bd1-a2a6-2c6de7f5aa13")
(effects
(font
(size 1 1)
(thickness 0.15)
)
)
)
(pad "1" smd rect
(at -2.4 0)
(size 1.25 2.5)
(layers "F.Cu" "F.Mask" "F.Paste")
(uuid "ed8eccd9-c6c5-4dcd-9c1d-5d23e4b5f353")
)
(pad "2" smd rect
(at 2.4 0)
(size 1.25 2.5)
(layers "F.Cu" "F.Mask" "F.Paste")
(uuid "7e6633d2-1ff1-4c50-9cc2-7cfca8d7f459")
)
(embedded_fonts no)
(model "${KIPRJMOD}/parts/parts.3dshapes/SLO0520H1R0MTT.wrl"
(offset
(xyz 0 -0 -0)
)
(scale
(xyz 1 1 1)
)
(rotate
(xyz 0 0 0)
)
)
)

View file

@ -54,6 +54,46 @@
)
)
(attr smd)
(fp_line
(start -0.6 -0.4)
(end -0.6 0.4)
(stroke
(width 0.1)
(type default)
)
(layer "F.SilkS")
(uuid "3d37ef7f-8599-4bf9-9c8c-91e87602fec8")
)
(fp_line
(start -0.6 0.4)
(end 0.6 0.4)
(stroke
(width 0.1)
(type default)
)
(layer "F.SilkS")
(uuid "a33bb430-f018-4354-81a7-2feb19fc6c4d")
)
(fp_line
(start 0.6 -0.4)
(end -0.6 -0.4)
(stroke
(width 0.1)
(type default)
)
(layer "F.SilkS")
(uuid "6206b217-745f-41b5-8927-3a6521fbca39")
)
(fp_line
(start 0.6 0.4)
(end 0.6 -0.4)
(stroke
(width 0.1)
(type default)
)
(layer "F.SilkS")
(uuid "2c0478b5-8d08-406f-b948-308850df27d6")
)
(fp_circle
(center -0.4 0.6)
(end -0.35 0.6)
@ -65,6 +105,17 @@
(layer "F.SilkS")
(uuid "209f785e-4e73-40e1-99b2-22eef1dbf8a5")
)
(fp_rect
(start -0.6 -0.4)
(end 0.6 0.4)
(stroke
(width 0.05)
(type default)
)
(fill no)
(layer "F.CrtYd")
(uuid "397f203a-b7bb-4093-bf45-a70ef770ea73")
)
(fp_text user "${REFERENCE}"
(at 0 2 0)
(unlocked yes)

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,106 @@
<!--XSL style sheet to convert EESCHEMA XML Partlist Format to grouped CSV BOM Format
Copyright (C) 2014, Wolf Walter.
Copyright (C) 2013, Stefan Helmert.
Copyright (C) 2018, Kicad developers.
Copyright (C) 2019, arturo182.
GPL v2.
Functionality:
Generation of JLCPCB PCBA compatible BOM
How to use this is explained in eeschema.pdf chapter 14. You enter a command line into the
netlist exporter using a new (custom) tab in the netlist export dialog.
The command line is
xsltproc -o "%O.csv" "FullPathToFile/bom2grouped_csv_jlcpcb.xsl" "%I"
-->
<!--
@package
Generates a JLCPCB PCBA service compatible BOM
Functionality:
* Generate a comma separated value BOM list (csv file type).
* Components are sorted by ref and grouped by same value+footprint
One value per line
Fields are
Comment,Designator,Footprint,PN,LCSC
The command line is
xsltproc -o "%O.csv" "full_path/bom2grouped_csv_jlcpcb.xsl" "%I"
-->
<!DOCTYPE xsl:stylesheet [
<!ENTITY nl "&#xd;&#xa;"> <!--new line CR, LF, or LF, your choice -->
]>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="text"/>
<xsl:variable name="digits" select="'1234567890'" />
<!-- for matching grouping of footprint and value combination -->
<xsl:key name="partTypeByValueAndFootprint" match="comp" use="concat(footprint, '-', value)" />
<!-- for table head and empty table fields-->
<xsl:key name="headentr" match="field" use="@name"/>
<!-- main part -->
<xsl:template match="/export">
<xsl:text>Comment,Designator,Footprint,Quantity,PN,LCSC</xsl:text>
<!-- all table entries -->
<xsl:apply-templates select="components"/>
</xsl:template>
<xsl:template match="components">
<!-- for Muenchian grouping of footprint and value combination -->
<xsl:for-each select="comp[count(. | key('partTypeByValueAndFootprint', concat(footprint, '-', value))[1]) = 1]">
<xsl:sort select="@ref" />
<xsl:text>&nl;</xsl:text>
<xsl:text>"</xsl:text><xsl:value-of select="value"/><xsl:text>","</xsl:text>
<!-- list of all references -->
<xsl:for-each select="key('partTypeByValueAndFootprint', concat(footprint, '-', value))">
<!-- strip non-digits from reference and sort based on remaining number -->
<xsl:sort select="translate(@ref, translate(@ref, $digits, ''), '')" data-type="number" />
<xsl:value-of select="@ref"/>
<xsl:if test="position() != last()"><xsl:text>,</xsl:text></xsl:if>
</xsl:for-each>
<xsl:text>","</xsl:text>
<xsl:value-of select="footprint"/><xsl:text>","</xsl:text>
<xsl:value-of select="count(key('partTypeByValueAndFootprint', concat(footprint, '-', value)))"/><xsl:text>","</xsl:text>
<xsl:value-of select="fields/field[@name='PN']"/><xsl:text>","</xsl:text>
<xsl:value-of select="fields/field[@name='LCSC']"/><xsl:text>"</xsl:text>
</xsl:for-each>
</xsl:template>
<!-- table entries with dynamic table head -->
<xsl:template match="fields">
<!-- remember current fields section -->
<xsl:variable name="fieldvar" select="field"/>
<!-- for all existing head entries -->
<xsl:for-each select="/export/components/comp/fields/field[generate-id(.) = generate-id(key('headentr',@name)[1])]">
<xsl:variable name="allnames" select="@name"/>
<xsl:text>,"</xsl:text>
<!-- for all field entries in the remembered fields section -->
<xsl:for-each select="$fieldvar">
<!-- only if this field entry exists in this fields section -->
<xsl:if test="@name=$allnames">
<!-- content of the field -->
<xsl:value-of select="."/>
</xsl:if>
<!--
If it does not exist, use an empty cell in output for this row.
Every non-blank entry is assigned to its proper column.
-->
</xsl:for-each>
<xsl:text>"</xsl:text>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>

File diff suppressed because one or more lines are too long

View file

@ -0,0 +1,217 @@
.render-row {
display: flex;
flex-wrap: wrap;
padding: 0 4px;
}
/* Create four equal columns that sits next to each other */
.render-col {
flex: 50%;
max-width: 50%;
padding: 0 4px;
}
.render-col img {
margin-top: 8px;
vertical-align: middle;
width: 100%;
}
/* Responsive layout - makes the two columns stack on top of each other instead of next to each other */
@media screen and (max-width: 600px) {
.render-col {
flex: 100%;
max-width: 100%;
}
}
.img-rounded {
border-radius:10% !important;
}
.card-body {
/* Better reading width & spacing */
font-size: 1.02rem;
line-height: 1.65;
}
/* Reading width only for text content */
.card-body > p,
.card-body > ul,
.card-body > ol,
.card-body > blockquote,
.card-body > pre,
.card-body > h1,
.card-body > h2,
.card-body > h3,
.card-body > h4,
.card-body > h5,
.card-body > h6 {
max-width: 80ch;
}
/* Headings: better rhythm, slightly heavier, nicer spacing */
.card-body h1,
.card-body h2,
.card-body h3,
.card-body h4,
.card-body h5,
.card-body h6 {
margin-top: 1.6em;
margin-bottom: 0.6em;
line-height: 1.25;
font-weight: 650;
letter-spacing: -0.015em;
}
.card-body h1 { font-size: 2.0rem; margin-top: 0.4em; }
.card-body h2 { font-size: 1.5rem; border-bottom: 1px solid var(--bs-border-color); padding-bottom: .35rem; }
.card-body h3 { font-size: 1.25rem; }
.card-body h4 { font-size: 1.1rem; }
/* Paragraphs + lists: consistent spacing */
.card-body p {
margin: 0 0 0.9rem 0;
}
.card-body ul,
.card-body ol {
margin: 0 0 1rem 1.1rem;
padding: 0;
}
.card-body li {
margin-bottom: 0.25rem;
}
/* Make nested list indentation feel nicer */
.card-body ul ul,
.card-body ol ol,
.card-body ul ol,
.card-body ol ul {
margin-top: 0.35rem;
margin-bottom: 0.35rem;
}
/* Links: subtle, readable */
.card-body a {
text-decoration: none;
border-bottom: 1px solid rgba(13,110,253,.35); /* bootstrap primary-ish */
}
.card-body a:hover {
border-bottom-color: rgba(13,110,253,.8);
}
/* Blockquotes: turn into a clean “note” box */
.card-body blockquote {
margin: 1rem 0;
padding: 0.75rem 1rem;
border-left: 4px solid var(--bs-border-color);
background: var(--bs-tertiary-bg);
border-radius: 0.5rem;
}
.card-body blockquote p:last-child { margin-bottom: 0; }
/* Inline code: subtle pill */
.card-body code {
padding: 0.15em 0.35em;
border-radius: 0.35rem;
background: rgba(0,0,0,.05);
font-size: 0.95em;
}
/* Code blocks (```): good spacing, background, scroll if needed */
.card-body pre {
margin: 1rem 0;
padding: 0.9rem 1rem;
border: 1px solid var(--bs-border-color);
border-radius: 0.75rem;
background: var(--bs-tertiary-bg);
overflow: auto;
}
.card-body pre code {
padding: 0;
background: transparent;
font-size: 0.95em;
line-height: 1.5;
display: block;
}
/* Tables: readable borders + zebra stripes + padding */
.card-body table {
width: 100%;
margin: 1rem 0;
border-collapse: separate;
border-spacing: 0;
border: 1px solid var(--bs-border-color);
border-radius: 0.75rem;
overflow: hidden; /* makes rounded corners work */
}
.card-body thead th {
background: var(--bs-tertiary-bg);
font-weight: 650;
border-bottom: 1px solid var(--bs-border-color);
}
.card-body th,
.card-body td {
padding: 0.6rem 0.75rem;
vertical-align: top;
border-right: 1px solid var(--bs-border-color);
}
.card-body th:last-child,
.card-body td:last-child {
border-right: none;
}
.card-body tbody tr:not(:last-child) td {
border-bottom: 1px solid var(--bs-border-color);
}
/* Zebra stripes */
.card-body tbody tr:nth-child(2n) td {
background: rgba(0,0,0,.02);
}
/* If tables are wide, allow horizontal scrolling on small screens */
.card-body table {
width: 100%;
}
@media (max-width: 768px) {
.card-body table {
display: block;
overflow-x: auto;
}
}
/* Images inside markdown: look consistent */
.card-body img {
max-width: 100%;
height: auto;
border-radius: 0.75rem;
}
/* Horizontal rule: subtle */
.card-body hr {
margin: 2rem 0;
border-top: 1px solid var(--bs-border-color);
opacity: 1;
}
/* Optional: badge images should align nicely and not be huge */
.card-body p img {
vertical-align: middle;
}
/* Fix your flashing code block: currently it's inside <p><code>... */
.card-body p > code {
white-space: pre-wrap;
}
/* Improve the "card" reading feel a bit (optional) */
.card .card-body {
padding: 1.75rem;
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 917 B

View file

@ -0,0 +1,26 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:cc="http://creativecommons.org/ns#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" width="189.5063mm" height="117.32051mm" viewBox="0 0 189.5063 117.32051" version="1.1" id="svg8" inkscape:version="0.92.4 (5da689c313, 2019-01-14)" sodipodi:docname="M17_logo_shadow.svg" inkscape:export-filename="C:\Users\SP5WWP\Documents\M17_logo_simple_400.png" inkscape:export-xdpi="399.95294" inkscape:export-ydpi="399.95294">
<defs id="defs2"/>
<sodipodi:namedview id="base" pagecolor="#ffffff" bordercolor="#666666" borderopacity="1.0" inkscape:pageopacity="0.0" inkscape:pageshadow="2" inkscape:zoom="0.98994949" inkscape:cx="380.91114" inkscape:cy="226.43171" inkscape:document-units="mm" inkscape:current-layer="layer1" showgrid="false" showguides="false" inkscape:guide-bbox="true" fit-margin-top="10" fit-margin-bottom="10" fit-margin-left="10" fit-margin-right="10" inkscape:window-width="1280" inkscape:window-height="962" inkscape:window-x="-8" inkscape:window-y="-8" inkscape:window-maximized="1" inkscape:snap-global="false">
<sodipodi:guide position="70.590358,88.660254" orientation="0,1" id="guide10" inkscape:locked="false" inkscape:label="" inkscape:color="rgb(0,0,255)"/>
<sodipodi:guide position="73.129418,28.660253" orientation="0,1" id="guide12" inkscape:locked="false" inkscape:label="" inkscape:color="rgb(0,0,255)"/>
</sodipodi:namedview>
<metadata id="metadata5">
<rdf:RDF>
<cc:Work rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/>
<dc:title/>
</cc:Work>
</rdf:RDF>
</metadata>
<g inkscape:label="Layer 1" inkscape:groupmode="layer" id="layer1" transform="translate(-41.529203,-88.339744)">
<path style="fill:none;stroke:#999999;stroke-width:10;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" d="m 57.857748,178.73185 34.641012,-60 v 60 l 34.64101,-60 v 60" id="path879-0" inkscape:connector-curvature="0"/>
<path style="fill:none;stroke:#999999;stroke-width:10;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" d="m 161.78079,178.73185 v -60 l -17.2733,29.91823" id="path821-2" inkscape:connector-curvature="0"/>
<path style="fill:none;stroke:#999999;stroke-width:10;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" d="m 179.73264,178.73185 34.64102,-60 h -33.97049" id="path825-1" inkscape:connector-curvature="0"/>
<path style="fill:none;stroke:#000000;stroke-width:10;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" d="m 55.85933,177 34.641017,-60 v 60 l 34.641013,-60 v 60" id="path879" inkscape:connector-curvature="0"/>
<path style="fill:none;stroke:#ff0000;stroke-width:10;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" d="m 159.78238,177 v -60 l -17.2733,29.91823" id="path821" inkscape:connector-curvature="0"/>
<path style="fill:none;stroke:#ff0000;stroke-width:10;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" d="m 177.73423,177 34.64102,-60 h -33.97049" id="path825" inkscape:connector-curvature="0"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 3.6 KiB

View file

@ -0,0 +1,100 @@
<!DOCTYPE html>
<html lang="en" data-bs-theme="auto">
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="description" content="">
<meta name="author" content="M17 Foundation">
<title>{{ name }}</title>
<link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="stylesheet" href="css/style.css">
<link rel="icon" href="imgs/favicon.png">
</head>
<body>
<section class="py-1 text-center container">
<div class="row py-2 py-lg-3 mx-auto">
<div class="col-lg-4 col-md-4 ">
<img class="img-rounded" src="imgs/m17-logo.svg" alt="Logo M17 Foundation" width="200px">
</div>
<div class="col-lg-6 col-md-6 pt-2">
<h1>{{ title }}</h1>
<p>{{ description }}</p>
</div>
</div>
</section>
<div class="py-5 bg-body-tertiary">
<div class="container">
<div class="card mb-3">
<div class="row g-0">
<div class="col-md-8">
<div class="card-body">
{% include 'README.html' %}
</div>
</div>
<div class="col-md-4">
{% for r in renders %}
{% if loop.first %}
<a href="imgs/{{ name }}-{{ r.suffix }}.png">
<img src="imgs/{{ name }}-{{ r.suffix }}.png" class="img-fluid rounded-start mb-2" alt="3D render PCB {{ name }}, {{ r.alt }}.">
</a>
<div class="render-row">
{% else %}
<div class="render-col">
<a href="imgs/{{ name }}-{{ r.suffix }}.png">
<img src="imgs/{{ name }}-{{ r.suffix }}.png" class="img-fluid rounded-start" alt="3D render PCB {{ name }}, {{ r.alt }}.">
</a>
</div>
{% endif %}
{% if loop.last %}
</div>
{% endif %}
{% endfor %}
<div class="">
<h3>Files:</h3>
<ul>
{% for item in files %}
<li>
<a href="files/{{ item.file }}">{{ item.description }}</a>
</li>
{% endfor %}
</ul>
</div>
<vrml-viewer src="files/{{ name }}_model.vrml.gz" autoload="false" model-size="1.2" responsive="true"></vrml-viewer>
</div>
</div>
</div>
<footer class="text-body-secondary py-5">
<div class="container">
<p class="float-end mb-1">
<a href="#">Back to top</a>
</p>
<p class="mb-1"><a href="https://m17foundation.org/">m17foundation.org</a>, last update: {{ datetime }}.</p>
</div>
</footer>
<div class="w-full mt-16 mb-1 p-2 bg-gray-200 text-center txt-xs rounded">
</div>
</div>
</div>
<script src="js/bootstrap.bundle.min.js"></script>
<script type="importmap">
{
"imports": {
"three": "https://cdn.jsdelivr.net/npm/three@0.160.1/build/three.module.js",
"three/addons/": "https://cdn.jsdelivr.net/npm/three@0.160.1/examples/jsm/"
}
}
</script>
<script type="module" src="js/vrml-viewer.js"></script>
</body>
</html>

View file

@ -0,0 +1,23 @@
{
"title": "LinHT Hardware",
"name": "linht-hw",
"description": "This is the hardware project page for LINHT-HW board.",
"files": [
{"file": "gerbers_jlcpcb.zip", "description": "Gerber Files for JLCPCB (ZIP)"},
{"file": "gerbers_pcbway.zip", "description": "Gerber Files for PCBWay (ZIP)"},
{"file": "linht-hw_pos.csv", "description": "Position File (CSV)"},
{"file": "linht-hw_pos.txt", "description": "Position File (ASCII)"},
{"file": "linht-hw_pos_jlcpcb.csv", "description": "Position File for JLCPCB (CSV)"},
{"file": "linht-hw_bom.txt", "description": "Bill of Materials (ASCII)"},
{"file": "linht-hw_bom.csv", "description": "Bill of Materials for JLCPCB (CSV)"},
{"file": "linht-hw_schematic.pdf", "description": "Schematic (PDF)"},
{"file": "linht-hw_schematic_bw.pdf", "description": "Schematic without Colors (PDF)"},
{"file": "linht-hw_model.step.xz", "description": "3D Model (STEP.XZ)"},
{"file": "linht-hw_model.vrml.xz", "description": "3D Model (VRML.XZ)"}
],
"renders": [
{"suffix": "preview", "alt": "Isometric view of the PCB"},
{"suffix": "front", "alt": "Top side of the PCB"},
{"suffix": "back", "alt": "Bottom side of the PCB"}
]
}

File diff suppressed because one or more lines are too long

View file

@ -0,0 +1,785 @@
/**
* VRML Viewer Custom Element
* Web component for displaying VRML files using ThreeJS with responsive design and touch support
*/
import {
Scene,
PerspectiveCamera,
WebGLRenderer,
AmbientLight,
DirectionalLight,
Box3,
Vector3,
LinearToneMapping
} from 'three';
import { VRMLLoader } from 'three/addons/loaders/VRMLLoader.js';
import { OrbitControls } from 'three/addons/controls/OrbitControls.js';
const DEFAULT_WIDTH = 800;
const DEFAULT_HEIGHT = 600;
const DEFAULT_BACKGROUND = '#f8f8f8';
// Inject embedded CSS styles once to avoid duplicates
if (!document.querySelector('style[data-vrml-viewer]')) {
const style = document.createElement('style');
style.setAttribute('data-vrml-viewer', 'true');
style.textContent = `
/* VRML Viewer Embedded Styles */
vrml-viewer {
display: block;
position: relative;
border: 1px solid rgba(0, 0, 0, 0.1);
border-radius: 4px;
overflow: hidden;
background: #fafafa;
/* Default fixed size */
width: var(--vrml-width, 800px);
height: var(--vrml-height, 600px);
}
/* Responsive viewer - simplified approach */
vrml-viewer[responsive="true"],
vrml-viewer.responsive-viewer {
width: 100%;
height: auto;
aspect-ratio: var(--vrml-aspect-ratio, 3/2);
min-height: clamp(250px, 40vh, 400px);
max-height: 85vh;
}
/* Container and canvas */
.vrml-viewer-container {
position: relative;
width: 100%;
height: 100%;
}
.vrml-viewer-canvas {
display: block;
width: 100%;
height: 100%;
}
/* Controls */
.vrml-viewer-controls {
position: absolute;
top: 8px;
right: 8px;
display: flex;
gap: 4px;
z-index: 1000;
}
.vrml-viewer-btn {
background: rgba(255, 255, 255, 0.9);
color: #333;
border: 1px solid rgba(0, 0, 0, 0.1);
border-radius: 3px;
padding: 6px 10px;
cursor: pointer;
font-size: 11px;
font-weight: 500;
transition: all 0.2s ease;
min-height: 32px;
min-width: 50px;
}
.vrml-viewer-btn:hover {
background: rgba(255, 255, 255, 1);
border-color: rgba(0, 0, 0, 0.2);
transform: translateY(-1px);
}
.vrml-viewer-btn:active {
transform: translateY(0);
}
/* Load button */
.vrml-viewer-load-btn {
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
background: #007bff;
color: white;
border: none;
border-radius: 4px;
padding: 12px 24px;
font-size: 14px;
font-weight: 500;
cursor: pointer;
transition: all 0.2s ease;
z-index: 1001;
}
.vrml-viewer-load-btn:hover {
background: #0056b3;
transform: translate(-50%, -50%) translateY(-1px);
}
/* Loading and error states */
.vrml-viewer-loading,
.vrml-viewer-error {
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
background: rgba(255, 255, 255, 0.95);
padding: 20px;
border-radius: 6px;
text-align: center;
z-index: 1001;
border: 1px solid rgba(0, 0, 0, 0.1);
max-width: 80%;
}
.vrml-viewer-error {
color: #d32f2f;
border-color: rgba(211, 47, 47, 0.2);
}
.vrml-viewer-spinner {
border: 2px solid #f3f3f3;
border-top: 2px solid #007bff;
border-radius: 50%;
width: 20px;
height: 20px;
animation: vrml-spin 1s linear infinite;
margin: 0 auto 10px;
}
@keyframes vrml-spin {
to { transform: rotate(360deg); }
}
.vrml-viewer-loading div:last-child {
color: #666;
font-size: 12px;
font-weight: 500;
}
.vrml-viewer-error h3 {
margin: 0 0 8px 0;
font-size: 14px;
font-weight: 600;
}
.vrml-viewer-error p {
margin: 0;
font-size: 12px;
font-weight: 400;
}
/* Fullscreen styles */
vrml-viewer:fullscreen {
width: 100vw !important;
height: 100vh !important;
border: none;
border-radius: 0;
}
/* Simplified responsive breakpoints - only 2 instead of 5 */
@media (max-width: 768px) {
/* Mobile and tablet adjustments */
vrml-viewer[responsive="true"],
vrml-viewer.responsive-viewer {
aspect-ratio: 4/3; /* More square for mobile */
min-height: clamp(250px, 35vh, 350px);
max-height: 70vh;
}
.vrml-viewer-controls {
top: 6px;
right: 6px;
flex-direction: column;
gap: 4px;
}
.vrml-viewer-btn {
padding: 8px 12px;
font-size: 11px;
min-width: 60px;
min-height: 36px;
}
.vrml-viewer-load-btn {
padding: 14px 20px;
font-size: 15px;
min-width: 120px;
min-height: 44px;
}
}
/* Touch-friendly enhancements */
@media (hover: none) and (pointer: coarse) {
.vrml-viewer-btn {
min-height: 44px;
min-width: 44px;
padding: 10px 14px;
font-size: 12px;
}
.vrml-viewer-load-btn {
min-height: 48px;
min-width: 140px;
padding: 16px 24px;
font-size: 16px;
}
}
/* Dark theme support */
@media (prefers-color-scheme: dark) {
vrml-viewer {
border-color: rgba(255, 255, 255, 0.1);
background: #1a1a1a;
}
.vrml-viewer-btn {
background: rgba(0, 0, 0, 0.8);
color: #fff;
border-color: rgba(255, 255, 255, 0.1);
}
.vrml-viewer-btn:hover {
background: rgba(0, 0, 0, 0.9);
border-color: rgba(255, 255, 255, 0.2);
}
.vrml-viewer-loading,
.vrml-viewer-load-btn {
background: rgba(0, 0, 0, 0.9);
border-color: rgba(255, 255, 255, 0.1);
}
.vrml-viewer-loading div:last-child {
color: #ccc;
}
.vrml-viewer-error {
background: rgba(0, 0, 0, 0.9);
color: #ff6b6b;
border-color: rgba(255, 107, 107, 0.2);
}
}
/* High DPI displays */
@media (-webkit-min-device-pixel-ratio: 2), (min-resolution: 192dpi) {
vrml-viewer {
border-width: 0.5px;
}
.vrml-viewer-btn {
border-width: 0.5px;
}
}
`;
document.head.appendChild(style);
}
// GZIP detection and decompression utilities
function isGzipFile(url) {
return url.toLowerCase().endsWith('.gz');
}
// Handle both modern DecompressionStream and fallback for older browsers
async function fetchAndDecompress(url) {
try {
const response = await fetch(url);
if (!response.ok) {
throw new Error(`HTTP ${response.status}: ${response.statusText}`);
}
if ('DecompressionStream' in window) {
// Modern browsers: use native streaming decompression
const decompressedStream = response.body
.pipeThrough(new DecompressionStream('gzip'));
const decompressedResponse = new Response(decompressedStream);
return await decompressedResponse.text();
} else {
// Legacy browsers: rely on server-side decompression
const fallbackResponse = await fetch(url, {
headers: { 'Accept-Encoding': 'gzip' }
});
if (!fallbackResponse.ok) {
throw new Error(`HTTP ${fallbackResponse.status}: ${fallbackResponse.statusText}`);
}
return await fallbackResponse.text();
}
} catch (error) {
throw new Error(`Failed to fetch/decompress file: ${error.message}`);
}
}
async function fetchVRMLFile(url) {
if (isGzipFile(url)) {
return await fetchAndDecompress(url);
} else {
const response = await fetch(url);
if (!response.ok) {
throw new Error(`HTTP ${response.status}: ${response.statusText}`);
}
return await response.text();
}
}
// Basic VRML content validation - checks for common VRML keywords
function validateVRMLContent(content) {
if (!content || typeof content !== 'string') return false;
const trimmed = content.trim();
return trimmed.startsWith('#VRML') ||
trimmed.includes('VRML') ||
trimmed.includes('Shape') ||
trimmed.includes('geometry') ||
trimmed.includes('IndexedFaceSet');
}
class VRMLViewer extends HTMLElement {
constructor() {
super();
// ThreeJS core components
this.scene = null;
this.camera = null;
this.renderer = null;
this.controls = null;
this.model = null;
this.isLoading = false;
this.initialCameraPosition = null;
this.initialCameraTarget = null;
// Render-on-demand optimization to improve performance
this.needsRender = true;
this.resizeTimeout = null;
// Bind event handlers to maintain correct 'this' context
this.handleResize = this.handleResize.bind(this);
this.resetView = this.resetView.bind(this);
this.toggleFullscreen = this.toggleFullscreen.bind(this);
this.createDOM();
}
static get observedAttributes() {
return ['src', 'width', 'height', 'background-color', 'autoload', 'model-size', 'responsive'];
}
createDOM() {
this.innerHTML = `
<div class="vrml-viewer-container">
<canvas class="vrml-viewer-canvas"></canvas>
<div class="vrml-viewer-controls">
<button class="vrml-viewer-btn" id="reset-btn" title="Reset View">Reset</button>
<button class="vrml-viewer-btn fullscreen" id="fullscreen-btn" title="Toggle Fullscreen">Fullscreen</button>
</div>
<button class="vrml-viewer-load-btn" id="load-btn" style="display: none;">Load Model</button>
<div class="vrml-viewer-loading" style="display: none;">
<div class="vrml-viewer-spinner"></div>
<div>Loading VRML...</div>
</div>
<div class="vrml-viewer-error" style="display: none;">
<h3>Error Loading VRML</h3>
<p id="error-message"></p>
</div>
</div>
`;
// Get references
this.canvas = this.querySelector('.vrml-viewer-canvas');
this.loadingEl = this.querySelector('.vrml-viewer-loading');
this.errorEl = this.querySelector('.vrml-viewer-error');
this.errorMessageEl = this.querySelector('#error-message');
this.loadBtnEl = this.querySelector('#load-btn');
// Add event listeners
this.querySelector('#reset-btn').addEventListener('click', this.resetView);
this.querySelector('#fullscreen-btn').addEventListener('click', this.toggleFullscreen);
this.loadBtnEl.addEventListener('click', () => this.handleLoadButtonClick());
}
async connectedCallback() {
try {
await this.initViewer();
// Wait for CSS layout completion before sizing calculations
requestAnimationFrame(() => {
this.updateSize();
this.updateBackgroundColor();
// Handle autoload behavior
const src = this.getAttribute('src');
const autoload = this.getAttribute('autoload');
const shouldAutoload = autoload === null || autoload === '' || autoload === 'true';
if (src && shouldAutoload) {
this.loadModel(src);
} else if (src && !shouldAutoload) {
this.showLoadButton();
}
});
this.startRenderLoop();
window.addEventListener('resize', this.handleResize);
// Cross-browser fullscreen event listeners
document.addEventListener('fullscreenchange', () => this.handleFullscreenChange());
document.addEventListener('webkitfullscreenchange', () => this.handleFullscreenChange());
document.addEventListener('mozfullscreenchange', () => this.handleFullscreenChange());
document.addEventListener('MSFullscreenChange', () => this.handleFullscreenChange());
} catch (error) {
this.showError(`Failed to initialize viewer: ${error.message}`);
}
}
disconnectedCallback() {
window.removeEventListener('resize', this.handleResize);
document.removeEventListener('fullscreenchange', () => this.handleFullscreenChange());
document.removeEventListener('webkitfullscreenchange', () => this.handleFullscreenChange());
document.removeEventListener('mozfullscreenchange', () => this.handleFullscreenChange());
document.removeEventListener('MSFullscreenChange', () => this.handleFullscreenChange());
this.stopRenderLoop();
if (this.renderer) this.renderer.dispose();
if (this.controls) this.controls.dispose();
}
attributeChangedCallback(name, oldValue, newValue) {
if (oldValue === newValue) return;
switch (name) {
case 'src':
if (newValue && this.renderer) {
const autoload = this.getAttribute('autoload');
const shouldAutoload = autoload === null || autoload === '' || autoload === 'true';
if (shouldAutoload) {
this.hideLoadButton();
this.loadModel(newValue);
} else {
this.showLoadButton();
}
}
break;
case 'autoload':
const src = this.getAttribute('src');
const shouldAutoload = newValue === null || newValue === '' || newValue === 'true';
if (shouldAutoload && src && this.renderer) {
this.hideLoadButton();
this.loadModel(src);
} else if (!shouldAutoload && src) {
this.showLoadButton();
} else {
this.hideLoadButton();
}
break;
case 'width':
case 'height':
case 'responsive':
this.updateSize();
break;
case 'background-color':
this.updateBackgroundColor();
break;
case 'model-size':
if (this.model) this.fitCameraToModel();
break;
}
}
async initViewer() {
this.scene = new Scene();
const width = this.getWidth();
const height = this.getHeight();
this.camera = new PerspectiveCamera(60, width / height, 0.01, 1000);
this.camera.position.set(0, 0, 5);
// Configure renderer for optimal PCB visualization
this.renderer = new WebGLRenderer({
canvas: this.canvas,
antialias: true,
alpha: true,
powerPreference: 'high-performance'
});
this.renderer.setSize(width, height);
this.renderer.setPixelRatio(Math.min(window.devicePixelRatio, 2)); // Cap at 2x for performance
this.renderer.shadowMap.enabled = false; // Shadows not needed for PCB viewing
this.renderer.toneMapping = LinearToneMapping;
this.renderer.toneMappingExposure = 1.2;
this.renderer.outputColorSpace = 'srgb';
this.setupLighting();
// Configure orbit controls for 3D model interaction
this.controls = new OrbitControls(this.camera, this.canvas);
this.controls.enableDamping = true;
this.controls.dampingFactor = 0.05;
this.controls.screenSpacePanning = false;
this.controls.minDistance = 0.01;
this.controls.maxDistance = 100;
this.controls.maxPolarAngle = Math.PI;
// Touch device optimizations
if ('ontouchstart' in window) {
this.controls.rotateSpeed = 0.8;
this.controls.zoomSpeed = 1.2;
this.controls.panSpeed = 0.8;
}
this.controls.addEventListener('change', () => {
this.needsRender = true;
});
}
setupLighting() {
// Three-point lighting setup optimized for PCB visualization
const ambientLight = new AmbientLight(0x808080, 1.2); // Base illumination
this.scene.add(ambientLight);
const directionalLight = new DirectionalLight(0xffffff, 1.5); // Key light
directionalLight.position.set(10, 10, 8);
this.scene.add(directionalLight);
const fillLight = new DirectionalLight(0xffffff, 0.8); // Fill light from opposite side
fillLight.position.set(-8, -8, -6);
this.scene.add(fillLight);
}
async loadModel(src) {
if (this.isLoading) return;
this.isLoading = true;
this.showLoading();
this.hideError();
try {
this.disposeModel();
const vrmlContent = await fetchVRMLFile(src);
if (!validateVRMLContent(vrmlContent)) {
throw new Error('Invalid VRML content');
}
const loader = new VRMLLoader();
this.model = loader.parse(vrmlContent);
this.scene.add(this.model);
this.fitCameraToModel();
this.hideLoading();
this.hideLoadButton();
this.needsRender = true;
} catch (error) {
this.hideLoading();
this.showError(`Failed to load VRML: ${error.message}`);
} finally {
this.isLoading = false;
}
}
// Proper WebGL resource cleanup to prevent memory leaks
disposeModel() {
if (this.model) {
this.model.traverse((child) => {
if (child.geometry) child.geometry.dispose();
if (child.material) {
if (Array.isArray(child.material)) {
child.material.forEach(material => material.dispose());
} else {
child.material.dispose();
}
}
if (child.texture) child.texture.dispose();
});
this.scene.remove(this.model);
this.model = null;
}
}
// Calculate optimal camera position based on model bounding box
fitCameraToModel() {
if (!this.model) return;
const box = new Box3().setFromObject(this.model);
const size = box.getSize(new Vector3());
const center = box.getCenter(new Vector3());
// Calculate camera distance using field of view and model size
const modelSizeMultiplier = parseFloat(this.getAttribute('model-size')) || 1.0;
const maxDim = Math.max(size.x, size.y, size.z);
const fov = this.camera.fov * (Math.PI / 180);
let cameraDistance = Math.abs(maxDim / Math.sin(fov / 2)) * 0.8 * modelSizeMultiplier;
cameraDistance = Math.max(cameraDistance, maxDim * 1.5); // Ensure minimum distance
// Position camera with slight elevation for better PCB viewing angle
this.camera.position.copy(center);
this.camera.position.z += cameraDistance;
this.camera.position.y += cameraDistance * 0.1;
this.camera.lookAt(center);
this.controls.target.copy(center);
this.controls.update();
// Store initial position for reset functionality
this.initialCameraPosition = this.camera.position.clone();
this.initialCameraTarget = center.clone();
this.needsRender = true;
}
resetView() {
if (this.initialCameraPosition && this.initialCameraTarget) {
this.camera.position.copy(this.initialCameraPosition);
this.controls.target.copy(this.initialCameraTarget);
this.controls.update();
this.needsRender = true;
} else if (this.model) {
this.fitCameraToModel();
}
}
toggleFullscreen() {
if (!document.fullscreenElement) {
this.requestFullscreen().catch(err => {
console.warn('Could not enter fullscreen:', err);
});
} else {
document.exitFullscreen();
}
}
// Render-on-demand loop for optimal performance
startRenderLoop() {
const animate = () => {
this.animationId = requestAnimationFrame(animate);
let hasChanges = false;
if (this.controls && this.controls.enabled) {
hasChanges = this.controls.update() || hasChanges;
}
// Only render when changes occur to save GPU resources
if (this.needsRender || hasChanges) {
if (this.renderer && this.scene && this.camera) {
this.renderer.render(this.scene, this.camera);
this.needsRender = false;
}
}
};
animate();
}
stopRenderLoop() {
if (this.animationId) {
cancelAnimationFrame(this.animationId);
this.animationId = null;
}
}
// Debounced resize handler to prevent excessive recalculations
handleResize() {
clearTimeout(this.resizeTimeout);
this.resizeTimeout = setTimeout(() => {
this.updateSize();
if (this.isResponsive() && this.model) {
this.fitCameraToModel();
}
}, 150);
}
handleFullscreenChange() {
setTimeout(() => this.updateSize(), 100);
}
updateSize() {
if (!this.renderer || !this.camera) return;
const width = this.getWidth();
const height = this.getHeight();
this.camera.aspect = width / height;
this.camera.updateProjectionMatrix();
this.renderer.setSize(width, height);
this.needsRender = true;
}
updateBackgroundColor() {
if (!this.renderer) return;
const color = this.getAttribute('background-color') || DEFAULT_BACKGROUND;
this.renderer.setClearColor(color);
this.needsRender = true;
}
getWidth() {
if (this.isFullscreen()) return window.innerWidth;
if (this.isResponsive()) return this.clientWidth || this.getBoundingClientRect().width || DEFAULT_WIDTH;
return parseInt(this.getAttribute('width')) || DEFAULT_WIDTH;
}
getHeight() {
if (this.isFullscreen()) return window.innerHeight;
if (this.isResponsive()) return this.clientHeight || this.getBoundingClientRect().height || DEFAULT_HEIGHT;
return parseInt(this.getAttribute('height')) || DEFAULT_HEIGHT;
}
isFullscreen() {
return document.fullscreenElement === this ||
document.webkitFullscreenElement === this ||
document.mozFullScreenElement === this ||
document.msFullscreenElement === this;
}
isResponsive() {
return this.getAttribute('responsive') === 'true' || this.classList.contains('responsive-viewer');
}
// UI state management
showLoading() { this.loadingEl.style.display = 'block'; }
hideLoading() { this.loadingEl.style.display = 'none'; }
showError(message) {
this.errorMessageEl.textContent = message;
this.errorEl.style.display = 'block';
}
hideError() { this.errorEl.style.display = 'none'; }
showLoadButton() { if (this.loadBtnEl) this.loadBtnEl.style.display = 'block'; }
hideLoadButton() { if (this.loadBtnEl) this.loadBtnEl.style.display = 'none'; }
// Public API
async load(src = null) {
const sourceUrl = src || this.getAttribute('src');
if (!sourceUrl) {
throw new Error('No source URL provided and no src attribute set');
}
if (src && src !== this.getAttribute('src')) {
this.setAttribute('src', src);
}
await this.loadModel(sourceUrl);
}
clear() {
this.disposeModel();
this.hideError();
this.hideLoading();
const src = this.getAttribute('src');
const autoload = this.getAttribute('autoload');
const shouldAutoload = autoload === null || autoload === '' || autoload === 'true';
if (src && !shouldAutoload) {
this.showLoadButton();
}
this.needsRender = true;
}
async handleLoadButtonClick() {
const src = this.getAttribute('src');
if (src) await this.load(src);
}
}
customElements.define('vrml-viewer', VRMLViewer);

324
present/template/style.css Normal file
View file

@ -0,0 +1,324 @@
/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */
html{
line-height:1.15;
-webkit-text-size-adjust:100%
}
body{
margin:0
}
h1{
font-size:2em;
margin:.67em 0
}
pre{
font-family:monospace,monospace;
font-size:1em
}
a{
background-color:transparent
}
b,strong{
font-weight:bolder
}
code{
font-family:monospace,monospace;
font-size:1em
}
small{
font-size:80%
}
img{
border-style:none
}
input{
font-family:inherit;
font-size:100%;
line-height:1.15;
margin:0
}
input{
overflow:visible
}
[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{
height:auto
}
[type=search]{
-webkit-appearance:textfield;
outline-offset:-2px
}
[type=search]::-webkit-search-decoration{
-webkit-appearance:none
}
[hidden]{
display:none
}
h1,h2,h3,h4,h5,h6,p,pre{
margin:0
}
ul{
margin:0;
padding:0
}
ul{
list-style:none
}
html{
font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;
line-height:1.5
}
*{
box-sizing:border-box;
border:0 solid #e2e8f0
}
img{
border-style:solid
}
input::-webkit-input-placeholder{
color:#a0aec0
}
input::-moz-placeholder{
color:#a0aec0
}
input:-ms-input-placeholder{
color:#a0aec0
}
input::-ms-input-placeholder{
color:#a0aec0
}
input::placeholder{
color:#a0aec0
}
table{
border-collapse:collapse
}
tbody td {
padding-top: 5px;
padding-bottom: 5px;
overflow-x: scroll;
}
tbody tr:nth-child(even) {
background-color: #edf2f7;
}
h1,h2,h3,h4,h5,h6{
font-size:inherit;
font-weight:inherit
}
a{
color:inherit;
text-decoration:inherit
}
input{
padding:0;
line-height:inherit;
color:inherit
}
code,pre{
font-family:Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace
overflow-x: scroll;
}
.container{
width:100%
}
@media (min-width:640px){
.container{
max-width:640px
}
}
@media (min-width:768px){
.container{
max-width:768px
}
}
@media (min-width:1024px){
.container{
max-width:1024px
}
}
@media (min-width:1280px){
.container{
max-width:1280px
}
}
.bg-gray-200{
background-color:#edf2f7
}
.rounded{
border-radius:.25rem
}
.block{
display:block
}
.inline{
display:inline
}
.flex{
display:flex
}
.table{
display:table
}
.hidden{
display:none
}
.flex-wrap{
flex-wrap:wrap
}
.flex-auto{
flex:1 1 auto
}
.clearfix:after{
content:"";
display:table;
clear:both
}
.my-2{
margin-top:.5rem;
margin-bottom:.5rem
}
.my-3{
margin-top:.75rem;
margin-bottom:.75rem
}
.mx-auto{
margin-left:auto;
margin-right:auto
}
.mb-1{
margin-bottom:.25rem
}
.mt-16{
margin-top:4rem
}
.overflow-auto{
overflow:auto
}
.overflow-hidden{
overflow:hidden
}
.p-2{
padding:.5rem
}
.py-1{
padding-top:.25rem;
padding-bottom:.25rem
}
.py-3{
padding-top:.75rem;
padding-bottom:.75rem
}
.px-3{
padding-left:.75rem;
padding-right:.75rem
}
.px-4{
padding-left:1rem;
padding-right:1rem
}
.fixed{
position:fixed
}
.absolute{
position:absolute
}
.relative{
position:relative
}
.top-0{
top:0
}
.right-0{
right:0
}
.bottom-0{
bottom:0
}
.left-0{
left:0
}
.text-center{
text-align:center
}
.text-right{
text-align:right
}
.text-sm{
font-size:.875rem
}
.w-full{
width:100%
}
body{
font-size:1rem;
font-weight:400;
color:#718096
}
h1{
font-size:1.875rem
}
h1,h2{
font-weight:700;
font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;
overflow-wrap:normal;
word-break:normal;
color:#1a202c;
padding-top:1.5rem;
padding-bottom:.5rem
}
h2{
font-size:1.5rem
}
h3{
font-weight:700;
font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;
overflow-wrap:normal;
word-break:normal;
color:#1a202c;
padding-top:1.5rem;
padding-bottom:.5rem;
font-size:1.25rem
}
p{
text-align:justify
}
a{
color:#63b3ed
}
a:hover{
color:#2b6cb0
}
ul{
list-style-type:disc;
list-style-position:inside;
margin-top:.25rem;
margin-bottom:.25rem
}
code{
padding:.25rem
}
code,pre code{
background-color:#edf2f7
}
pre code{
display:block;
margin-top:1rem;
margin-bottom:1rem;
padding:1rem .75rem;
width:100%
}
.boardPreview{
display:block;
max-width:100%;
max-height:400px;
width:auto;
height:auto;
margin-left:auto;
margin-right:auto
}
@media (min-width:768px){
.md\:w-1\/3{
width:33.333333%
}
}

12282
rf.kicad_sch

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff