diff --git a/public/ldraw/CREDITS.md b/public/ldraw/CREDITS.md new file mode 100644 index 0000000..a7a87c1 --- /dev/null +++ b/public/ldraw/CREDITS.md @@ -0,0 +1,46 @@ +# LDraw parts — credits & license + +The `.dat` files under `parts/` (and the primitives they reference) come from +the **LDraw Parts Library** (the official, community-maintained library of LEGO +part definitions). + +- **Source (upstream):** https://library.ldraw.org/ (`complete.zip` update package) +- **Provenance (pinned mirror):** the full library is mirrored, audited and frozen + in our Gitea at **`electron-rare/ldraw-library-mirror`** + (`https://git.saillant.cc/electron-rare/ldraw-library-mirror`). The subset below + is the dependency closure of curated parts extracted from that mirror. +- **License:** **CC BY 4.0** (Creative Commons Attribution 4.0 International). + Each `.dat` carries its own `0 !LICENSE Licensed under CC BY 4.0` header. +- **Attribution:** original part authors are credited in each file's + `0 Author:` / `0 !HISTORY` headers. The library founder is James Jessiman. + +Only a **curated, kid-friendly subset** is vendored here, not the full library: + +| Part | Description | Part | Description | +|--------|------------------------|--------|------------------------| +| 3001 | Brick 2×4 | 3024 | Plate 1×1 | +| 3003 | Brick 2×2 | 3068b | Tile 2×2 (groove) | +| 3004 | Brick 1×2 | 3069b | Tile 1×2 (groove) | +| 3005 | Brick 1×1 | 3040b | Slope 45° 2×1 | +| 3010 | Brick 1×4 | 3039 | Slope 45° 2×2 | +| 3020 | Plate 2×4 | 3062b | Round Brick 1×1 | +| 3022 | Plate 2×2 | 3941 | Round Brick 2×2 | +| 3023b | Plate 1×2 | | | + +`manifest.json` lists the full **dependency closure** (each part + every +sub-file / primitive it references, recursively) flattened under `parts/` so the +web `LDrawLoader` resolves every reference on its first probe (no 404 noise). +`fileMap` forces `s/` sub-parts to stay relative to `parts/`. + +## How to regenerate / extend the set + +The closure is built from a local copy of the LDraw library +(`library.ldraw.org/library/updates/complete.zip`) with a small Python script +that walks line-type-1 references recursively and copies the closure here, +emitting `manifest.json`. To add a part, add its `.dat` id to the seed list and +re-run the builder, then extend `LDRAW_PARTS` / `PART_ORDER` in +`js/games/ldraw-parts.js` and the `ld:*` entries in `js/games/blocs.logic.js`. + +> **LEGO®** is a trademark of the LEGO Group, which does not sponsor, authorize +> or endorse this project. LDraw part *definitions* are an independent, +> community work licensed CC BY 4.0. diff --git a/public/ldraw/manifest.json b/public/ldraw/manifest.json new file mode 100644 index 0000000..62c4f07 --- /dev/null +++ b/public/ldraw/manifest.json @@ -0,0 +1,99 @@ +{ + "fileMap": { + "s/3001s01.dat": "s/3001s01.dat", + "s/3003s01.dat": "s/3003s01.dat", + "s/3003s02.dat": "s/3003s02.dat", + "s/3004s01.dat": "s/3004s01.dat", + "s/3005s01.dat": "s/3005s01.dat", + "s/3010s01.dat": "s/3010s01.dat", + "s/3023bs01.dat": "s/3023bs01.dat", + "s/3024s01.dat": "s/3024s01.dat", + "s/3039s01.dat": "s/3039s01.dat", + "s/3040s01.dat": "s/3040s01.dat", + "s/3062bs01.dat": "s/3062bs01.dat", + "s/3068bs01.dat": "s/3068bs01.dat", + "s/3069bs01.dat": "s/3069bs01.dat", + "s/3941s01.dat": "s/3941s01.dat" + }, + "parts": [ + "parts/1-16chrd.dat", + "parts/1-4chrd.dat", + "parts/1-4cyls.dat", + "parts/1-8chrd.dat", + "parts/1-8cyli.dat", + "parts/1-8edge.dat", + "parts/2-4chrd.dat", + "parts/2-4cyli.dat", + "parts/2-4edge.dat", + "parts/2-4ndis.dat", + "parts/3-4cyli.dat", + "parts/3-4disc.dat", + "parts/3-4edge.dat", + "parts/3001.dat", + "parts/3003.dat", + "parts/3004.dat", + "parts/3005.dat", + "parts/3010.dat", + "parts/3020.dat", + "parts/3022.dat", + "parts/3023b.dat", + "parts/3024.dat", + "parts/3039.dat", + "parts/3040b.dat", + "parts/3062b.dat", + "parts/3068b.dat", + "parts/3069b.dat", + "parts/3941.dat", + "parts/4-4cyli.dat", + "parts/4-4cylo.dat", + "parts/4-4disc.dat", + "parts/4-4edge.dat", + "parts/4-4ndis.dat", + "parts/4-4ring1.dat", + "parts/4-4ring2.dat", + "parts/4-4ring3.dat", + "parts/4-4ring4.dat", + "parts/axl5ho10.dat", + "parts/axl5hol8.dat", + "parts/axl5hol9.dat", + "parts/axlehol2.dat", + "parts/axlehol3.dat", + "parts/axlehole.dat", + "parts/box3u2p.dat", + "parts/box3u4a.dat", + "parts/box4-4a.dat", + "parts/box4.dat", + "parts/box4t.dat", + "parts/box5.dat", + "parts/empty.dat", + "parts/rect.dat", + "parts/rect1.dat", + "parts/s/3001s01.dat", + "parts/s/3003s01.dat", + "parts/s/3003s02.dat", + "parts/s/3004s01.dat", + "parts/s/3005s01.dat", + "parts/s/3010s01.dat", + "parts/s/3023bs01.dat", + "parts/s/3024s01.dat", + "parts/s/3039s01.dat", + "parts/s/3040s01.dat", + "parts/s/3062bs01.dat", + "parts/s/3068bs01.dat", + "parts/s/3069bs01.dat", + "parts/s/3941s01.dat", + "parts/stud.dat", + "parts/stud10.dat", + "parts/stud2a.dat", + "parts/stud3.dat", + "parts/stud3a.dat", + "parts/stud4.dat", + "parts/stud4a.dat", + "parts/stud4od.dat", + "parts/stug-1x2.dat", + "parts/stug-1x4.dat", + "parts/stug-2x2.dat", + "parts/stug10-2x2.dat", + "parts/stug3-1x3.dat" + ] +} \ No newline at end of file diff --git a/public/ldraw/parts/1-16chrd.dat b/public/ldraw/parts/1-16chrd.dat new file mode 100644 index 0000000..2e1d907 --- /dev/null +++ b/public/ldraw/parts/1-16chrd.dat @@ -0,0 +1,19 @@ +0 Chord 0.0625 +0 Name: 1-16chrd.dat +0 Author: Philippe Hurbain [Philo] +0 !LDRAW_ORG Primitive UPDATE 2015-01 +0 !LICENSE Licensed under CC BY 4.0 : see CAreadme.txt + +0 BFC CERTIFY CCW + +0 !HISTORY 2015-10-11 [PTadmin] Official Update 2015-01 + + +0 // This file is intentionally empty because at the current \P resolution, +0 // an 1-16chrd is actually empty. However, this file still is present +0 // to allow tools to do primitives substition and fill in a real chrd here, +0 // or, if desired, to substitute this with the hi-res 48\1-16chrd. + +0 // This file is based on an idea by Darats at http://forums.ldraw.org/read.php?19,14500,14500#msg-14500 + +1 16 0 0 0 1 0 0 0 1 0 0 0 1 empty.dat \ No newline at end of file diff --git a/public/ldraw/parts/1-4chrd.dat b/public/ldraw/parts/1-4chrd.dat new file mode 100644 index 0000000..57ba04c --- /dev/null +++ b/public/ldraw/parts/1-4chrd.dat @@ -0,0 +1,18 @@ +0 Chord 0.25 +0 Name: 1-4chrd.dat +0 Author: Max Martin Richter [MMR1988] +0 !LDRAW_ORG Primitive UPDATE 2023-05 +0 !LICENSE Licensed under CC BY 4.0 : see CAreadme.txt + +0 BFC CERTIFY CCW + +0 !HISTORY 2004-04-22 [PTadmin] Official Update 2004-02 +0 !HISTORY 2007-10-09 [PTadmin] Header formatted for Contributor Agreement +0 !HISTORY 2008-07-01 [PTadmin] Official Update 2008-01 +0 !HISTORY 2012-08-02 [MMR1988] Re-creation with PrimGen2 and Rectifier +0 !HISTORY 2012-08-09 [PTadmin] Official Update 2012-02 +0 !HISTORY 2023-10-27 [OrionP] Change author to MMR1988 from hafhead +0 !HISTORY 2023-10-31 [OrionP] Official Update 2023-05 + +4 16 0.9239 0 0.3827 0.3827 0 0.9239 0 0 1 1 0 0 +3 16 0.7071 0 0.7071 0.3827 0 0.9239 0.9239 0 0.3827 \ No newline at end of file diff --git a/public/ldraw/parts/1-4cyls.dat b/public/ldraw/parts/1-4cyls.dat new file mode 100644 index 0000000..afa9712 --- /dev/null +++ b/public/ldraw/parts/1-4cyls.dat @@ -0,0 +1,26 @@ +0 Cylinder Sloped 0.25 +0 Name: 1-4cyls.dat +0 Author: James Jessiman +0 !LDRAW_ORG Primitive UPDATE 2012-01 +0 !LICENSE Licensed under CC BY 4.0 : see CAreadme.txt + +0 BFC CERTIFY CCW + +0 !HISTORY 1998-12-15 [PTadmin] Official Update 1998-10 +0 !HISTORY 2002-07-03 [sbliss] Added BFC statement +0 !HISTORY 2002-08-18 [PTadmin] Official Update 2002-04 +0 !HISTORY 2007-06-22 [PTadmin] Header formatted for Contributor Agreement +0 !HISTORY 2008-07-01 [PTadmin] Official Update 2008-01 +0 !HISTORY 2012-02-16 [Philo] Changed to CCW +0 !HISTORY 2012-03-30 [PTadmin] Official Update 2012-01 + + +3 16 0.9239 0.0761 0.3827 0.9239 0 0.3827 1 0 0 +4 16 0.9239 0.0761 0.3827 0.7071 0.2929 0.7071 0.7071 0 0.7071 0.9239 0 0.3827 +4 16 0.7071 0.2929 0.7071 0.3827 0.6173 0.9239 0.3827 0 0.9239 0.7071 0 0.7071 +4 16 0.3827 0.6173 0.9239 0 1 1 0 0 1 0.3827 0 0.9239 + +5 24 0.9239 0 0.3827 0.9239 0.0761 0.3827 0.7071 0 0.7071 1 0 0 +5 24 0.7071 0 0.7071 0.7071 0.2929 0.7071 0.3827 0 0.9239 0.9239 0 0.3827 +5 24 0.3827 0 0.9239 0.3827 0.6173 0.9239 0 0 1 0.7071 0 0.7071 +5 24 0 0 1 0 1 1 0.3827 0 0.9239 -1 0 1 diff --git a/public/ldraw/parts/1-8chrd.dat b/public/ldraw/parts/1-8chrd.dat new file mode 100644 index 0000000..d42c652 --- /dev/null +++ b/public/ldraw/parts/1-8chrd.dat @@ -0,0 +1,15 @@ +0 Chord 0.125 +0 Name: 1-8chrd.dat +0 Author: Orion Pobursky [OrionP] +0 !LDRAW_ORG Primitive UPDATE 2023-05 +0 !LICENSE Licensed under CC BY 4.0 : see CAreadme.txt + +0 BFC CERTIFY CCW + +0 !HISTORY 2004-04-22 [PTadmin] Official Update 2004-02 +0 !HISTORY 2007-06-22 [PTadmin] Header formatted for Contributor Agreement +0 !HISTORY 2008-07-01 [PTadmin] Official Update 2008-01 +0 !HISTORY 2023-10-27 [OrionP] Rebuilt with PrimGen2, original author westrate +0 !HISTORY 2023-10-31 [OrionP] Official Update 2023-05 + +3 16 1 0 0 0.9239 0 0.3827 0.7071 0 0.7071 diff --git a/public/ldraw/parts/1-8cyli.dat b/public/ldraw/parts/1-8cyli.dat new file mode 100644 index 0000000..eb18506 --- /dev/null +++ b/public/ldraw/parts/1-8cyli.dat @@ -0,0 +1,21 @@ +0 Cylinder 0.125 +0 Name: 1-8cyli.dat +0 Author: James Jessiman +0 !LDRAW_ORG Primitive UPDATE 2005-01 +0 !LICENSE Licensed under CC BY 4.0 : see CAreadme.txt + +0 BFC CERTIFY CCW + +0 !HISTORY 2002-04-25 [PTadmin] Official Update 2002-02 +0 !HISTORY 2004-12-11 [nielsk] Recreated using Primitive Generator, Edge lines fixed, BFC changed to CCW +0 !HISTORY 2005-12-28 [PTadmin] Official Update 2005-01 +0 !HISTORY 2007-06-22 [PTadmin] Header formatted for Contributor Agreement +0 !HISTORY 2008-07-01 [PTadmin] Official Update 2008-01 + + +4 16 .9239 1 .3827 .9239 0 .3827 1 0 0 1 1 0 +4 16 .7071 1 .7071 .7071 0 .7071 .9239 0 .3827 .9239 1 .3827 +5 24 1 1 0 1 0 0 1 1 -.4142 .9239 1 .3827 +5 24 .9239 1 .3827 .9239 0 .3827 1 1 0 .7071 1 .7071 +5 24 .7071 1 .7071 .7071 0 .7071 .9239 1 .3827 .4142 1 1 +0 diff --git a/public/ldraw/parts/1-8edge.dat b/public/ldraw/parts/1-8edge.dat new file mode 100644 index 0000000..f639338 --- /dev/null +++ b/public/ldraw/parts/1-8edge.dat @@ -0,0 +1,16 @@ +0 Circle 0.125 +0 Name: 1-8edge.dat +0 Author: James Jessiman +0 !LDRAW_ORG Primitive UPDATE 2017-01 +0 !LICENSE Licensed under CC BY 4.0 : see CAreadme.txt + +0 BFC CERTIFY CCW + +0 !HISTORY 2007-06-22 [PTadmin] Header formatted for Contributor Agreement +0 !HISTORY 2008-07-01 [PTadmin] Official Update 2008-01 +0 !HISTORY 2017-01-15 [Steffen] BFCed +0 !HISTORY 2017-12-30 [PTadmin] Official Update 2017-01 + + +2 24 1 0 0 0.9239 0 0.3827 +2 24 0.9239 0 0.3827 0.7071 0 0.7071 diff --git a/public/ldraw/parts/2-4chrd.dat b/public/ldraw/parts/2-4chrd.dat new file mode 100644 index 0000000..e9dde43 --- /dev/null +++ b/public/ldraw/parts/2-4chrd.dat @@ -0,0 +1,15 @@ +0 Chord 0.5 +0 Name: 2-4chrd.dat +0 Author: Philippe Hurbain [Philo] +0 !LDRAW_ORG Primitive UPDATE 2014-01 +0 !LICENSE Licensed under CC BY 4.0 : see CAreadme.txt + +0 BFC CERTIFY CCW + +0 !HISTORY 2014-06-21 [PTadmin] Official Update 2014-01 + + +4 16 0.9239 0 0.3827 -0.9239 0 0.3827 -1 0 0 1 0 0 +4 16 0.7071 0 0.7071 -0.7071 0 0.7071 -0.9239 0 0.3827 0.9239 0 0.3827 +4 16 0.3827 0 0.9239 -0.3827 0 0.9239 -0.7071 0 0.7071 0.7071 0 0.7071 +3 16 0 0 1 -0.3827 0 0.9239 0.3827 0 0.9239 diff --git a/public/ldraw/parts/2-4cyli.dat b/public/ldraw/parts/2-4cyli.dat new file mode 100644 index 0000000..f0afdd3 --- /dev/null +++ b/public/ldraw/parts/2-4cyli.dat @@ -0,0 +1,34 @@ +0 Cylinder 0.5 +0 Name: 2-4cyli.dat +0 Author: James Jessiman +0 !LDRAW_ORG Primitive UPDATE 2005-01 +0 !LICENSE Licensed under CC BY 4.0 : see CAreadme.txt + +0 BFC CERTIFY CCW + +0 !HISTORY 2002-03-23 [sbliss] Added BFC statement; compacted code +0 !HISTORY 2002-04-25 [PTadmin] Official Update 2002-02 +0 !HISTORY 2004-12-11 [nielsk] Recreated using Primitive Generator, Edge lines fixed, BFC changed to CCW +0 !HISTORY 2005-12-28 [PTadmin] Official Update 2005-01 +0 !HISTORY 2007-06-24 [PTadmin] Header formatted for Contributor Agreement +0 !HISTORY 2008-07-01 [PTadmin] Official Update 2008-01 + + +4 16 .9239 1 .3827 .9239 0 .3827 1 0 0 1 1 0 +4 16 .7071 1 .7071 .7071 0 .7071 .9239 0 .3827 .9239 1 .3827 +4 16 .3827 1 .9239 .3827 0 .9239 .7071 0 .7071 .7071 1 .7071 +4 16 0 1 1 0 0 1 .3827 0 .9239 .3827 1 .9239 +4 16 -.3827 1 .9239 -.3827 0 .9239 0 0 1 0 1 1 +4 16 -.7071 1 .7071 -.7071 0 .7071 -.3827 0 .9239 -.3827 1 .9239 +4 16 -.9239 1 .3827 -.9239 0 .3827 -.7071 0 .7071 -.7071 1 .7071 +4 16 -1 1 0 -1 0 0 -.9239 0 .3827 -.9239 1 .3827 +5 24 1 1 0 1 0 0 1 1 -.4142 .9239 1 .3827 +5 24 .9239 1 .3827 .9239 0 .3827 1 1 0 .7071 1 .7071 +5 24 .7071 1 .7071 .7071 0 .7071 .9239 1 .3827 .3827 1 .9239 +5 24 .3827 1 .9239 .3827 0 .9239 .7071 1 .7071 0 1 1 +5 24 0 1 1 0 0 1 .3827 1 .9239 -.3827 1 .9239 +5 24 -.3827 1 .9239 -.3827 0 .9239 0 1 1 -.7071 1 .7071 +5 24 -.7071 1 .7071 -.7071 0 .7071 -.3827 1 .9239 -.9239 1 .3827 +5 24 -.9239 1 .3827 -.9239 0 .3827 -.7071 1 .7071 -1 1 0 +5 24 -1 1 0 -1 0 0 -.9239 1 .3827 -1 1 -.4142 +0 diff --git a/public/ldraw/parts/2-4edge.dat b/public/ldraw/parts/2-4edge.dat new file mode 100644 index 0000000..043fc20 --- /dev/null +++ b/public/ldraw/parts/2-4edge.dat @@ -0,0 +1,22 @@ +0 Circle 0.5 +0 Name: 2-4edge.dat +0 Author: James Jessiman +0 !LDRAW_ORG Primitive UPDATE 2017-01 +0 !LICENSE Licensed under CC BY 4.0 : see CAreadme.txt + +0 BFC CERTIFY CCW + +0 !HISTORY 2007-06-24 [PTadmin] Header formatted for Contributor Agreement +0 !HISTORY 2008-07-01 [PTadmin] Official Update 2008-01 +0 !HISTORY 2017-01-15 [Steffen] BFCed +0 !HISTORY 2017-12-30 [PTadmin] Official Update 2017-01 + + +2 24 1 0 0 0.9239 0 0.3827 +2 24 0.9239 0 0.3827 0.7071 0 0.7071 +2 24 0.7071 0 0.7071 0.3827 0 0.9239 +2 24 0.3827 0 0.9239 0 0 1 +2 24 0 0 1 -0.3827 0 0.9239 +2 24 -0.3827 0 0.9239 -0.7071 0 0.7071 +2 24 -0.7071 0 0.7071 -0.9239 0 0.3827 +2 24 -0.9239 0 0.3827 -1 0 0 diff --git a/public/ldraw/parts/2-4ndis.dat b/public/ldraw/parts/2-4ndis.dat new file mode 100644 index 0000000..939d6bd --- /dev/null +++ b/public/ldraw/parts/2-4ndis.dat @@ -0,0 +1,24 @@ +0 Disc Negative 0.5 +0 Name: 2-4ndis.dat +0 Author: James Jessiman +0 !LDRAW_ORG Primitive UPDATE 2012-01 +0 !LICENSE Licensed under CC BY 4.0 : see CAreadme.txt + +0 BFC CERTIFY CCW + +0 !HISTORY 2002-03-23 [sbliss] Added BFC statement; compacted code +0 !HISTORY 2002-04-25 [PTadmin] Official Update 2002-02 +0 !HISTORY 2007-06-24 [PTadmin] Header formatted for Contributor Agreement +0 !HISTORY 2008-07-01 [PTadmin] Official Update 2008-01 +0 !HISTORY 2012-02-16 [Philo] Changed to CCW +0 !HISTORY 2012-03-30 [PTadmin] Official Update 2012-01 + + +3 16 0.9239 0 0.3827 1 0 0 1 0 1 +3 16 0.7071 0 0.7071 0.9239 0 0.3827 1 0 1 +3 16 0.3827 0 0.9239 0.7071 0 0.7071 1 0 1 +3 16 0 0 1 0.3827 0 0.9239 1 0 1 +3 16 -0.3827 0 0.9239 0 0 1 -1 0 1 +3 16 -0.7071 0 0.7071 -0.3827 0 0.9239 -1 0 1 +3 16 -0.9239 0 0.3827 -0.7071 0 0.7071 -1 0 1 +3 16 -1 0 0 -0.9239 0 0.3827 -1 0 1 diff --git a/public/ldraw/parts/3-4cyli.dat b/public/ldraw/parts/3-4cyli.dat new file mode 100644 index 0000000..a6813b6 --- /dev/null +++ b/public/ldraw/parts/3-4cyli.dat @@ -0,0 +1,42 @@ +0 Cylinder 0.75 +0 Name: 3-4cyli.dat +0 Author: James Jessiman +0 !LDRAW_ORG Primitive UPDATE 2005-01 +0 !LICENSE Licensed under CC BY 4.0 : see CAreadme.txt + +0 BFC CERTIFY CCW + +0 !HISTORY 2002-03-23 [sbliss] Added BFC statement; compacted code +0 !HISTORY 2002-04-25 [PTadmin] Official Update 2002-02 +0 !HISTORY 2004-12-11 [nielsk] Recreated using Primitive Generator, Edge lines fixed, BFC changed to CCW +0 !HISTORY 2005-12-28 [PTadmin] Official Update 2005-01 +0 !HISTORY 2007-06-24 [PTadmin] Header formatted for Contributor Agreement +0 !HISTORY 2008-07-01 [PTadmin] Official Update 2008-01 + + +4 16 .9239 1 .3827 .9239 0 .3827 1 0 0 1 1 0 +4 16 .7071 1 .7071 .7071 0 .7071 .9239 0 .3827 .9239 1 .3827 +4 16 .3827 1 .9239 .3827 0 .9239 .7071 0 .7071 .7071 1 .7071 +4 16 0 1 1 0 0 1 .3827 0 .9239 .3827 1 .9239 +4 16 -.3827 1 .9239 -.3827 0 .9239 0 0 1 0 1 1 +4 16 -.7071 1 .7071 -.7071 0 .7071 -.3827 0 .9239 -.3827 1 .9239 +4 16 -.9239 1 .3827 -.9239 0 .3827 -.7071 0 .7071 -.7071 1 .7071 +4 16 -1 1 0 -1 0 0 -.9239 0 .3827 -.9239 1 .3827 +4 16 -.9239 1 -.3827 -.9239 0 -.3827 -1 0 0 -1 1 0 +4 16 -.7071 1 -.7071 -.7071 0 -.7071 -.9239 0 -.3827 -.9239 1 -.3827 +4 16 -.3827 1 -.9239 -.3827 0 -.9239 -.7071 0 -.7071 -.7071 1 -.7071 +4 16 0 1 -1 0 0 -1 -.3827 0 -.9239 -.3827 1 -.9239 +5 24 1 1 0 1 0 0 1 1 -.4142 .9239 1 .3827 +5 24 .9239 1 .3827 .9239 0 .3827 1 1 0 .7071 1 .7071 +5 24 .7071 1 .7071 .7071 0 .7071 .9239 1 .3827 .3827 1 .9239 +5 24 .3827 1 .9239 .3827 0 .9239 .7071 1 .7071 0 1 1 +5 24 0 1 1 0 0 1 .3827 1 .9239 -.3827 1 .9239 +5 24 -.3827 1 .9239 -.3827 0 .9239 0 1 1 -.7071 1 .7071 +5 24 -.7071 1 .7071 -.7071 0 .7071 -.3827 1 .9239 -.9239 1 .3827 +5 24 -.9239 1 .3827 -.9239 0 .3827 -.7071 1 .7071 -1 1 0 +5 24 -1 1 0 -1 0 0 -.9239 1 .3827 -.9239 1 -.3827 +5 24 -.9239 1 -.3827 -.9239 0 -.3827 -1 1 0 -.7071 1 -.7071 +5 24 -.7071 1 -.7071 -.7071 0 -.7071 -.9239 1 -.3827 -.3827 1 -.9239 +5 24 -.3827 1 -.9239 -.3827 0 -.9239 -.7071 1 -.7071 0 1 -1 +5 24 0 1 -1 0 0 -1 -.3827 1 -.9239 .4142 1 -1 +0 diff --git a/public/ldraw/parts/3-4disc.dat b/public/ldraw/parts/3-4disc.dat new file mode 100644 index 0000000..3b1bd74 --- /dev/null +++ b/public/ldraw/parts/3-4disc.dat @@ -0,0 +1,27 @@ +0 Disc 0.75 +0 Name: 3-4disc.dat +0 Author: James Jessiman +0 !LDRAW_ORG Primitive UPDATE 2002-02 +0 !LICENSE Licensed under CC BY 4.0 : see CAreadme.txt + +0 BFC CERTIFY CCW + +0 !HISTORY 2002-03-23 [sbliss] Added BFC statement +0 !HISTORY 2002-04-25 [PTadmin] Official Update 2002-02 +0 !HISTORY 2007-06-24 [PTadmin] Header formatted for Contributor Agreement +0 !HISTORY 2008-07-01 [PTadmin] Official Update 2008-01 + + +3 16 0 0 0 1 0 0 0.9239 0 0.3827 +3 16 0 0 0 0.9239 0 0.3827 0.7071 0 0.7071 +3 16 0 0 0 0.7071 0 0.7071 0.3827 0 0.9239 +3 16 0 0 0 0.3827 0 0.9239 0 0 1 +3 16 0 0 0 0 0 1 -0.3827 0 0.9239 +3 16 0 0 0 -0.3827 0 0.9239 -0.7071 0 0.7071 +3 16 0 0 0 -0.7071 0 0.7071 -0.9239 0 0.3827 +3 16 0 0 0 -0.9239 0 0.3827 -1 0 0 +3 16 0 0 0 -1 0 0 -0.9239 0 -0.3827 +3 16 0 0 0 -0.9239 0 -0.3827 -0.7071 0 -0.7071 +3 16 0 0 0 -0.7071 0 -0.7071 -0.3827 0 -0.9239 +3 16 0 0 0 -0.3827 0 -0.9239 0 0 -1 +0 diff --git a/public/ldraw/parts/3-4edge.dat b/public/ldraw/parts/3-4edge.dat new file mode 100644 index 0000000..1e788be --- /dev/null +++ b/public/ldraw/parts/3-4edge.dat @@ -0,0 +1,26 @@ +0 Circle 0.75 +0 Name: 3-4edge.dat +0 Author: James Jessiman +0 !LDRAW_ORG Primitive UPDATE 2017-01 +0 !LICENSE Licensed under CC BY 4.0 : see CAreadme.txt + +0 BFC CERTIFY CCW + +0 !HISTORY 2007-06-24 [PTadmin] Header formatted for Contributor Agreement +0 !HISTORY 2008-07-01 [PTadmin] Official Update 2008-01 +0 !HISTORY 2017-01-15 [Steffen] BFCed +0 !HISTORY 2017-12-30 [PTadmin] Official Update 2017-01 + + +2 24 1 0 0 0.9239 0 0.3827 +2 24 0.9239 0 0.3827 0.7071 0 0.7071 +2 24 0.7071 0 0.7071 0.3827 0 0.9239 +2 24 0.3827 0 0.9239 0 0 1 +2 24 0 0 1 -0.3827 0 0.9239 +2 24 -0.3827 0 0.9239 -0.7071 0 0.7071 +2 24 -0.7071 0 0.7071 -0.9239 0 0.3827 +2 24 -0.9239 0 0.3827 -1 0 0 +2 24 -1 0 -0 -0.9239 0 -0.3827 +2 24 -0.9239 0 -0.3827 -0.7071 0 -0.7071 +2 24 -0.7071 0 -0.7071 -0.3827 0 -0.9239 +2 24 -0.3827 0 -0.9239 0 0 -1 diff --git a/public/ldraw/parts/3001.dat b/public/ldraw/parts/3001.dat new file mode 100644 index 0000000..495dd25 --- /dev/null +++ b/public/ldraw/parts/3001.dat @@ -0,0 +1,20 @@ +0 Brick 2 x 4 +0 Name: 3001.dat +0 Author: James Jessiman +0 !LDRAW_ORG Part UPDATE 2004-03 +0 !LICENSE Licensed under CC BY 4.0 : see CAreadme.txt + +0 BFC CERTIFY CCW + +0 !HISTORY 2002-05-07 {unknown} BFC Certification +0 !HISTORY 2002-06-11 [PTadmin] Official Update 2002-03 +0 !HISTORY 2004-02-08 [Steffen] used s\3001s01.dat +0 !HISTORY 2004-09-15 [PTadmin] Official Update 2004-03 +0 !HISTORY 2007-05-07 [PTadmin] Header formatted for Contributor Agreement +0 !HISTORY 2008-07-01 [PTadmin] Official Update 2008-01 + + +1 16 0 0 0 1 0 0 0 1 0 0 0 1 s\3001s01.dat +4 16 -40 0 -20 -40 24 -20 40 24 -20 40 0 -20 +4 16 40 0 20 40 24 20 -40 24 20 -40 0 20 +0 diff --git a/public/ldraw/parts/3003.dat b/public/ldraw/parts/3003.dat new file mode 100644 index 0000000..9b3c277 --- /dev/null +++ b/public/ldraw/parts/3003.dat @@ -0,0 +1,19 @@ +0 Brick 2 x 2 +0 Name: 3003.dat +0 Author: James Jessiman +0 !LDRAW_ORG Part UPDATE 2022-05 +0 !LICENSE Licensed under CC BY 4.0 : see CAreadme.txt + +0 BFC CERTIFY CCW + +0 !HISTORY 2001-10-26 [PTadmin] Official Update 2001-01 +0 !HISTORY 2002-05-07 {unknown} BFC Certification +0 !HISTORY 2002-06-11 [PTadmin] Official Update 2002-03 +0 !HISTORY 2007-05-07 [PTadmin] Header formatted for Contributor Agreement +0 !HISTORY 2008-07-01 [PTadmin] Official Update 2008-01 +0 !HISTORY 2022-08-04 [MagFors] Using subfile +0 !HISTORY 2022-09-15 [PTadmin] Official Update 2022-05 + + +1 16 0 0 0 1 0 0 0 1 0 0 0 1 s\3003s01.dat +4 16 -20 24 -20 20 24 -20 20 0 -20 -20 0 -20 diff --git a/public/ldraw/parts/3004.dat b/public/ldraw/parts/3004.dat new file mode 100644 index 0000000..5973a32 --- /dev/null +++ b/public/ldraw/parts/3004.dat @@ -0,0 +1,19 @@ +0 Brick 1 x 2 +0 Name: 3004.dat +0 Author: James Jessiman +0 !LDRAW_ORG Part UPDATE 2022-05 +0 !LICENSE Licensed under CC BY 4.0 : see CAreadme.txt + +0 BFC CERTIFY CCW + +0 !HISTORY 2001-10-26 [PTadmin] Official Update 2001-01 +0 !HISTORY 2002-05-07 {unknown} BFC Certification +0 !HISTORY 2002-06-11 [PTadmin] Official Update 2002-03 +0 !HISTORY 2007-05-07 [PTadmin] Header formatted for Contributor Agreement +0 !HISTORY 2008-07-01 [PTadmin] Official Update 2008-01 +0 !HISTORY 2022-08-04 [MagFors] Using subfile +0 !HISTORY 2022-09-15 [PTadmin] Official Update 2022-05 + + +1 16 0 0 0 1 0 0 0 1 0 0 0 1 s\3004s01.dat +4 16 -20 24 -10 20 24 -10 20 0 -10 -20 0 -10 diff --git a/public/ldraw/parts/3005.dat b/public/ldraw/parts/3005.dat new file mode 100644 index 0000000..d542793 --- /dev/null +++ b/public/ldraw/parts/3005.dat @@ -0,0 +1,19 @@ +0 Brick 1 x 1 +0 Name: 3005.dat +0 Author: James Jessiman +0 !LDRAW_ORG Part UPDATE 2022-05 +0 !LICENSE Licensed under CC BY 4.0 : see CAreadme.txt + +0 BFC CERTIFY CCW + +0 !HISTORY 2001-10-26 [PTadmin] Official Update 2001-01 +0 !HISTORY 2002-05-07 {unknown} BFC Certification +0 !HISTORY 2002-06-11 [PTadmin] Official Update 2002-03 +0 !HISTORY 2007-05-07 [PTadmin] Header formatted for Contributor Agreement +0 !HISTORY 2008-07-01 [PTadmin] Official Update 2008-01 +0 !HISTORY 2022-08-04 [MagFors] Using subfile +0 !HISTORY 2022-09-15 [PTadmin] Official Update 2022-05 + + +1 16 0 0 0 1 0 0 0 1 0 0 0 1 s\3005s01.dat +4 16 -10 24 -10 10 24 -10 10 0 -10 -10 0 -10 diff --git a/public/ldraw/parts/3010.dat b/public/ldraw/parts/3010.dat new file mode 100644 index 0000000..d3c5e89 --- /dev/null +++ b/public/ldraw/parts/3010.dat @@ -0,0 +1,21 @@ +0 Brick 1 x 4 +0 Name: 3010.dat +0 Author: James Jessiman +0 !LDRAW_ORG Part UPDATE 2025-09 +0 !LICENSE Licensed under CC BY 4.0 : see CAreadme.txt + +0 BFC CERTIFY CCW + +0 !HISTORY 2001-10-26 [PTadmin] Official Update 2001-01 +0 !HISTORY 2002-05-07 {unknown} BFC Certification +0 !HISTORY 2002-06-11 [PTadmin] Official Update 2002-03 +0 !HISTORY 2002-12-12 [hafhead] New subparted version +0 !HISTORY 2003-08-01 [PTadmin] Official Update 2003-02 +0 !HISTORY 2007-06-06 [PTadmin] Header formatted for Contributor Agreement +0 !HISTORY 2008-07-01 [PTadmin] Official Update 2008-01 +0 !HISTORY 2025-09-27 [OrionP] Changed winding to CCW +0 !HISTORY 2025-09-29 [OrionP] Official Update 2025-09 + +1 16 0 0 0 1 0 0 0 1 0 0 0 1 s\3010s01.dat +4 16 -40 24 -10 40 24 -10 40 0 -10 -40 0 -10 +0 \ No newline at end of file diff --git a/public/ldraw/parts/3020.dat b/public/ldraw/parts/3020.dat new file mode 100644 index 0000000..26cb5fd --- /dev/null +++ b/public/ldraw/parts/3020.dat @@ -0,0 +1,40 @@ +0 Plate 2 x 4 +0 Name: 3020.dat +0 Author: James Jessiman +0 !LDRAW_ORG Part UPDATE 2002-03 +0 !LICENSE Licensed under CC BY 4.0 : see CAreadme.txt + +0 BFC CERTIFY CCW + +0 !HISTORY 2001-10-26 [PTadmin] Official Update 2001-01 +0 !HISTORY 2002-05-07 {unknown} BFC Certification +0 !HISTORY 2002-06-11 [PTadmin] Official Update 2002-03 +0 !HISTORY 2007-06-07 [PTadmin] Header formatted for Contributor Agreement +0 !HISTORY 2008-07-01 [PTadmin] Official Update 2008-01 + + +1 16 20 4 0 1 0 0 0 -1 0 0 0 1 stud4.dat +1 16 0 4 0 1 0 0 0 -1 0 0 0 1 stud4.dat +1 16 -20 4 0 1 0 0 0 -1 0 0 0 1 stud4.dat + +0 BFC INVERTNEXT +1 16 0 8 0 36 0 0 0 -4 0 0 0 16 box5.dat + +4 16 40 8 20 36 8 16 -36 8 16 -40 8 20 +0 // Next Line was 4 16 40 8 -20 36 8 -16 -36 8 -16 -40 8 -20 +4 16 -40 8 -20 -36 8 -16 36 8 -16 40 8 -20 +0 // Next Line was 4 16 40 8 20 36 8 16 36 8 -16 40 8 -20 +4 16 40 8 -20 36 8 -16 36 8 16 40 8 20 +4 16 -40 8 20 -36 8 16 -36 8 -16 -40 8 -20 + +1 16 0 8 0 40 0 0 0 -8 0 0 0 20 box5.dat + +1 16 30 0 10 1 0 0 0 1 0 0 0 1 stud.dat +1 16 10 0 10 1 0 0 0 1 0 0 0 1 stud.dat +1 16 -10 0 10 1 0 0 0 1 0 0 0 1 stud.dat +1 16 -30 0 10 1 0 0 0 1 0 0 0 1 stud.dat +1 16 30 0 -10 1 0 0 0 1 0 0 0 1 stud.dat +1 16 10 0 -10 1 0 0 0 1 0 0 0 1 stud.dat +1 16 -10 0 -10 1 0 0 0 1 0 0 0 1 stud.dat +1 16 -30 0 -10 1 0 0 0 1 0 0 0 1 stud.dat +0 diff --git a/public/ldraw/parts/3022.dat b/public/ldraw/parts/3022.dat new file mode 100644 index 0000000..2f0185e --- /dev/null +++ b/public/ldraw/parts/3022.dat @@ -0,0 +1,34 @@ +0 Plate 2 x 2 +0 Name: 3022.dat +0 Author: James Jessiman +0 !LDRAW_ORG Part UPDATE 2002-03 +0 !LICENSE Licensed under CC BY 4.0 : see CAreadme.txt + +0 BFC CERTIFY CCW + +0 !HISTORY 2001-10-26 [PTadmin] Official Update 2001-01 +0 !HISTORY 2002-05-07 {unknown} BFC Certification +0 !HISTORY 2002-06-11 [PTadmin] Official Update 2002-03 +0 !HISTORY 2007-06-07 [PTadmin] Header formatted for Contributor Agreement +0 !HISTORY 2008-07-01 [PTadmin] Official Update 2008-01 + + +1 16 0 4 0 1 0 0 0 -1 0 0 0 1 stud4.dat + +0 BFC INVERTNEXT +1 16 0 8 0 16 0 0 0 -4 0 0 0 16 box5.dat + +4 16 20 8 20 16 8 16 -16 8 16 -20 8 20 +0 // Next Line was 4 16 20 8 -20 16 8 -16 -16 8 -16 -20 8 -20 +4 16 -20 8 -20 -16 8 -16 16 8 -16 20 8 -20 +0 // Next Line was 4 16 20 8 20 16 8 16 16 8 -16 20 8 -20 +4 16 20 8 -20 16 8 -16 16 8 16 20 8 20 +4 16 -20 8 20 -16 8 16 -16 8 -16 -20 8 -20 + +1 16 0 8 0 20 0 0 0 -8 0 0 0 20 box5.dat + +1 16 10 0 10 1 0 0 0 1 0 0 0 1 stud.dat +1 16 -10 0 10 1 0 0 0 1 0 0 0 1 stud.dat +1 16 10 0 -10 1 0 0 0 1 0 0 0 1 stud.dat +1 16 -10 0 -10 1 0 0 0 1 0 0 0 1 stud.dat +0 diff --git a/public/ldraw/parts/3023b.dat b/public/ldraw/parts/3023b.dat new file mode 100644 index 0000000..d34a0b5 --- /dev/null +++ b/public/ldraw/parts/3023b.dat @@ -0,0 +1,23 @@ +0 Plate 1 x 2 +0 Name: 3023b.dat +0 Author: James Jessiman +0 !LDRAW_ORG Part UPDATE 2023-03 +0 !LICENSE Licensed under CC BY 4.0 : see CAreadme.txt + +0 BFC CERTIFY CCW + +0 !KEYWORDS BrickLink 3023, Rebrickable 3023 + +0 !HISTORY 2001-10-26 [PTadmin] Official Update 2001-01 +0 !HISTORY 2002-05-07 {unknown} BFC Certification +0 !HISTORY 2002-06-11 [PTadmin] Official Update 2002-03 +0 !HISTORY 2007-06-07 [PTadmin] Header formatted for Contributor Agreement +0 !HISTORY 2008-07-01 [PTadmin] Official Update 2008-01 +0 !HISTORY 2020-03-07 [Sirio] Subparted +0 !HISTORY 2022-01-14 [PTadmin] Official Update 2022-01 +0 !HISTORY 2023-05-26 [OrionP] Moved from 3023.dat +0 !HISTORY 2023-06-24 [OrionP] Official Update 2023-03 + + +1 16 0 0 0 1 0 0 0 1 0 0 0 1 s\3023bs01.dat +4 16 -20 0 -10 -20 8 -10 20 8 -10 20 0 -10 diff --git a/public/ldraw/parts/3024.dat b/public/ldraw/parts/3024.dat new file mode 100644 index 0000000..3473a5a --- /dev/null +++ b/public/ldraw/parts/3024.dat @@ -0,0 +1,19 @@ +0 Plate 1 x 1 +0 Name: 3024.dat +0 Author: James Jessiman +0 !LDRAW_ORG Part UPDATE 2022-05 +0 !LICENSE Licensed under CC BY 4.0 : see CAreadme.txt + +0 BFC CERTIFY CCW + +0 !HISTORY 2001-10-26 [PTadmin] Official Update 2001-01 +0 !HISTORY 2002-05-07 {unknown} BFC Certification +0 !HISTORY 2002-06-11 [PTadmin] Official Update 2002-03 +0 !HISTORY 2007-06-07 [PTadmin] Header formatted for Contributor Agreement +0 !HISTORY 2008-07-01 [PTadmin] Official Update 2008-01 +0 !HISTORY 2022-08-04 [MagFors] Using subfile +0 !HISTORY 2022-09-15 [PTadmin] Official Update 2022-05 + + +1 16 0 0 0 1 0 0 0 1 0 0 0 1 s\3024s01.dat +4 16 -10 8 -10 10 8 -10 10 0 -10 -10 0 -10 diff --git a/public/ldraw/parts/3039.dat b/public/ldraw/parts/3039.dat new file mode 100644 index 0000000..4c9969d --- /dev/null +++ b/public/ldraw/parts/3039.dat @@ -0,0 +1,17 @@ +0 Slope Brick 45 2 x 2 +0 Name: 3039.dat +0 Author: James Jessiman +0 !LDRAW_ORG Part UPDATE 2003-03 +0 !LICENSE Licensed under CC BY 4.0 : see CAreadme.txt + +0 BFC CERTIFY CCW + +0 !HISTORY 2003-07-02 [Steffen] BFCed; re-worked part to use s\3039s01.dat +0 !HISTORY 2003-12-19 [PTadmin] Official Update 2003-03 +0 !HISTORY 2007-06-09 [PTadmin] Header formatted for Contributor Agreement +0 !HISTORY 2008-07-01 [PTadmin] Official Update 2008-01 + + +1 16 0 0 0 1 0 0 0 1 0 0 0 1 s\3039s01.dat +4 16 20 20 -30 20 0 -10 -20 0 -10 -20 20 -30 +0 diff --git a/public/ldraw/parts/3040b.dat b/public/ldraw/parts/3040b.dat new file mode 100644 index 0000000..40ba801 --- /dev/null +++ b/public/ldraw/parts/3040b.dat @@ -0,0 +1,20 @@ +0 Slope Brick 45 2 x 1 +0 Name: 3040b.dat +0 Author: James Jessiman +0 !LDRAW_ORG Part UPDATE 2004-04 +0 !LICENSE Licensed under CC BY 4.0 : see CAreadme.txt + +0 BFC CERTIFY CCW + +0 !KEYWORDS BrickLink 3040 + +0 !HISTORY 2002-09-13 [izanette] modified with WINDZ for BFC compliance +0 !HISTORY 2003-07-11 [Steffen] made use of existing subfile +0 !HISTORY 2004-11-06 [PTadmin] Official Update 2004-04 +0 !HISTORY 2007-06-09 [PTadmin] Header formatted for Contributor Agreement +0 !HISTORY 2008-07-01 [PTadmin] Official Update 2008-01 + + +1 16 0 0 0 1 0 0 0 1 0 0 0 1 s\3040s01.dat +4 16 10 20 -30 10 0 -10 -10 0 -10 -10 20 -30 +0 diff --git a/public/ldraw/parts/3062b.dat b/public/ldraw/parts/3062b.dat new file mode 100644 index 0000000..30c46a7 --- /dev/null +++ b/public/ldraw/parts/3062b.dat @@ -0,0 +1,24 @@ +0 Brick 1 x 1 Round with Hollow Stud +0 Name: 3062b.dat +0 Author: James Jessiman +0 !LDRAW_ORG Part UPDATE 2022-02 +0 !LICENSE Licensed under CC BY 4.0 : see CAreadme.txt + +0 BFC CERTIFY CCW + +0 !KEYWORDS BrickLink 3062 + +0 !HISTORY 1998-06-20 [PTadmin] Official Update 1998-06 +0 !HISTORY 2003-08-02 [OrionP] Made some primitive subs +0 !HISTORY 2003-08-04 [Steffen] replaced peghole.dat by stud4a.dat +0 !HISTORY 2003-12-19 [PTadmin] Official Update 2003-03 +0 !HISTORY 2007-06-10 [PTadmin] Header formatted for Contributor Agreement +0 !HISTORY 2008-07-01 [PTadmin] Official Update 2008-01 +0 !HISTORY 2009-03-19 [tchang] Add missing +0 !HISTORY 2009-09-03 [PTadmin] Official Update 2009-02 +0 !HISTORY 2020-12-12 [RainbowDolphin] Subparted for patterns +0 !HISTORY 2022-03-06 [PTadmin] Official Update 2022-02 + + +1 16 0 0 0 1 0 0 0 1 0 0 0 1 s\3062bs01.dat +1 16 0 0 0 10 0 0 0 19 0 0 0 10 4-4cyli.dat diff --git a/public/ldraw/parts/3068b.dat b/public/ldraw/parts/3068b.dat new file mode 100644 index 0000000..884db11 --- /dev/null +++ b/public/ldraw/parts/3068b.dat @@ -0,0 +1,21 @@ +0 Tile 2 x 2 with Groove +0 Name: 3068b.dat +0 Author: Takeshi Takahashi [RainbowDolphin] +0 !LDRAW_ORG Part UPDATE 2024-06 +0 !LICENSE Licensed under CC BY 4.0 : see CAreadme.txt + +0 BFC CERTIFY CCW + +0 !KEYWORDS BrickLink 3068 + +0 !HISTORY 2002-04-25 [PTadmin] Official Update 2002-02 +0 !HISTORY 2004-07-26 [guyvivan] Made BFC Compliant +0 !HISTORY 2004-11-06 [PTadmin] Official Update 2004-04 +0 !HISTORY 2007-06-13 [PTadmin] Header formatted for Contributor Agreement +0 !HISTORY 2008-07-01 [PTadmin] Official Update 2008-01 +0 !HISTORY 2024-05-29 [RainbowDolphin] Total rewrite, original by Damien Guichard [BrickCaster] +0 !HISTORY 2024-07-29 [OrionP] Official Update 2024-06 + +1 16 0 0 0 1 0 0 0 1 0 0 0 1 s\3068bs01.dat +0 // Patternable surface +4 16 -20 0 -20 20 0 -20 20 0 20 -20 0 20 diff --git a/public/ldraw/parts/3069b.dat b/public/ldraw/parts/3069b.dat new file mode 100644 index 0000000..000e496 --- /dev/null +++ b/public/ldraw/parts/3069b.dat @@ -0,0 +1,16 @@ +0 Tile 1 x 2 with Groove +0 Name: 3069b.dat +0 Author: Santeri Piippo [arezey] +0 !LDRAW_ORG Part UPDATE 2010-02 +0 !LICENSE Licensed under CC BY 4.0 : see CAreadme.txt + +0 BFC CERTIFY CCW + +0 !KEYWORDS BrickLink 3069 + +0 !HISTORY 2010-07-05 [PTadmin] Official Update 2010-02 + + +4 16 20 0 -10 20 0 10 -20 0 10 -20 0 -10 +1 16 0 0 0 1 0 0 0 1 0 0 0 1 s\3069bs01.dat +0 // diff --git a/public/ldraw/parts/3941.dat b/public/ldraw/parts/3941.dat new file mode 100644 index 0000000..d187de1 --- /dev/null +++ b/public/ldraw/parts/3941.dat @@ -0,0 +1,19 @@ +0 Brick 2 x 2 Round without Reinforcement +0 Name: 3941.dat +0 Author: James Jessiman +0 !LDRAW_ORG Part UPDATE 2020-01 +0 !LICENSE Licensed under CC BY 4.0 : see CAreadme.txt + +0 BFC CERTIFY CCW + +0 !HISTORY 2003-08-21 [OrionP] Changed stud to stud10, BFC'd +0 !HISTORY 2004-04-22 [PTadmin] Official Update 2004-02 +0 !HISTORY 2007-06-30 [PTadmin] Header formatted for Contributor Agreement +0 !HISTORY 2008-07-01 [PTadmin] Official Update 2008-01 +0 !HISTORY 2018-02-20 [MagFors] Used subfile +0 !HISTORY 2019-06-28 [PTadmin] Official Update 2019-01 +0 !HISTORY 2020-06-28 [PTadmin] Official Update 2020-01 + + +1 16 0 0 0 1 0 0 0 1 0 0 0 1 s\3941s01.dat +1 16 0 0 0 20 0 0 0 20 0 0 0 20 4-4cyli.dat diff --git a/public/ldraw/parts/4-4cyli.dat b/public/ldraw/parts/4-4cyli.dat new file mode 100644 index 0000000..f85dde0 --- /dev/null +++ b/public/ldraw/parts/4-4cyli.dat @@ -0,0 +1,50 @@ +0 Cylinder 1.0 +0 Name: 4-4cyli.dat +0 Author: James Jessiman +0 !LDRAW_ORG Primitive UPDATE 2005-01 +0 !LICENSE Licensed under CC BY 4.0 : see CAreadme.txt + +0 BFC CERTIFY CCW + +0 !HISTORY 1998-12-15 [PTadmin] Official Update 1998-10 +0 !HISTORY 2002-03-23 [sbliss] Added BFC statement; merged headers from files in distributions LDraw 0.27 and Complete. +0 !HISTORY 2002-04-25 [PTadmin] Official Update 2002-02 +0 !HISTORY 2004-12-14 [guyvivan] BFC CCW +0 !HISTORY 2005-12-28 [PTadmin] Official Update 2005-01 +0 !HISTORY 2007-06-24 [PTadmin] Header formatted for Contributor Agreement +0 !HISTORY 2008-07-01 [PTadmin] Official Update 2008-01 + + +4 16 1 1 0 0.9239 1 0.3827 0.9239 0 0.3827 1 0 0 +5 24 1 0 0 1 1 0 0.9239 0 0.3827 0.9239 0 -0.3827 +4 16 0.9239 1 0.3827 0.7071 1 0.7071 0.7071 0 0.7071 0.9239 0 0.3827 +5 24 0.9239 0 0.3827 0.9239 1 0.3827 0.7071 0 0.7071 1 0 0 +4 16 0.7071 1 0.7071 0.3827 1 0.9239 0.3827 0 0.9239 0.7071 0 0.7071 +5 24 0.7071 0 0.7071 0.7071 1 0.7071 0.3827 0 0.9239 0.9239 0 0.3827 +4 16 0.3827 1 0.9239 0 1 1 0 0 1 0.3827 0 0.9239 +5 24 0.3827 0 0.9239 0.3827 1 0.9239 0 0 1 0.7071 0 0.7071 +4 16 0 1 1 -0.3827 1 0.9239 -0.3827 0 0.9239 0 0 1 +5 24 0 0 1 0 1 1 -0.3827 0 0.9239 0.3827 0 0.9239 +4 16 -0.3827 1 0.9239 -0.7071 1 0.7071 -0.7071 0 0.7071 -0.3827 0 0.9239 +5 24 -0.3827 0 0.9239 -0.3827 1 0.9239 -0.7071 0 0.7071 0 0 1 +4 16 -0.7071 1 0.7071 -0.9239 1 0.3827 -0.9239 0 0.3827 -0.7071 0 0.7071 +5 24 -0.7071 0 0.7071 -0.7071 1 0.7071 -0.9239 0 0.3827 -0.3827 0 0.9239 +4 16 -0.9239 1 0.3827 -1 1 0 -1 0 0 -0.9239 0 0.3827 +5 24 -0.9239 0 0.3827 -0.9239 1 0.3827 -1 0 0 -0.7071 0 0.7071 +4 16 -1 1 0 -0.9239 1 -0.3827 -0.9239 0 -0.3827 -1 0 0 +5 24 -1 0 0 -1 1 0 -0.9239 0 -0.3827 -0.9239 0 0.3827 +4 16 -0.9239 1 -0.3827 -0.7071 1 -0.7071 -0.7071 0 -0.7071 -0.9239 0 -0.3827 +5 24 -0.9239 0 -0.3827 -0.9239 1 -0.3827 -0.7071 0 -0.7071 -1 0 0 +4 16 -0.7071 1 -0.7071 -0.3827 1 -0.9239 -0.3827 0 -0.9239 -0.7071 0 -0.7071 +5 24 -0.7071 0 -0.7071 -0.7071 1 -0.7071 -0.3827 0 -0.9239 -0.9239 0 -0.3827 +4 16 -0.3827 1 -0.9239 0 1 -1 0 0 -1 -0.3827 0 -0.9239 +5 24 -0.3827 0 -0.9239 -0.3827 1 -0.9239 0 0 -1 -0.7071 0 -0.7071 +4 16 0 1 -1 0.3827 1 -0.9239 0.3827 0 -0.9239 0 0 -1 +5 24 0 0 -1 0 1 -1 0.3827 0 -0.9239 -0.3827 0 -0.9239 +4 16 0.3827 1 -0.9239 0.7071 1 -0.7071 0.7071 0 -0.7071 0.3827 0 -0.9239 +5 24 0.3827 0 -0.9239 0.3827 1 -0.9239 0.7071 0 -0.7071 0 0 -1 +4 16 0.7071 1 -0.7071 0.9239 1 -0.3827 0.9239 0 -0.3827 0.7071 0 -0.7071 +5 24 0.7071 0 -0.7071 0.7071 1 -0.7071 0.9239 0 -0.3827 0.3827 0 -0.9239 +4 16 0.9239 1 -0.3827 1 1 0 1 0 0 0.9239 0 -0.3827 +5 24 0.9239 0 -0.3827 0.9239 1 -0.3827 1 0 0 0.7071 0 -0.7071 +0 diff --git a/public/ldraw/parts/4-4cylo.dat b/public/ldraw/parts/4-4cylo.dat new file mode 100644 index 0000000..cba5b14 --- /dev/null +++ b/public/ldraw/parts/4-4cylo.dat @@ -0,0 +1,15 @@ +0 Cylinder Open 1.0 +0 Name: 4-4cylo.dat +0 Author: Mark Kennedy [mkennedy] +0 !LDRAW_ORG Primitive UPDATE 2010-01 +0 !LICENSE Licensed under CC BY 4.0 : see CAreadme.txt + +0 BFC CERTIFY CCW + +0 !HISTORY 2010-04-05 [PTadmin] Official Update 2010-01 + + +1 16 0 0 0 1 0 0 0 1 0 0 0 1 4-4edge.dat +1 16 0 1 0 1 0 0 0 1 0 0 0 1 4-4edge.dat +1 16 0 0 0 1 0 0 0 1 0 0 0 1 4-4cyli.dat +0 \ No newline at end of file diff --git a/public/ldraw/parts/4-4disc.dat b/public/ldraw/parts/4-4disc.dat new file mode 100644 index 0000000..abe4431 --- /dev/null +++ b/public/ldraw/parts/4-4disc.dat @@ -0,0 +1,32 @@ +0 Disc 1.0 +0 Name: 4-4disc.dat +0 Author: James Jessiman +0 !LDRAW_ORG Primitive UPDATE 2002-02 +0 !LICENSE Licensed under CC BY 4.0 : see CAreadme.txt + +0 BFC CERTIFY CCW + +0 !HISTORY 1998-12-15 [PTadmin] Official Update 1998-10 +0 !HISTORY 2002-03-23 [sbliss] Added BFC statement +0 !HISTORY 2002-04-25 [PTadmin] Official Update 2002-02 +0 !HISTORY 2007-06-24 [PTadmin] Header formatted for Contributor Agreement +0 !HISTORY 2008-07-01 [PTadmin] Official Update 2008-01 + + +3 16 0 0 0 1 0 0 0.9239 0 0.3827 +3 16 0 0 0 0.9239 0 0.3827 0.7071 0 0.7071 +3 16 0 0 0 0.7071 0 0.7071 0.3827 0 0.9239 +3 16 0 0 0 0.3827 0 0.9239 0 0 1 +3 16 0 0 0 0 0 1 -0.3827 0 0.9239 +3 16 0 0 0 -0.3827 0 0.9239 -0.7071 0 0.7071 +3 16 0 0 0 -0.7071 0 0.7071 -0.9239 0 0.3827 +3 16 0 0 0 -0.9239 0 0.3827 -1 0 -0 +3 16 0 0 0 -1 0 -0 -0.9239 0 -0.3827 +3 16 0 0 0 -0.9239 0 -0.3827 -0.7071 0 -0.7071 +3 16 0 0 0 -0.7071 0 -0.7071 -0.3827 0 -0.9239 +3 16 0 0 0 -0.3827 0 -0.9239 0 0 -1 +3 16 0 0 0 0 0 -1 0.3827 0 -0.9239 +3 16 0 0 0 0.3827 0 -0.9239 0.7071 0 -0.7071 +3 16 0 0 0 0.7071 0 -0.7071 0.9239 0 -0.3827 +3 16 0 0 0 0.9239 0 -0.3827 1 0 0 +0 diff --git a/public/ldraw/parts/4-4edge.dat b/public/ldraw/parts/4-4edge.dat new file mode 100644 index 0000000..c5621c3 --- /dev/null +++ b/public/ldraw/parts/4-4edge.dat @@ -0,0 +1,32 @@ +0 Circle 1.0 +0 Name: 4-4edge.dat +0 Author: James Jessiman +0 !LDRAW_ORG Primitive UPDATE 2017-01 +0 !LICENSE Licensed under CC BY 4.0 : see CAreadme.txt + +0 BFC CERTIFY CCW + +0 !HISTORY 1998-12-15 [PTadmin] Official Update 1998-10 +0 !HISTORY 2005-12-28 [PTadmin] Official Update 2005-01 +0 !HISTORY 2007-06-24 [PTadmin] Header formatted for Contributor Agreement +0 !HISTORY 2008-07-01 [PTadmin] Official Update 2008-01 +0 !HISTORY 2017-01-15 [Steffen] BFCed +0 !HISTORY 2017-12-30 [PTadmin] Official Update 2017-01 + + +2 24 1 0 0 0.9239 0 0.3827 +2 24 0.9239 0 0.3827 0.7071 0 0.7071 +2 24 0.7071 0 0.7071 0.3827 0 0.9239 +2 24 0.3827 0 0.9239 0 0 1 +2 24 0 0 1 -0.3827 0 0.9239 +2 24 -0.3827 0 0.9239 -0.7071 0 0.7071 +2 24 -0.7071 0 0.7071 -0.9239 0 0.3827 +2 24 -0.9239 0 0.3827 -1 0 -0 +2 24 -1 0 -0 -0.9239 0 -0.3827 +2 24 -0.9239 0 -0.3827 -0.7071 0 -0.7071 +2 24 -0.7071 0 -0.7071 -0.3827 0 -0.9239 +2 24 -0.3827 0 -0.9239 0 0 -1 +2 24 0 0 -1 0.3827 0 -0.9239 +2 24 0.3827 0 -0.9239 0.7071 0 -0.7071 +2 24 0.7071 0 -0.7071 0.9239 0 -0.3827 +2 24 0.9239 0 -0.3827 1 0 0 diff --git a/public/ldraw/parts/4-4ndis.dat b/public/ldraw/parts/4-4ndis.dat new file mode 100644 index 0000000..dfa974f --- /dev/null +++ b/public/ldraw/parts/4-4ndis.dat @@ -0,0 +1,32 @@ +0 Disc Negative 1.0 +0 Name: 4-4ndis.dat +0 Author: James Jessiman +0 !LDRAW_ORG Primitive UPDATE 2012-01 +0 !LICENSE Licensed under CC BY 4.0 : see CAreadme.txt + +0 BFC CERTIFY CCW + +0 !HISTORY 2002-03-23 [sbliss] Added BFC statement; compacted code +0 !HISTORY 2002-04-25 [PTadmin] Official Update 2002-02 +0 !HISTORY 2007-06-24 [PTadmin] Header formatted for Contributor Agreement +0 !HISTORY 2008-07-01 [PTadmin] Official Update 2008-01 +0 !HISTORY 2012-02-16 [Philo] Changed to CCW +0 !HISTORY 2012-03-30 [PTadmin] Official Update 2012-01 + + +3 16 0.9239 0 0.3827 1 0 0 1 0 1 +3 16 0.7071 0 0.7071 0.9239 0 0.3827 1 0 1 +3 16 0.3827 0 0.9239 0.7071 0 0.7071 1 0 1 +3 16 0 0 1 0.3827 0 0.9239 1 0 1 +3 16 -0.3827 0 0.9239 0 0 1 -1 0 1 +3 16 -0.7071 0 0.7071 -0.3827 0 0.9239 -1 0 1 +3 16 -0.9239 0 0.3827 -0.7071 0 0.7071 -1 0 1 +3 16 -1 0 0 -0.9239 0 0.3827 -1 0 1 +3 16 -0.9239 0 -0.3827 -1 0 0 -1 0 -1 +3 16 -0.7071 0 -0.7071 -0.9239 0 -0.3827 -1 0 -1 +3 16 -0.3827 0 -0.9239 -0.7071 0 -0.7071 -1 0 -1 +3 16 0 0 -1 -0.3827 0 -0.9239 -1 0 -1 +3 16 0.3827 0 -0.9239 0 0 -1 1 0 -1 +3 16 0.7071 0 -0.7071 0.3827 0 -0.9239 1 0 -1 +3 16 0.9239 0 -0.3827 0.7071 0 -0.7071 1 0 -1 +3 16 1 0 0 0.9239 0 -0.3827 1 0 -1 diff --git a/public/ldraw/parts/4-4ring1.dat b/public/ldraw/parts/4-4ring1.dat new file mode 100644 index 0000000..1714178 --- /dev/null +++ b/public/ldraw/parts/4-4ring1.dat @@ -0,0 +1,34 @@ +0 Ring 1 x 1.0 +0 Name: 4-4ring1.dat +0 Author: James Jessiman +0 !LDRAW_ORG Primitive UPDATE 2009-01 +0 !LICENSE Licensed under CC BY 4.0 : see CAreadme.txt + +0 BFC CERTIFY CCW + +0 !HISTORY 1998-12-15 [PTadmin] Official Update 1998-10 +0 !HISTORY 2002-04-08 [BrickCaster] Modified for BFC compliance +0 !HISTORY 2002-04-25 [PTadmin] Official Update 2002-02 +0 !HISTORY 2007-06-24 [PTadmin] Header formatted for Contributor Agreement +0 !HISTORY 2008-07-01 [PTadmin] Official Update 2008-01 +0 !HISTORY 2008-08-26 [cwdee] Switch polygon winding and rename +0 !HISTORY 2009-05-02 [PTadmin] Official Update 2009-01 + + +4 16 -0.7654 0 1.8478 -0.3827 0 0.9239 0 0 1 0 0 2 +4 16 -1.4142 0 1.4142 -0.7071 0 0.7071 -0.3827 0 0.9239 -0.7654 0 1.8478 +4 16 -1.8478 0 0.7654 -0.9239 0 0.3827 -0.7071 0 0.7071 -1.4142 0 1.41420 +4 16 -2 0 0 -1 0 0 -0.9239 0 0.3827 -1.8478 0 0.7654 +4 16 -1.8478 0 -0.7654 -0.9239 0 -0.3827 -1 0 0 -2 0 0 +4 16 -1.4142 0 -1.4142 -0.7071 0 -0.7071 -0.9239 0 -0.3827 -1.8478 0 -0.7654 +4 16 -0.7654 0 -1.8478 -0.3827 0 -0.9239 -0.7071 0 -0.7071 -1.4142 0 -1.4142 +4 16 0 0 -2 0 0 -1 -0.3827 0 -0.9239 -0.7654 0 -1.8478 +4 16 0.7654 0 -1.8478 0.3827 0 -0.9239 0 0 -1 0 0 -2 +4 16 1.4142 0 -1.4142 0.7071 0 -0.7071 0.3827 0 -0.9239 0.7654 0 -1.8478 +4 16 1.8478 0 -0.7654 0.9239 0 -0.3827 0.7071 0 -0.7071 1.4142 0 -1.4142 +4 16 2 0 0 1 0 0 0.9239 0 -0.3827 1.8478 0 -0.7654 +4 16 1.8478 0 0.7654 0.9239 0 0.3827 1 0 0 2 0 0 +4 16 1.4142 0 1.4142 0.7071 0 0.7071 0.9239 0 0.3827 1.8478 0 0.7654 +4 16 0.7654 0 1.8478 0.3827 0 0.9239 0.7071 0 0.7071 1.4142 0 1.4142 +4 16 0 0 2 0 0 1 0.3827 0 0.9239 0.7654 0 1.8478 +0 diff --git a/public/ldraw/parts/4-4ring2.dat b/public/ldraw/parts/4-4ring2.dat new file mode 100644 index 0000000..9bdeab7 --- /dev/null +++ b/public/ldraw/parts/4-4ring2.dat @@ -0,0 +1,34 @@ +0 Ring 2 x 1.0 +0 Name: 4-4ring2.dat +0 Author: James Jessiman +0 !LDRAW_ORG Primitive UPDATE 2009-01 +0 !LICENSE Licensed under CC BY 4.0 : see CAreadme.txt + +0 BFC CERTIFY CCW + +0 !HISTORY 1998-12-15 [PTadmin] Official Update 1998-10 +0 !HISTORY 2002-04-05 [hafhead] Added BFC statement +0 !HISTORY 2002-04-25 [PTadmin] Official Update 2002-02 +0 !HISTORY 2007-06-24 [PTadmin] Header formatted for Contributor Agreement +0 !HISTORY 2008-07-01 [PTadmin] Official Update 2008-01 +0 !HISTORY 2008-08-26 [cwdee] Switch polygon winding and rename +0 !HISTORY 2009-05-02 [PTadmin] Official Update 2009-01 + + +4 16 -1.1481 0 2.7717 -0.7654 0 1.8478 0 0 2 0 0 3 +4 16 -2.1213 0 2.1213 -1.4142 0 1.4142 -0.7654 0 1.8478 -1.1481 0 2.7717 +4 16 -2.7717 0 1.1481 -1.8478 0 0.7654 -1.4142 0 1.4142 -2.1213 0 2.1213 +4 16 -3 0 0 -2 0 0 -1.8478 0 0.7654 -2.7717 0 1.1481 +4 16 -2.7717 0 -1.1481 -1.8478 0 -0.7654 -2 0 0 -3 0 0 +4 16 -2.1213 0 -2.1213 -1.4142 0 -1.4142 -1.8478 0 -0.7654 -2.7717 0 -1.1481 +4 16 -1.1481 0 -2.7717 -0.7654 0 -1.8478 -1.4142 0 -1.4142 -2.1213 0 -2.1213 +4 16 0 0 -3 0 0 -2 -0.7654 0 -1.8478 -1.1481 0 -2.7717 +4 16 1.1481 0 -2.7717 0.7654 0 -1.8478 0 0 -2 0 0 -3 +4 16 2.1213 0 -2.1213 1.4142 0 -1.4142 0.7654 0 -1.8478 1.1481 0 -2.7717 +4 16 2.7717 0 -1.1481 1.8478 0 -0.7654 1.4142 0 -1.4142 2.1213 0 -2.1213 +4 16 3 0 0 2 0 0 1.8478 0 -0.7654 2.7717 0 -1.1481 +4 16 2.7717 0 1.1481 1.8478 0 0.7654 2 0 0 3 0 0 +4 16 2.1213 0 2.1213 1.4142 0 1.4142 1.8478 0 0.7654 2.7717 0 1.1481 +4 16 1.1481 0 2.7717 0.7654 0 1.8478 1.4142 0 1.4142 2.1213 0 2.1213 +4 16 0 0 3 0 0 2 0.7654 0 1.8478 1.1481 0 2.7717 +0 diff --git a/public/ldraw/parts/4-4ring3.dat b/public/ldraw/parts/4-4ring3.dat new file mode 100644 index 0000000..7b65007 --- /dev/null +++ b/public/ldraw/parts/4-4ring3.dat @@ -0,0 +1,34 @@ +0 Ring 3 x 1.0 +0 Name: 4-4ring3.dat +0 Author: James Jessiman +0 !LDRAW_ORG Primitive UPDATE 2009-01 +0 !LICENSE Licensed under CC BY 4.0 : see CAreadme.txt + +0 BFC CERTIFY CCW + +0 !HISTORY 1998-12-15 [PTadmin] Official Update 1998-10 +0 !HISTORY 2002-04-05 [hafhead] Added BFC statement +0 !HISTORY 2002-04-25 [PTadmin] Official Update 2002-02 +0 !HISTORY 2007-06-24 [PTadmin] Header formatted for Contributor Agreement +0 !HISTORY 2008-07-01 [PTadmin] Official Update 2008-01 +0 !HISTORY 2008-08-26 [cwdee] Switch polygon winding and rename +0 !HISTORY 2009-05-02 [PTadmin] Official Update 2009-01 + + +4 16 -1.5308 0 3.6956 -1.1481 0 2.7717 0 0 3 0 0 4 +4 16 -2.8284 0 2.8284 -2.1213 0 2.1213 -1.1481 0 2.7717 -1.5308 0 3.6956 +4 16 -3.6956 0 1.5308 -2.7717 0 1.1481 -2.1213 0 2.1213 -2.8284 0 2.8284 +4 16 -4 0 0 -3 0 0 -2.7717 0 1.1481 -3.6956 0 1.5308 +4 16 -3.6956 0 -1.5308 -2.7717 0 -1.1481 -3 0 0 -4 0 0 +4 16 -2.8284 0 -2.8284 -2.1213 0 -2.1213 -2.7717 0 -1.1481 -3.6956 0 -1.5308 +4 16 -1.5308 0 -3.6956 -1.1481 0 -2.7717 -2.1213 0 -2.1213 -2.8284 0 -2.8284 +4 16 0 0 -4 0 0 -3 -1.1481 0 -2.7717 -1.5308 0 -3.6956 +4 16 1.5308 0 -3.6956 1.1481 0 -2.7717 0 0 -3 0 0 -4 +4 16 2.8284 0 -2.8284 2.1213 0 -2.1213 1.1481 0 -2.7717 1.5308 0 -3.6956 +4 16 3.6956 0 -1.5308 2.7717 0 -1.1481 2.1213 0 -2.1213 2.8284 0 -2.8284 +4 16 4 0 0 3 0 0 2.7717 0 -1.1481 3.6956 0 -1.5308 +4 16 3.6956 0 1.5308 2.7717 0 1.1481 3 0 0 4 0 0 +4 16 2.8284 0 2.8284 2.1213 0 2.1213 2.7717 0 1.1481 3.6956 0 1.5308 +4 16 1.5308 0 3.6956 1.1481 0 2.7717 2.1213 0 2.1213 2.8284 0 2.8284 +4 16 0 0 4 0 0 3 1.1481 0 2.7717 1.5308 0 3.6956 +0 diff --git a/public/ldraw/parts/4-4ring4.dat b/public/ldraw/parts/4-4ring4.dat new file mode 100644 index 0000000..b412c49 --- /dev/null +++ b/public/ldraw/parts/4-4ring4.dat @@ -0,0 +1,34 @@ +0 Ring 4 x 1.0 +0 Name: 4-4ring4.dat +0 Author: James Jessiman +0 !LDRAW_ORG Primitive UPDATE 2009-01 +0 !LICENSE Licensed under CC BY 4.0 : see CAreadme.txt + +0 BFC CERTIFY CCW + +0 !HISTORY 1998-12-15 [PTadmin] Official Update 1998-10 +0 !HISTORY 2002-04-08 [BrickCaster] Modified for BFC compliance +0 !HISTORY 2002-04-25 [PTadmin] Official Update 2002-02 +0 !HISTORY 2007-06-24 [PTadmin] Header formatted for Contributor Agreement +0 !HISTORY 2008-07-01 [PTadmin] Official Update 2008-01 +0 !HISTORY 2008-08-26 [cwdee] Switch polygon winding and rename +0 !HISTORY 2009-05-02 [PTadmin] Official Update 2009-01 + + +4 16 -1.9135 0 4.6195 -1.5308 0 3.6956 0 0 4 0 0 5 +4 16 -3.5355 0 3.5355 -2.8284 0 2.8284 -1.5308 0 3.6956 -1.9135 0 4.6195 +4 16 -4.6195 0 1.9135 -3.6956 0 1.5308 -2.8284 0 2.8284 -3.5355 0 3.5355 +4 16 -5 0 0 -4 0 0 -3.6956 0 1.5308 -4.6195 0 1.9135 +4 16 -4.6195 0 -1.9135 -3.6956 0 -1.5308 -4 0 0 -5 0 0 +4 16 -3.5355 0 -3.5355 -2.8284 0 -2.8284 -3.6956 0 -1.5308 -4.6195 0 -1.9135 +4 16 -1.9135 0 -4.6195 -1.5308 0 -3.6956 -2.8284 0 -2.8284 -3.5355 0 -3.5355 +4 16 0 0 -5 0 0 -4 -1.5308 0 -3.6956 -1.9135 0 -4.6195 +4 16 1.9135 0 -4.6195 1.5308 0 -3.6956 0 0 -4 0 0 -5 +4 16 3.5355 0 -3.5355 2.8284 0 -2.8284 1.5308 0 -3.6956 1.9135 0 -4.6195 +4 16 4.6195 0 -1.9135 3.6956 0 -1.5308 2.8284 0 -2.8284 3.5355 0 -3.5355 +4 16 5 0 0 4 0 0 3.6956 0 -1.5308 4.6195 0 -1.9135 +4 16 4.6195 0 1.9135 3.6956 0 1.5308 4 0 0 5 0 0 +4 16 3.5355 0 3.5355 2.8284 0 2.8284 3.6956 0 1.5308 4.6195 0 1.9135 +4 16 1.9135 0 4.6195 1.5308 0 3.6956 2.8284 0 2.8284 3.5355 0 3.5355 +4 16 0 0 5 0 0 4 1.5308 0 3.6956 1.9135 0 4.6195 +0 diff --git a/public/ldraw/parts/axl5ho10.dat b/public/ldraw/parts/axl5ho10.dat new file mode 100644 index 0000000..e0c6412 --- /dev/null +++ b/public/ldraw/parts/axl5ho10.dat @@ -0,0 +1,27 @@ +0 Technic Axle Hole Rounded Tooth Surface +0 Name: axl5ho10.dat +0 Author: Magnus Forsberg [MagFors] +0 !LDRAW_ORG Primitive UPDATE 2022-01 +0 !LICENSE Licensed under CC BY 4.0 : see CAreadme.txt + +0 BFC CERTIFY CCW + +0 !HISTORY 2022-01-14 [PTadmin] Official Update 2022-01 + + +1 16 0 0 0 5.54328 0 -2.2961 0 1 0 2.2961 0 5.54328 1-8chrd.dat +1 16 0 0 0 -2.2961 0 -5.54328 0 1 0 5.54328 0 -2.2961 1-8chrd.dat +1 16 0 0 0 -5.54328 0 2.2961 0 1 0 -2.2961 0 -5.54328 1-8chrd.dat +1 16 0 0 0 2.2961 0 5.54328 0 1 0 -5.54328 0 2.2961 1-8chrd.dat +3 16 5.5433 0 2.2961 2.2961 0 5.5433 2.5 0 2.5 +4 16 2.5 0 2.5 4 0 2 5.6023 0 2 5.5433 0 2.2961 +4 16 2 0 4 2.5 0 2.5 2.2961 0 5.5433 2 0 5.6023 +3 16 -2.5 0 2.5 -2.2961 0 5.5433 -5.5433 0 2.2961 +4 16 -2.5 0 2.5 -2 0 4 -2 0 5.6023 -2.2961 0 5.5433 +4 16 -5.6023 0 2 -4 0 2 -2.5 0 2.5 -5.5433 0 2.2961 +4 16 -4 0 -2 -5.6023 0 -2 -5.5433 0 -2.2961 -2.5 0 -2.5 +3 16 -5.5433 0 -2.2961 -2.2961 0 -5.5433 -2.5 0 -2.5 +4 16 -2.2961 0 -5.5433 -2 0 -5.6023 -2 0 -4 -2.5 0 -2.5 +3 16 2.2961 0 -5.5433 5.5433 0 -2.2961 2.5 0 -2.5 +4 16 2 0 -5.6023 2.2961 0 -5.5433 2.5 0 -2.5 2 0 -4 +4 16 4 0 -2 2.5 0 -2.5 5.5433 0 -2.2961 5.6023 0 -2 diff --git a/public/ldraw/parts/axl5hol8.dat b/public/ldraw/parts/axl5hol8.dat new file mode 100644 index 0000000..f823928 --- /dev/null +++ b/public/ldraw/parts/axl5hol8.dat @@ -0,0 +1,61 @@ +0 Technic Axle Hole Rounded Perimeter +0 Name: axl5hol8.dat +0 Author: Magnus Forsberg [MagFors] +0 !LDRAW_ORG Primitive UPDATE 2022-01 +0 !LICENSE Licensed under CC BY 4.0 : see CAreadme.txt + +0 BFC CERTIFY CCW + +0 !HISTORY 2022-01-14 [PTadmin] Official Update 2022-01 + + +4 16 6 1 0 6 0 0 5.6023 0 2 5.6023 1 2 +4 16 4 1 2 5.6023 1 2 5.6023 0 2 4 0 2 +4 16 4 1 2 4 0 2 2.5 0 2.5 2.5 1 2.5 +4 16 2.5 1 2.5 2.5 0 2.5 2 0 4 2 1 4 +4 16 2 1 4 2 0 4 2 0 5.6023 2 1 5.6023 +4 16 2 0 5.6023 0 0 6 0 1 6 2 1 5.6023 +4 16 0 1 6 0 0 6 -2 0 5.6023 -2 1 5.6023 +4 16 -2 1 4 -2 1 5.6023 -2 0 5.6023 -2 0 4 +4 16 -2 1 4 -2 0 4 -2.5 0 2.5 -2.5 1 2.5 +4 16 -2.5 1 2.5 -2.5 0 2.5 -4 0 2 -4 1 2 +4 16 -4 1 2 -4 0 2 -5.6023 0 2 -5.6023 1 2 +4 16 -5.6023 1 2 -5.6023 0 2 -6 0 0 -6 1 0 +4 16 -6 1 0 -6 0 0 -5.6023 0 -2 -5.6023 1 -2 +4 16 -5.6023 1 -2 -5.6023 0 -2 -4 0 -2 -4 1 -2 +4 16 -4 1 -2 -4 0 -2 -2.5 0 -2.5 -2.5 1 -2.5 +4 16 -2.5 1 -2.5 -2.5 0 -2.5 -2 0 -4 -2 1 -4 +4 16 -2 1 -4 -2 0 -4 -2 0 -5.6023 -2 1 -5.6023 +4 16 -2 0 -5.6023 0 0 -6 0 1 -6 -2 1 -5.6023 +4 16 0 1 -6 0 0 -6 2 0 -5.6023 2 1 -5.6023 +4 16 2 1 -5.6023 2 0 -5.6023 2 0 -4 2 1 -4 +4 16 2 1 -4 2 0 -4 2.5 0 -2.5 2.5 1 -2.5 +4 16 2.5 1 -2.5 2.5 0 -2.5 4 0 -2 4 1 -2 +4 16 4 1 -2 4 0 -2 5.6023 0 -2 5.6023 1 -2 +4 16 5.6023 1 -2 5.6023 0 -2 6 0 0 6 1 0 + +2 24 5.6023 1 2 5.6023 0 2 +2 24 2 1 5.6023 2 0 5.6023 +2 24 -2 1 5.6023 -2 0 5.6023 +2 24 -5.6023 1 2 -5.6023 0 2 +2 24 -5.6023 1 -2 -5.6023 0 -2 +2 24 -2 1 -5.6023 -2 0 -5.6023 +2 24 2 1 -5.6023 2 0 -5.6023 +2 24 5.6023 1 -2 5.6023 0 -2 + +5 24 6 1 0 6 0 0 5.6023 1 2 5.6023 1 -2 +5 24 4 1 2 4 0 2 5.6023 1 2 2.5 1 2.5 +5 24 2.5 1 2.5 2.5 0 2.5 2 1 4 4 1 2 +5 24 2 1 4 2 0 4 2.5 1 2.5 2 1 5.6023 +5 24 0 1 6 0 0 6 2 1 5.6023 -2 1 5.6023 +5 24 -2 1 4 -2 0 4 -2 1 5.6023 -2.5 1 2.5 +5 24 -2.5 1 2.5 -2.5 0 2.5 -2 1 4 -4 1 2 +5 24 -4 1 2 -4 0 2 -2.5 1 2.5 -5.6023 1 2 +5 24 -6 1 0 -6 0 0 -5.6023 1 2 -5.6023 1 -2 +5 24 -4 1 -2 -4 0 -2 -5.6023 1 -2 -2.5 1 -2.5 +5 24 -2.5 1 -2.5 -2.5 0 -2.5 -4 1 -2 -2 1 -4 +5 24 -2 1 -4 -2 0 -4 -2.5 1 -2.5 -2 1 -5.6023 +5 24 0 1 -6 0 0 -6 -2 1 -5.6023 2 1 -5.6023 +5 24 2 1 -4 2 0 -4 2 1 -5.6023 2.5 1 -2.5 +5 24 2.5 1 -2.5 2.5 0 -2.5 4 1 -2 2 1 -4 +5 24 4 1 -2 4 0 -2 5.6023 1 -2 2.5 1 -2.5 diff --git a/public/ldraw/parts/axl5hol9.dat b/public/ldraw/parts/axl5hol9.dat new file mode 100644 index 0000000..6e4019e --- /dev/null +++ b/public/ldraw/parts/axl5hol9.dat @@ -0,0 +1,27 @@ +0 Technic Axle Hole Rounded Tooth Outer Edges +0 Name: axl5hol9.dat +0 Author: Magnus Forsberg [MagFors] +0 !LDRAW_ORG Primitive UPDATE 2022-01 +0 !LICENSE Licensed under CC BY 4.0 : see CAreadme.txt + +0 BFC CERTIFY CCW + +0 !HISTORY 2022-01-14 [PTadmin] Official Update 2022-01 + + +2 24 5.6023 0 2 4 0 2 +2 24 4 0 2 2.5 0 2.5 +2 24 2.5 0 2.5 2 0 4 +2 24 2 0 4 2 0 5.6023 +2 24 -2 0 5.6023 -2 0 4 +2 24 -2 0 4 -2.5 0 2.5 +2 24 -2.5 0 2.5 -4 0 2 +2 24 -4 0 2 -5.6023 0 2 +2 24 -5.6023 0 -2 -4 0 -2 +2 24 -4 0 -2 -2.5 0 -2.5 +2 24 -2.5 0 -2.5 -2 0 -4 +2 24 -2 0 -4 -2 0 -5.6023 +2 24 2 0 -5.6023 2 0 -4 +2 24 2 0 -4 2.5 0 -2.5 +2 24 2.5 0 -2.5 4 0 -2 +2 24 4 0 -2 5.6023 0 -2 diff --git a/public/ldraw/parts/axlehol2.dat b/public/ldraw/parts/axlehol2.dat new file mode 100644 index 0000000..7bf041e --- /dev/null +++ b/public/ldraw/parts/axlehol2.dat @@ -0,0 +1,24 @@ +0 Technic Axle Hole Side Edges +0 Name: axlehol2.dat +0 Author: James Jessiman +0 !LDRAW_ORG Primitive UPDATE 2022-02 +0 !LICENSE Licensed under CC BY 4.0 : see CAreadme.txt + +0 BFC CERTIFY CCW + +0 !HISTORY 2002-11-08 [OrionP] Adjusted fit and precision +0 !HISTORY 2003-03-12 [PTadmin] Official Update 2003-01 +0 !HISTORY 2007-06-24 [PTadmin] Header formatted for Contributor Agreement +0 !HISTORY 2008-07-01 [PTadmin] Official Update 2008-01 +0 !HISTORY 2021-12-24 [MagFors] rounded to four decimals +0 !HISTORY 2022-03-06 [PTadmin] Official Update 2022-02 + + +2 24 6 0 0 5.6023 0 2 +2 24 2 0 5.6023 0 0 6 +2 24 -6 0 0 -5.6023 0 2 +2 24 -2 0 5.6023 0 0 6 +2 24 6 0 0 5.6023 0 -2 +2 24 2 0 -5.6023 0 0 -6 +2 24 -6 0 0 -5.6023 0 -2 +2 24 -2 0 -5.6023 0 0 -6 diff --git a/public/ldraw/parts/axlehol3.dat b/public/ldraw/parts/axlehol3.dat new file mode 100644 index 0000000..ec9235f --- /dev/null +++ b/public/ldraw/parts/axlehol3.dat @@ -0,0 +1,28 @@ +0 Technic Axle Hole Tooth Outer Edges +0 Name: axlehol3.dat +0 Author: James Jessiman +0 !LDRAW_ORG Primitive UPDATE 2022-02 +0 !LICENSE Licensed under CC BY 4.0 : see CAreadme.txt + +0 BFC CERTIFY CCW + +0 !HISTORY 2002-11-08 [OrionP] Adjusted fit and precision +0 !HISTORY 2003-03-12 [PTadmin] Official Update 2003-01 +0 !HISTORY 2007-06-24 [PTadmin] Header formatted for Contributor Agreement +0 !HISTORY 2008-07-01 [PTadmin] Official Update 2008-01 +0 !HISTORY 2021-12-24 [MagFors] rounded to four decimals +0 !HISTORY 2022-03-06 [PTadmin] Official Update 2022-02 + + +1 16 0 0 0 5.54328 0 -2.2961 0 1 0 2.2961 0 5.54328 1-8edge.dat +2 24 5.6023 0 2 5.5433 0 2.2961 +2 24 2.2961 0 5.5433 2 0 5.6023 +1 16 0 0 0 2.2961 0 5.54328 0 1 0 -5.54328 0 2.2961 1-8edge.dat +2 24 2 0 -5.6023 2.2961 0 -5.5433 +2 24 5.5433 0 -2.2961 5.6023 0 -2 +1 16 0 0 0 -5.54328 0 2.2961 0 1 0 -2.2961 0 -5.54328 1-8edge.dat +2 24 -5.6023 0 -2 -5.5433 0 -2.2961 +2 24 -2.2961 0 -5.5433 -2 0 -5.6023 +1 16 0 0 0 -2.2961 0 -5.54328 0 1 0 5.54328 0 -2.2961 1-8edge.dat +2 24 -2 0 5.6023 -2.2961 0 5.5433 +2 24 -5.5433 0 2.2961 -5.6023 0 2 diff --git a/public/ldraw/parts/axlehole.dat b/public/ldraw/parts/axlehole.dat new file mode 100644 index 0000000..bbdcece --- /dev/null +++ b/public/ldraw/parts/axlehole.dat @@ -0,0 +1,48 @@ +0 Technic Axle Hole Closed +0 Name: axlehole.dat +0 Author: James Jessiman +0 !LDRAW_ORG Primitive UPDATE 2022-02 +0 !LICENSE Licensed under CC BY 4.0 : see CAreadme.txt + +0 BFC CERTIFY CCW + +0 !HISTORY 2000-04-23 [sbliss] Added conditional edges along outermost diameters +0 !HISTORY 2000-05-07 [PTadmin] Official Update 2000-01 +0 !HISTORY 2002-05-08 [OrionP] Made BFC compliant +0 !HISTORY 2002-08-18 [PTadmin] Official Update 2002-04 +0 !HISTORY 2002-11-08 [OrionP] Adjusted fit and precision +0 !HISTORY 2003-03-12 [PTadmin] Official Update 2003-01 +0 !HISTORY 2005-05-15 [guyvivan] Use 1-8chrd.dat primitive and made BFC'ed CCW +0 !HISTORY 2005-12-28 [PTadmin] Official Update 2005-01 +0 !HISTORY 2007-06-24 [PTadmin] Header formatted for Contributor Agreement +0 !HISTORY 2008-07-01 [PTadmin] Official Update 2008-01 +0 !HISTORY 2021-03-25 [Sirio] Added adapter rings and rounded to four decimals +0 !HISTORY 2021-12-20 [MagFors] Reshaped the hole +0 !HISTORY 2022-03-06 [PTadmin] Official Update 2022-02 + + +1 16 0 0 0 1 0 0 0 1 0 0 0 1 axl5hol9.dat +1 16 0 1 0 1 0 0 0 1 0 0 0 1 axl5hol9.dat +1 16 0 0 0 1 0 0 0 1 0 0 0 1 axl5ho10.dat +1 16 0 1 0 1 0 0 0 -1 0 0 0 -1 axl5ho10.dat + +1 16 0 0 0 1 0 0 0 1 0 0 0 1 axl5hol8.dat + +0 // Adapter rings +1 16 0 0 0 6 0 0 0 1 0 0 0 6 1-16chrd.dat +1 16 0 0 0 0 0 6 0 1 0 6 0 0 1-16chrd.dat +1 16 0 0 0 0 0 -6 0 1 0 6 0 0 1-16chrd.dat +1 16 0 0 0 -6 0 0 0 1 0 0 0 6 1-16chrd.dat +1 16 0 0 0 -6 0 0 0 1 0 0 0 -6 1-16chrd.dat +1 16 0 0 0 0 0 -6 0 1 0 -6 0 0 1-16chrd.dat +1 16 0 0 0 0 0 6 0 1 0 -6 0 0 1-16chrd.dat +1 16 0 0 0 6 0 0 0 1 0 0 0 -6 1-16chrd.dat + +1 16 0 1 0 6 0 0 0 -1 0 0 0 6 1-16chrd.dat +1 16 0 1 0 0 0 6 0 -1 0 6 0 0 1-16chrd.dat +1 16 0 1 0 0 0 -6 0 -1 0 6 0 0 1-16chrd.dat +1 16 0 1 0 -6 0 0 0 -1 0 0 0 6 1-16chrd.dat +1 16 0 1 0 -6 0 0 0 -1 0 0 0 -6 1-16chrd.dat +1 16 0 1 0 0 0 -6 0 -1 0 -6 0 0 1-16chrd.dat +1 16 0 1 0 0 0 6 0 -1 0 -6 0 0 1-16chrd.dat +1 16 0 1 0 6 0 0 0 -1 0 0 0 -6 1-16chrd.dat diff --git a/public/ldraw/parts/box3u2p.dat b/public/ldraw/parts/box3u2p.dat new file mode 100644 index 0000000..eb1d6ca --- /dev/null +++ b/public/ldraw/parts/box3u2p.dat @@ -0,0 +1,28 @@ +0 Box with 3 Faces without 2 Parallel Edges +0 Name: box3u2p.dat +0 Author: Niels Karsdorp [nielsk] +0 !LDRAW_ORG Primitive UPDATE 2012-01 +0 !LICENSE Licensed under CC BY 4.0 : see CAreadme.txt + +0 BFC CERTIFY CCW + +0 !HISTORY 2003-03-12 [PTadmin] Official Update 2003-01 +0 !HISTORY 2007-06-24 [PTadmin] Header formatted for Contributor Agreement +0 !HISTORY 2008-07-01 [PTadmin] Official Update 2008-01 +0 !HISTORY 2012-02-16 [Philo] Changed to CCW +0 !HISTORY 2012-03-30 [PTadmin] Official Update 2012-01 + + +2 24 1 1 1 -1 1 1 +2 24 -1 1 -1 1 1 -1 +2 24 1 0 1 -1 0 1 +2 24 -1 0 -1 1 0 -1 +2 24 1 1 1 1 1 -1 +2 24 -1 1 1 -1 1 -1 +2 24 1 1 1 1 0 1 +2 24 1 1 -1 1 0 -1 +2 24 -1 1 1 -1 0 1 +2 24 -1 1 -1 -1 0 -1 +4 16 -1 1 -1 -1 1 1 1 1 1 1 1 -1 +4 16 -1 1 1 -1 0 1 1 0 1 1 1 1 +4 16 1 1 -1 1 0 -1 -1 0 -1 -1 1 -1 diff --git a/public/ldraw/parts/box3u4a.dat b/public/ldraw/parts/box3u4a.dat new file mode 100644 index 0000000..64bd55f --- /dev/null +++ b/public/ldraw/parts/box3u4a.dat @@ -0,0 +1,23 @@ +0 Box with 3 Faces without 4 Adjacent Edges +0 Name: box3u4a.dat +0 Author: Niels Karsdorp [nielsk] +0 !LDRAW_ORG Primitive UPDATE 2009-01 +0 !LICENSE Licensed under CC BY 4.0 : see CAreadme.txt + +0 BFC CERTIFY CCW + +0 !HISTORY 2009-05-02 [PTadmin] Official Update 2009-01 + + +2 24 1 1 1 -1 1 1 +2 24 -1 1 -1 1 1 -1 +2 24 1 1 1 1 1 -1 +2 24 -1 1 1 -1 1 -1 +2 24 1 1 1 1 0 1 +2 24 1 1 -1 1 0 -1 +2 24 -1 1 1 -1 0 1 +2 24 -1 1 -1 -1 0 -1 +4 16 -1 1 -1 -1 1 1 1 1 1 1 1 -1 +4 16 -1 1 1 -1 0 1 1 0 1 1 1 1 +4 16 1 1 -1 1 0 -1 -1 0 -1 -1 1 -1 +0 diff --git a/public/ldraw/parts/box4-4a.dat b/public/ldraw/parts/box4-4a.dat new file mode 100644 index 0000000..ce993cd --- /dev/null +++ b/public/ldraw/parts/box4-4a.dat @@ -0,0 +1,33 @@ +0 Box with 4 Faces without 4 Adjacent Edges +0 Name: box4-4a.dat +0 Author: Willy Tschager [Holly-Wood] +0 !LDRAW_ORG Primitive UPDATE 2024-01 +0 !LICENSE Licensed under CC BY 4.0 : see CAreadme.txt + +0 BFC CERTIFY CCW + +0 !HISTORY 1998-07-15 [PTadmin] Official Update 1998-07 +0 !HISTORY 2002-12-13 [hafhead] Made BFC compliant +0 !HISTORY 2003-03-12 [PTadmin] Official Update 2003-01 +0 !HISTORY 2007-06-24 [PTadmin] Header formatted for Contributor Agreement +0 !HISTORY 2008-07-01 [PTadmin] Official Update 2008-01 +0 !HISTORY 2012-02-16 [Philo] Changed to CCW +0 !HISTORY 2012-03-30 [PTadmin] Official Update 2012-01 +0 !HISTORY 2024-01-03 [Holly-Wood] Complete re-write, original by Manfred Moolhuysen +0 !HISTORY 2024-01-29 [OrionP] Official Update 2024-01 + +2 24 -1 1 -1 -1 1 1 +2 24 1 1 1 1 1 -1 +2 24 -1 1 1 1 1 1 +4 16 1 1 1 1 1 -1 -1 1 -1 -1 1 1 + +2 24 -1 0 -1 -1 0 1 +4 16 -1 1 1 -1 1 -1 -1 0 -1 -1 0 1 + +2 24 1 0 1 1 0 -1 +4 16 1 1 -1 1 1 1 1 0 1 1 0 -1 + +2 24 1 1 1 1 0 1 +2 24 -1 1 1 -1 0 1 +2 24 -1 0 1 1 0 1 +4 16 1 1 1 -1 1 1 -1 0 1 1 0 1 diff --git a/public/ldraw/parts/box4.dat b/public/ldraw/parts/box4.dat new file mode 100644 index 0000000..8e248b0 --- /dev/null +++ b/public/ldraw/parts/box4.dat @@ -0,0 +1,32 @@ +0 Box with 4 Faces (2 Parallel Pairs) and All Edges +0 Name: box4.dat +0 Author: James Jessiman +0 !LDRAW_ORG Primitive UPDATE 2012-01 +0 !LICENSE Licensed under CC BY 4.0 : see CAreadme.txt + +0 BFC CERTIFY CCW + +0 !HISTORY 2002-04-03 [sbliss] Modified for BFC compliance +0 !HISTORY 2002-04-25 [PTadmin] Official Update 2002-02 +0 !HISTORY 2007-06-24 [PTadmin] Header formatted for Contributor Agreement +0 !HISTORY 2008-07-01 [PTadmin] Official Update 2008-01 +0 !HISTORY 2012-02-16 [Philo] Changed to CCW +0 !HISTORY 2012-03-30 [PTadmin] Official Update 2012-01 + + +2 24 1 1 1 -1 1 1 +2 24 -1 1 1 -1 1 -1 +2 24 -1 1 -1 1 1 -1 +2 24 1 1 -1 1 1 1 +2 24 1 0 1 -1 0 1 +2 24 -1 0 1 -1 0 -1 +2 24 -1 0 -1 1 0 -1 +2 24 1 0 -1 1 0 1 +2 24 1 0 1 1 1 1 +2 24 -1 0 1 -1 1 1 +2 24 1 0 -1 1 1 -1 +2 24 -1 0 -1 -1 1 -1 +4 16 -1 1 1 -1 0 1 1 0 1 1 1 1 +4 16 -1 1 -1 -1 0 -1 -1 0 1 -1 1 1 +4 16 1 1 -1 1 0 -1 -1 0 -1 -1 1 -1 +4 16 1 1 1 1 0 1 1 0 -1 1 1 -1 diff --git a/public/ldraw/parts/box4t.dat b/public/ldraw/parts/box4t.dat new file mode 100644 index 0000000..28f8bb8 --- /dev/null +++ b/public/ldraw/parts/box4t.dat @@ -0,0 +1,33 @@ +0 Box with 4 Adjacent Faces and All Edges +0 Name: box4t.dat +0 Author: Tore Eriksson [Tore_Eriksson] +0 !LDRAW_ORG Primitive UPDATE 2003-02 +0 !LICENSE Licensed under CC BY 4.0 : see CAreadme.txt + +0 BFC CERTIFY CCW + +0 !HISTORY 1997-09-29 [PTadmin] Official Update 1997-15 +0 !HISTORY 2002-08-31 [izanette] Modified with WINDZ for BFC compliance +0 !HISTORY 2003-08-01 [PTadmin] Official Update 2003-02 +0 !HISTORY 2007-06-24 [PTadmin] Header formatted for Contributor Agreement +0 !HISTORY 2008-07-01 [PTadmin] Official Update 2008-01 + + +2 24 1 1 1 -1 1 1 +2 24 -1 1 1 -1 1 -1 +2 24 -1 1 -1 1 1 -1 +2 24 1 1 -1 1 1 1 +2 24 1 0 1 -1 0 1 +2 24 -1 0 1 -1 0 -1 +2 24 -1 0 -1 1 0 -1 +2 24 1 0 -1 1 0 1 +2 24 1 0 1 1 1 1 +2 24 -1 0 1 -1 1 1 +2 24 1 0 -1 1 1 -1 +2 24 -1 0 -1 -1 1 -1 +4 16 1 1 1 1 1 -1 -1 1 -1 -1 1 1 +4 16 1 1 1 -1 1 1 -1 0 1 1 0 1 +4 16 -1 1 1 -1 1 -1 -1 0 -1 -1 0 1 +0 // 4 16 -1 1 -1 -1 0 -1 1 0 -1 1 1 -1 +4 16 1 1 -1 1 1 1 1 0 1 1 0 -1 +0 diff --git a/public/ldraw/parts/box5.dat b/public/ldraw/parts/box5.dat new file mode 100644 index 0000000..1ad1f2d --- /dev/null +++ b/public/ldraw/parts/box5.dat @@ -0,0 +1,33 @@ +0 Box with 5 Faces and All Edges +0 Name: box5.dat +0 Author: James Jessiman +0 !LDRAW_ORG Primitive UPDATE 2012-01 +0 !LICENSE Licensed under CC BY 4.0 : see CAreadme.txt + +0 BFC CERTIFY CCW + +0 !HISTORY 2002-04-03 [sbliss] Modified for BFC compliance +0 !HISTORY 2002-04-25 [PTadmin] Official Update 2002-02 +0 !HISTORY 2007-06-24 [PTadmin] Header formatted for Contributor Agreement +0 !HISTORY 2008-07-01 [PTadmin] Official Update 2008-01 +0 !HISTORY 2012-02-16 [Philo] Changed to CCW +0 !HISTORY 2012-03-30 [PTadmin] Official Update 2012-01 + + +2 24 1 1 1 -1 1 1 +2 24 -1 1 1 -1 1 -1 +2 24 -1 1 -1 1 1 -1 +2 24 1 1 -1 1 1 1 +2 24 1 0 1 -1 0 1 +2 24 -1 0 1 -1 0 -1 +2 24 -1 0 -1 1 0 -1 +2 24 1 0 -1 1 0 1 +2 24 1 0 1 1 1 1 +2 24 -1 0 1 -1 1 1 +2 24 1 0 -1 1 1 -1 +2 24 -1 0 -1 -1 1 -1 +4 16 -1 1 1 1 1 1 1 1 -1 -1 1 -1 +4 16 -1 1 1 -1 0 1 1 0 1 1 1 1 +4 16 -1 1 -1 -1 0 -1 -1 0 1 -1 1 1 +4 16 1 1 -1 1 0 -1 -1 0 -1 -1 1 -1 +4 16 1 1 1 1 0 1 1 0 -1 1 1 -1 diff --git a/public/ldraw/parts/empty.dat b/public/ldraw/parts/empty.dat new file mode 100644 index 0000000..5ab2006 --- /dev/null +++ b/public/ldraw/parts/empty.dat @@ -0,0 +1,19 @@ +0 Empty +0 Name: empty.dat +0 Author: Steffen [Steffen] +0 !LDRAW_ORG Primitive UPDATE 2025-08 +0 !LICENSE Licensed under CC BY 4.0 : see CAreadme.txt + +0 BFC CERTIFY CCW + +0 !HISTORY 2015-10-11 [PTadmin] Official Update 2015-01 +0 !HISTORY 2025-08-13 [OrionP] Fix comments +0 !HISTORY 2025-08-31 [OrionP] Official Update 2025-08 + +0 // Tool MLCad cannot handle really empty files. This file is used as a workaround. +0 // It exceptionally contains forbidden non-LDRAW standard syntax to satisfy MLCad +0 // until it is fixed OR a different editor has become the de-facto LDRAW standard. +0 // The line being used here is an "impossible" conditional line which never should be visible, +0 // additionally hidden by a syntax explicitly hiding it from displaying. + +0 MLCAD HIDE 5 24 0 0 0 0.0001 0 0 0.0001 -0.0001 0 0 0 0 \ No newline at end of file diff --git a/public/ldraw/parts/rect.dat b/public/ldraw/parts/rect.dat new file mode 100644 index 0000000..5bbe424 --- /dev/null +++ b/public/ldraw/parts/rect.dat @@ -0,0 +1,22 @@ +0 Rectangle +0 Name: rect.dat +0 Author: James Jessiman +0 !LDRAW_ORG Primitive UPDATE 2010-01 +0 !LICENSE Licensed under CC BY 4.0 : see CAreadme.txt + +0 BFC CERTIFY CCW + +0 !HISTORY 2002-04-05 [hafhead] Added BFC statement +0 !HISTORY 2002-04-25 [PTadmin] Official Update 2002-02 +0 !HISTORY 2007-06-24 [PTadmin] Header formatted for Contributor Agreement +0 !HISTORY 2008-07-01 [PTadmin] Official Update 2008-01 +0 !HISTORY 2010-01-17 [mikeheide] changed winding to CCW +0 !HISTORY 2010-04-05 [PTadmin] Official Update 2010-01 + + +2 24 1 0 1 -1 0 1 +2 24 -1 0 1 -1 0 -1 +2 24 -1 0 -1 1 0 -1 +2 24 1 0 -1 1 0 1 +4 16 -1 0 1 -1 0 -1 1 0 -1 1 0 1 +0 diff --git a/public/ldraw/parts/rect1.dat b/public/ldraw/parts/rect1.dat new file mode 100644 index 0000000..2172285 --- /dev/null +++ b/public/ldraw/parts/rect1.dat @@ -0,0 +1,18 @@ +0 Rectangle with 1 Edge +0 Name: rect1.dat +0 Author: Chris Dee [cwdee] +0 !LDRAW_ORG Primitive UPDATE 2010-01 +0 !LICENSE Licensed under CC BY 4.0 : see CAreadme.txt + +0 BFC CERTIFY CCW + +0 !HISTORY 2003-12-19 [PTadmin] Official Update 2003-03 +0 !HISTORY 2007-06-24 [PTadmin] Header formatted for Contributor Agreement +0 !HISTORY 2008-07-01 [PTadmin] Official Update 2008-01 +0 !HISTORY 2010-01-17 [mikeheide] changed winding to CCW +0 !HISTORY 2010-04-05 [PTadmin] Official Update 2010-01 + + +2 24 1 0 -1 1 0 1 +4 16 -1 0 1 -1 0 -1 1 0 -1 1 0 1 +0 diff --git a/public/ldraw/parts/s/3001s01.dat b/public/ldraw/parts/s/3001s01.dat new file mode 100644 index 0000000..2a8da84 --- /dev/null +++ b/public/ldraw/parts/s/3001s01.dat @@ -0,0 +1,40 @@ +0 ~Brick 2 x 4 without Front and Back Faces +0 Name: s\3001s01.dat +0 Author: James Jessiman +0 !LDRAW_ORG Subpart UPDATE 2004-03 +0 !LICENSE Licensed under CC BY 4.0 : see CAreadme.txt + +0 BFC CERTIFY CCW + +0 !HISTORY 2002-05-07 {unknown} BFC certification +0 !HISTORY 2002-05-07 [westrate] Unknown change +0 !HISTORY 2004-09-15 [PTadmin] Official Update 2004-03 +0 !HISTORY 2007-08-29 [PTadmin] Header formatted for Contributor Agreement +0 !HISTORY 2008-07-01 [PTadmin] Official Update 2008-01 + + +0 // Uncomment for front and back faces: +0 // 4 16 40 0 -20 -40 0 -20 -40 24 -20 40 24 -20 +0 // 4 16 40 0 20 -40 0 20 -40 24 20 40 24 + +1 16 20 4 0 1 0 0 0 -5 0 0 0 1 stud4.dat +1 16 0 4 0 1 0 0 0 -5 0 0 0 1 stud4.dat +1 16 -20 4 0 1 0 0 0 -5 0 0 0 1 stud4.dat +0 BFC INVERTNEXT +1 16 0 24 0 36 0 0 0 -20 0 0 0 16 box5.dat +4 16 40 24 20 36 24 16 -36 24 16 -40 24 20 +4 16 -40 24 20 -36 24 16 -36 24 -16 -40 24 -20 +4 16 -40 24 -20 -36 24 -16 36 24 -16 40 24 -20 +4 16 40 24 -20 36 24 -16 36 24 16 40 24 20 +1 16 0 24 0 0 0 40 0 -24 0 -20 0 0 box3u2p.dat +2 24 -40 24 -20 40 24 -20 +2 24 -40 24 20 40 24 20 +1 16 30 0 10 1 0 0 0 1 0 0 0 1 stud.dat +1 16 10 0 10 1 0 0 0 1 0 0 0 1 stud.dat +1 16 -10 0 10 1 0 0 0 1 0 0 0 1 stud.dat +1 16 -30 0 10 1 0 0 0 1 0 0 0 1 stud.dat +1 16 30 0 -10 1 0 0 0 1 0 0 0 1 stud.dat +1 16 10 0 -10 1 0 0 0 1 0 0 0 1 stud.dat +1 16 -10 0 -10 1 0 0 0 1 0 0 0 1 stud.dat +1 16 -30 0 -10 1 0 0 0 1 0 0 0 1 stud.dat +0 diff --git a/public/ldraw/parts/s/3003s01.dat b/public/ldraw/parts/s/3003s01.dat new file mode 100644 index 0000000..8f4f137 --- /dev/null +++ b/public/ldraw/parts/s/3003s01.dat @@ -0,0 +1,15 @@ +0 ~Brick 2 x 2 without Front Face +0 Name: s\3003s01.dat +0 Author: Steffen [Steffen] +0 !LDRAW_ORG Subpart UPDATE 2013-02 +0 !LICENSE Licensed under CC BY 4.0 : see CAreadme.txt + +0 BFC CERTIFY CCW + +0 !HISTORY 2009-05-02 [PTadmin] Official Update 2009-01 +0 !HISTORY 2013-04-02 [Steffen] used s\3003s02.dat +0 !HISTORY 2013-12-23 [PTadmin] Official Update 2013-02 + + +1 16 0 0 0 1 0 0 0 1 0 0 0 1 s\3003s02.dat +4 16 20 24 20 -20 24 20 -20 0 20 20 0 20 diff --git a/public/ldraw/parts/s/3003s02.dat b/public/ldraw/parts/s/3003s02.dat new file mode 100644 index 0000000..a29bdac --- /dev/null +++ b/public/ldraw/parts/s/3003s02.dat @@ -0,0 +1,22 @@ +0 ~Brick 2 x 2 without Front and Back Faces +0 Name: s\3003s02.dat +0 Author: Owen Burgoyne [C3POwen] +0 !LDRAW_ORG Subpart UPDATE 2013-02 +0 !LICENSE Licensed under CC BY 4.0 : see CAreadme.txt + +0 BFC CERTIFY CCW + +0 !HISTORY 2013-12-23 [PTadmin] Official Update 2013-02 + + +1 16 0 4 0 1 0 0 0 -5 0 0 0 1 stud4.dat +0 BFC INVERTNEXT +1 16 0 24 0 16 0 0 0 -20 0 0 0 16 box5.dat +4 16 20 24 20 16 24 16 -16 24 16 -20 24 20 +4 16 -20 24 20 -16 24 16 -16 24 -16 -20 24 -20 +4 16 -20 24 -20 -16 24 -16 16 24 -16 20 24 -20 +4 16 20 24 -20 16 24 -16 16 24 16 20 24 20 +2 24 20 24 20 -20 24 20 +2 24 20 24 -20 -20 24 -20 +1 16 0 24 0 0 0 20 0 -24 0 -20 0 0 box3u2p.dat +1 16 0 0 0 1 0 0 0 1 0 0 0 1 stug-2x2.dat diff --git a/public/ldraw/parts/s/3004s01.dat b/public/ldraw/parts/s/3004s01.dat new file mode 100644 index 0000000..cc8d0f9 --- /dev/null +++ b/public/ldraw/parts/s/3004s01.dat @@ -0,0 +1,25 @@ +0 ~Brick 1 x 2 without Front Face +0 Name: s\3004s01.dat +0 Author: James Jessiman +0 !LDRAW_ORG Subpart UPDATE 2003-03 +0 !LICENSE Licensed under CC BY 4.0 : see CAreadme.txt + +0 BFC CERTIFY CCW + +0 !HISTORY 2003-09-07 [jriley] Subfiling, BFC +0 !HISTORY 2003-12-19 [PTadmin] Official Update 2003-03 +0 !HISTORY 2007-08-29 [PTadmin] Header formatted for Contributor Agreement +0 !HISTORY 2008-07-01 [PTadmin] Official Update 2008-01 + + +1 16 0 4 0 1 0 0 0 -5 0 0 0 1 stud3.dat +0 BFC INVERTNEXT +1 16 0 24 0 16 0 0 0 -20 0 0 0 6 box5.dat +4 16 20 24 10 16 24 6 -16 24 6 -20 24 10 +4 16 -20 24 10 -16 24 6 -16 24 -6 -20 24 -10 +4 16 -20 24 -10 -16 24 -6 16 24 -6 20 24 -10 +4 16 20 24 -10 16 24 -6 16 24 6 20 24 10 +1 16 0 24 0 20 0 0 0 -24 0 0 0 10 box4t.dat +1 16 10 0 0 1 0 0 0 1 0 0 0 1 stud.dat +1 16 -10 0 0 1 0 0 0 1 0 0 0 1 stud.dat +0 diff --git a/public/ldraw/parts/s/3005s01.dat b/public/ldraw/parts/s/3005s01.dat new file mode 100644 index 0000000..e6c1740 --- /dev/null +++ b/public/ldraw/parts/s/3005s01.dat @@ -0,0 +1,24 @@ +0 ~Brick 1 x 1 without Front Face +0 Name: s\3005s01.dat +0 Author: Willy Tschager [Holly-Wood] +0 !LDRAW_ORG Subpart UPDATE 2024-04 +0 !LICENSE Licensed under CC BY 4.0 : see CAreadme.txt + +0 BFC CERTIFY CCW + +0 !HISTORY 2003-09-07 [jriley] BFCed & Subfiled +0 !HISTORY 2004-03-02 [PTadmin] Official Update 2004-01 +0 !HISTORY 2007-08-29 [PTadmin] Header formatted for Contributor Agreement +0 !HISTORY 2008-07-01 [PTadmin] Official Update 2008-01 +0 !HISTORY 2024-03-15 [Holly-Wood] Complete re-write, original by jriley +0 !HISTORY 2024-05-28 [OrionP] Official Update 2024-04 + +1 16 0 0 0 0 0 1 0 1 0 -1 0 0 stud.dat +1 16 0 24 0 -10 0 0 0 -24 0 0 0 10 box4t.dat +0 BFC INVERTNEXT +1 16 0 24 0 -6 0 0 0 -20 0 0 0 6 box5.dat + +4 16 -6 24 -6 6 24 -6 10 24 -10 -10 24 -10 +4 16 10 24 -10 6 24 -6 6 24 6 10 24 10 +4 16 6 24 6 -6 24 6 -10 24 10 10 24 10 +4 16 -10 24 10 -6 24 6 -6 24 -6 -10 24 -10 diff --git a/public/ldraw/parts/s/3010s01.dat b/public/ldraw/parts/s/3010s01.dat new file mode 100644 index 0000000..9d270ce --- /dev/null +++ b/public/ldraw/parts/s/3010s01.dat @@ -0,0 +1,25 @@ +0 ~Brick 1 x 4 without Front Face +0 Name: s\3010s01.dat +0 Author: Willy Tschager [Holly-Wood] +0 !LDRAW_ORG Subpart UPDATE 2024-03 +0 !LICENSE Licensed under CC BY 4.0 : see CAreadme.txt + +0 BFC CERTIFY CCW + +0 !HISTORY 2003-08-01 [PTadmin] Official Update 2003-02 +0 !HISTORY 2007-08-29 [PTadmin] Header formatted for Contributor Agreement +0 !HISTORY 2008-07-01 [PTadmin] Official Update 2008-01 +0 !HISTORY 2024-03-15 [Holly-Wood] Complete re-write, original by hafhead +0 !HISTORY 2024-04-28 [OrionP] Official Update 2024-03 + +1 16 0 0 0 1 0 0 0 1 0 0 0 1 stug-1x4.dat +1 16 0 4 0 1 0 0 0 -5 0 0 0 1 stug3-1x3.dat + +1 16 0 24 0 -40 0 0 0 -24 0 0 0 10 box4t.dat +0 BFC INVERTNEXT +1 16 0 24 0 -36 0 0 0 -20 0 0 0 6 box5.dat + +4 16 -36 24 -6 36 24 -6 40 24 -10 -40 24 -10 +4 16 40 24 -10 36 24 -6 36 24 6 40 24 10 +4 16 40 24 10 36 24 6 -36 24 6 -40 24 10 +4 16 -40 24 10 -36 24 6 -36 24 -6 -40 24 -10 diff --git a/public/ldraw/parts/s/3023bs01.dat b/public/ldraw/parts/s/3023bs01.dat new file mode 100644 index 0000000..4a50a7c --- /dev/null +++ b/public/ldraw/parts/s/3023bs01.dat @@ -0,0 +1,24 @@ +0 ~Plate 1 x 2 without Front Face +0 Name: s\3023bs01.dat +0 Author: Massimo Maso [Sirio] +0 !LDRAW_ORG Subpart UPDATE 2023-03 +0 !LICENSE Licensed under CC BY 4.0 : see CAreadme.txt + +0 BFC CERTIFY CCW + +0 !HISTORY 2022-01-14 [PTadmin] Official Update 2022-01 +0 !HISTORY 2023-05-27 [OrionP] Moved from s\3023s01.dat +0 !HISTORY 2023-06-24 [OrionP] Official Update 2023-03 + + +0 // Primitves +1 16 0 4 0 1 0 0 0 -1 0 0 0 1 stud3.dat +0 BFC INVERTNEXT +1 16 0 8 0 16 0 0 0 -4 0 0 0 6 box5.dat +1 16 0 8 0 20 0 0 0 -8 0 0 0 10 box4t.dat +1 16 0 0 0 1 0 0 0 1 0 0 0 1 stug-1x2.dat +0 // Faces +4 16 20 8 10 16 8 6 -16 8 6 -20 8 10 +4 16 -20 8 10 -16 8 6 -16 8 -6 -20 8 -10 +4 16 -20 8 -10 -16 8 -6 16 8 -6 20 8 -10 +4 16 20 8 -10 16 8 -6 16 8 6 20 8 10 diff --git a/public/ldraw/parts/s/3024s01.dat b/public/ldraw/parts/s/3024s01.dat new file mode 100644 index 0000000..565bd84 --- /dev/null +++ b/public/ldraw/parts/s/3024s01.dat @@ -0,0 +1,19 @@ +0 ~Plate 1 x 1 without Front Face +0 Name: s\3024s01.dat +0 Author: Tore Eriksson [Tore_Eriksson] +0 !LDRAW_ORG Subpart UPDATE 2012-03 +0 !LICENSE Licensed under CC BY 4.0 : see CAreadme.txt + +0 BFC CERTIFY CCW + +0 !HISTORY 2012-12-28 [PTadmin] Official Update 2012-03 + + +0 BFC INVERTNEXT +1 16 0 8 0 0 0 6 0 -4 0 -6 0 0 box5.dat +4 16 10 8 -10 6 8 -6 6 8 6 10 8 10 +4 16 10 8 10 6 8 6 -6 8 6 -10 8 10 +4 16 -10 8 10 -6 8 6 -6 8 -6 -10 8 -10 +4 16 -10 8 -10 -6 8 -6 6 8 -6 10 8 -10 +1 16 0 8 0 10 0 0 0 -8 0 0 0 10 box4t.dat +1 16 0 0 0 0 0 1 0 1 0 -1 0 0 stud.dat diff --git a/public/ldraw/parts/s/3039s01.dat b/public/ldraw/parts/s/3039s01.dat new file mode 100644 index 0000000..069ab3f --- /dev/null +++ b/public/ldraw/parts/s/3039s01.dat @@ -0,0 +1,91 @@ +0 ~Slope Brick 45 2 x 2 without Front Face +0 Name: s\3039s01.dat +0 Author: Willy Tschager [Holly-Wood] +0 !LDRAW_ORG Subpart UPDATE 2024-02 +0 !LICENSE Licensed under CC BY 4.0 : see CAreadme.txt + +0 BFC CERTIFY CCW + +0 !HISTORY 1999-12-31 [PTadmin] Official Update 1999-06 +0 !HISTORY 2003-07-02 [Steffen] BFCed; change in part name: "w/o" --> "without" +0 !HISTORY 2003-12-19 [PTadmin] Official Update 2003-03 +0 !HISTORY 2007-08-30 [PTadmin] Header formatted for Contributor Agreement +0 !HISTORY 2008-07-01 [PTadmin] Official Update 2008-01 +0 !HISTORY 2024-03-14 [Holly-Wood] Complete re-write, original by jvan +0 !HISTORY 2024-03-24 [OrionP] Official Update 2024-02 + +1 16 0 0 0 1 0 0 0 1 0 0 0 1 stug-1x2.dat + +1 16 0 12 -10 -1 0 0 0 -3 0 0 0 1 stud4a.dat + +0 BFC INVERTNEXT +1 16 0 4 -10 6 0 0 0 8 0 0 0 6 2-4cyli.dat +0 BFC INVERTNEXT +1 16 0 10 -10 6 0 0 0 2 0 0 0 -6 2-4cyli.dat + +0 BFC INVERTNEXT +1 16 0 10 -10 0 0 6 0 -6 0 -6 0 0 1-4cyls.dat +0 BFC INVERTNEXT +1 16 0 10 -10 0 0 -6 0 -6 0 -6 0 0 1-4cyls.dat + +1 16 0 4 -10 8 0 0 0 8 0 0 0 8 2-4cyli.dat + +1 16 0 12 -10 0 0 8 0 -8 0 -8 0 0 1-4cyls.dat +1 16 0 12 -10 0 0 -8 0 -8 0 -8 0 0 1-4cyls.dat + +1 16 0 4 -10 6 0 0 0 1 0 0 0 6 2-4edge.dat +1 16 0 4 -10 6 0 0 0 1 6 0 0 -6 2-4edge.dat + +1 16 0 4 -10 8 0 0 0 1 0 0 0 8 2-4edge.dat +1 16 0 4 -10 8 0 0 0 1 8 0 0 -8 2-4edge.dat + +1 16 0 4 -10 6 0 0 0 -1 0 0 0 6 2-4chrd.dat +1 16 0 4 -10 8 0 0 0 -1 0 0 0 8 2-4ndis.dat + +1 16 0 4 -10 6 0 0 0 -1 6 0 0 -6 2-4chrd.dat +1 16 0 4 -10 8 0 0 0 -1 8 0 0 -8 2-4ndis.dat + +0 BFC INVERTNEXT +1 16 0 14 -10 0 0 16 10 0 0 0 16 0 box3u4a.dat + +4 16 -8 4 -2 -8 4 -10 -16 4 -10 -16 4 6 +4 16 8 4 -10 8 4 -2 16 4 6 16 4 -10 +4 16 16 4 6 8 4 -2 0 4 -2 -16 4 6 +3 16 -8 4 -2 -16 4 6 0 4 -2 + +1 16 0 22 -26 0 0 16 -2 0 0 0 -1 0 rect.dat + +4 16 8 12 -18 8 4 -10 16 4 -10 16 20 -26 +4 16 0 12 -18 8 12 -18 16 20 -26 -16 20 -26 +3 16 0 12 -18 -16 20 -26 -8 12 -18 +4 16 -16 20 -26 -16 4 -10 -8 4 -10 -8 12 -18 +4 16 16 4 -10 16 24 -10 16 24 -26 16 20 -26 +4 16 -16 24 -26 -16 24 -10 -16 4 -10 -16 20 -26 + +2 24 -16 4 -10 -8 4 -10 +2 24 8 4 -10 16 4 -10 +2 24 -6 4 -10 6 4 -10 +2 24 -16 24 -10 -16 24 -26 +2 24 -16 4 -10 -16 20 -26 +2 24 16 24 -10 16 24 -26 +2 24 16 4 -10 16 20 -26 + +1 16 0 24 0 20 0 0 0 -24 0 0 0 10 box4-4a.dat + +1 16 0 22 -30 0 0 -20 -2 0 0 0 1 0 rect.dat + +4 16 20 24 -10 20 0 -10 20 20 -30 20 24 -30 +4 16 -20 20 -30 -20 0 -10 -20 24 -10 -20 24 -30 + +2 24 -20 24 -10 -20 24 -30 +2 24 20 24 -10 20 24 -30 +2 24 -20 0 -10 -20 20 -30 +2 24 20 0 -10 20 20 -30 +2 24 -20 0 -10 20 0 -10 + +4 16 -20 24 -30 -16 24 -26 16 24 -26 20 24 -30 +4 16 20 24 -30 16 24 -26 16 24 -10 20 24 -10 +4 16 20 24 -10 16 24 -10 16 24 6 20 24 10 +4 16 -20 24 -10 -16 24 -10 -16 24 -26 -20 24 -30 +4 16 -16 24 6 -16 24 -10 -20 24 -10 -20 24 10 +4 16 16 24 6 -16 24 6 -20 24 10 20 24 10 diff --git a/public/ldraw/parts/s/3040s01.dat b/public/ldraw/parts/s/3040s01.dat new file mode 100644 index 0000000..82641ba --- /dev/null +++ b/public/ldraw/parts/s/3040s01.dat @@ -0,0 +1,75 @@ +0 ~Slope Brick 45 2 x 1 without Front Face +0 Name: s\3040s01.dat +0 Author: Orion Pobursky [OrionP] +0 !LDRAW_ORG Subpart UPDATE 2004-01 +0 !LICENSE Licensed under CC BY 4.0 : see CAreadme.txt + +0 BFC CERTIFY CCW + +0 !HISTORY 2003-07-02 [Steffen] BFCed; removed matrix all zero "errors" +0 !HISTORY 2004-03-02 [PTadmin] Official Update 2004-01 +0 !HISTORY 2007-08-30 [PTadmin] Header formatted for Contributor Agreement +0 !HISTORY 2008-07-01 [PTadmin] Official Update 2008-01 + + +0 // Uncomment for front face +0 // 4 16 10 20 -30 10 0 -10 -10 0 -10 -10 20 -30 + +1 16 0 20 -10 1 0 0 0 -1 0 0 0 1 stud3a.dat +1 16 0 4 -10 4 0 0 0 4 0 0 0 4 2-4edge.dat +1 16 0 4 -10 4 0 0 0 99 4 0 0 -4 2-4edge.dat +1 16 0 8 -10 0 0 4 0 -4 0 -4 0 0 1-4cyls.dat +1 16 0 8 -10 0 0 -4 0 -4 0 -4 0 0 1-4cyls.dat +1 16 0 4 -10 4 0 0 0 16 0 0 0 4 2-4cyli.dat +1 16 0 8 -10 4 0 0 0 12 0 0 0 -4 2-4cyli.dat +2 24 6 24 6 -6 24 6 +2 24 -6 24 6 -6 24 -26 +2 24 -6 24 -26 6 24 -26 +2 24 6 24 -26 6 24 6 +2 24 10 24 10 -10 24 10 +2 24 -10 24 10 -10 24 -30 +2 24 -10 24 -30 10 24 -30 +2 24 10 24 -30 10 24 10 +2 24 6 24 6 6 4 6 +2 24 -6 24 6 -6 4 6 +2 24 6 24 -26 6 20 -26 +2 24 -6 24 -26 -6 20 -26 +2 24 6 4 6 -6 4 6 +2 24 6 4 -10 -6 4 -10 +2 24 6 20 -26 -6 20 -26 +2 24 6 4 6 6 4 -10 +2 24 -6 4 6 -6 4 -10 +2 24 6 20 -26 6 4 -10 +2 24 -6 20 -26 -6 4 -10 +2 24 10 24 10 10 0 10 +2 24 -10 24 10 -10 0 10 +2 24 10 24 -30 10 20 -30 +2 24 -10 24 -30 -10 20 -30 +2 24 10 0 10 -10 0 10 +2 24 10 0 -10 -10 0 -10 +2 24 10 20 -30 -10 20 -30 +2 24 10 0 10 10 0 -10 +2 24 -10 0 10 -10 0 -10 +2 24 10 20 -30 10 0 -10 +2 24 -10 20 -30 -10 0 -10 +4 16 10 24 10 6 24 6 -6 24 6 -10 24 10 +4 16 -10 24 10 -6 24 6 -6 24 -26 -10 24 -30 +4 16 -10 24 -30 -6 24 -26 6 24 -26 10 24 -30 +4 16 10 24 -30 6 24 -26 6 24 6 10 24 10 +4 16 6 4 6 6 4 -10 -6 4 -10 -6 4 6 +4 16 10 0 -10 10 0 10 -10 0 10 -10 0 -10 +4 16 -10 24 10 -10 0 10 10 0 10 10 24 10 +4 16 6 24 6 6 4 6 -6 4 6 -6 24 6 +4 16 6 20 -26 6 24 -26 -6 24 -26 -6 20 -26 +4 16 10 24 -30 10 20 -30 -10 20 -30 -10 24 -30 +4 16 10 24 10 10 0 10 10 20 -30 10 24 -30 +3 16 10 0 10 10 0 -10 10 20 -30 +4 16 6 20 -26 6 4 6 6 24 6 6 24 -26 +3 16 6 20 -26 6 4 -10 6 4 6 +4 16 -6 24 6 -6 4 6 -6 20 -26 -6 24 -26 +3 16 -6 4 6 -6 4 -10 -6 20 -26 +4 16 -10 20 -30 -10 0 10 -10 24 10 -10 24 -30 +3 16 -10 20 -30 -10 0 -10 -10 0 10 +4 16 -6 4 -10 6 4 -10 6 20 -26 -6 20 -26 +1 16 0 0 0 1 0 0 0 1 0 0 0 1 stud.dat +0 diff --git a/public/ldraw/parts/s/3062bs01.dat b/public/ldraw/parts/s/3062bs01.dat new file mode 100644 index 0000000..c83ab00 --- /dev/null +++ b/public/ldraw/parts/s/3062bs01.dat @@ -0,0 +1,24 @@ +0 ~Brick 1 x 1 Round with Hollow Stud without Outer Surface +0 Name: s\3062bs01.dat +0 Author: Takeshi Takahashi [RainbowDolphin] +0 !LDRAW_ORG Subpart UPDATE 2022-02 +0 !LICENSE Licensed under CC BY 4.0 : see CAreadme.txt + +0 BFC CERTIFY CCW + +0 !HISTORY 2022-03-06 [PTadmin] Official Update 2022-02 + + +1 16 0 4 0 4 0 0 0 1 0 0 0 4 4-4edge.dat +1 16 0 19 0 10 0 0 0 1 0 0 0 10 4-4edge.dat +1 16 0 0 0 10 0 0 0 1 0 0 0 10 4-4edge.dat +1 16 0 0 0 6 0 0 0 1 0 0 0 6 4-4edge.dat +0 BFC INVERTNEXT +1 16 0 0 0 4 0 0 0 4 0 0 0 4 4-4cyli.dat +1 16 0 0 0 1 0 0 0 1 0 0 0 1 stud2a.dat +1 16 0 0 0 2 0 0 0 1 0 0 0 2 4-4ring3.dat +1 16 0 4 0 2 0 0 0 -1 0 0 0 2 4-4ring2.dat +1 16 0 0 0 2 0 0 0 1 0 0 0 2 4-4ring4.dat +1 16 0 19 0 2 0 0 0 -1 0 0 0 2 4-4ring4.dat +1 16 0 19 0 8 0 0 0 5 0 0 0 8 4-4cylo.dat +1 16 0 4 0 1 0 0 0 -5 0 0 0 -1 stud4od.dat diff --git a/public/ldraw/parts/s/3068bs01.dat b/public/ldraw/parts/s/3068bs01.dat new file mode 100644 index 0000000..cf3cfdf --- /dev/null +++ b/public/ldraw/parts/s/3068bs01.dat @@ -0,0 +1,37 @@ +0 ~Tile 2 x 2 with Groove without Face +0 Name: s\3068bs01.dat +0 Author: Willy Tschager [Holly-Wood] +0 !LDRAW_ORG Subpart UPDATE 2024-03 +0 !LICENSE Licensed under CC BY 4.0 : see CAreadme.txt + +0 BFC CERTIFY CCW + +0 !HISTORY 2002-04-02 [sbliss] Modified for BFC compliance +0 !HISTORY 2002-04-25 [PTadmin] Official Update 2002-02 +0 !HISTORY 2007-08-30 [PTadmin] Header formatted for Contributor Agreement +0 !HISTORY 2008-07-01 [PTadmin] Official Update 2008-01 +0 !HISTORY 2024-03-07 [Holly-Wood] Complete re-write, original by BrickCaster +0 !HISTORY 2024-04-28 [OrionP] Official Update 2024-03 + +1 16 0 0 0 20 0 0 0 7 0 0 0 20 box4.dat +1 16 0 7 0 19 0 0 0 1 0 0 0 19 box4.dat +0 BFC INVERTNEXT +1 16 0 4 0 16 0 0 0 4 0 0 0 16 box4.dat +1 16 0 4 0 1 0 0 0 -1 0 0 0 1 stud4.dat +1 16 0 4 0 6 0 0 0 -1 0 0 0 6 4-4disc.dat +1 16 0 4 0 8 0 0 0 -1 0 0 0 8 4-4ndis.dat + +4 16 -19 7 -19 19 7 -19 20 7 -20 -20 7 -20 +4 16 20 7 -20 19 7 -19 19 7 19 20 7 20 +4 16 20 7 20 19 7 19 -19 7 19 -20 7 20 +4 16 -20 7 20 -19 7 19 -19 7 -19 -20 7 -20 + +4 16 -16 8 -16 16 8 -16 19 8 -19 -19 8 -19 +4 16 19 8 -19 16 8 -16 16 8 16 19 8 19 +4 16 19 8 19 16 8 16 -16 8 16 -19 8 19 +4 16 -19 8 19 -16 8 16 -16 8 -16 -19 8 -19 + +4 16 -8 4 -8 8 4 -8 16 4 -16 -16 4 -16 +4 16 16 4 -16 8 4 -8 8 4 8 16 4 16 +4 16 16 4 16 8 4 8 -8 4 8 -16 4 16 +4 16 -16 4 16 -8 4 8 -8 4 -8 -16 4 -16 diff --git a/public/ldraw/parts/s/3069bs01.dat b/public/ldraw/parts/s/3069bs01.dat new file mode 100644 index 0000000..82e3af3 --- /dev/null +++ b/public/ldraw/parts/s/3069bs01.dat @@ -0,0 +1,24 @@ +0 ~Tile 1 x 2 with Groove without Top Face +0 Name: s\3069bs01.dat +0 Author: Santeri Piippo [arezey] +0 !LDRAW_ORG Subpart UPDATE 2010-02 +0 !LICENSE Licensed under CC BY 4.0 : see CAreadme.txt + +0 BFC CERTIFY CCW + +0 !HISTORY 2010-07-05 [PTadmin] Official Update 2010-02 + + +1 16 0 0 0 20 0 0 0 7 0 0 0 10 box4.dat +1 16 0 7 0 19 0 0 0 1 0 0 0 9 box4.dat +0 BFC INVERTNEXT +1 16 0 8 0 16 0 0 0 -4 0 0 0 6 box5.dat +4 16 -19 8 9 -16 8 6 -16 8 -6 -19 8 -9 +4 16 19 8 -9 16 8 -6 16 8 6 19 8 9 +4 16 19 8 9 16 8 6 -16 8 6 -19 8 9 +4 16 -19 8 -9 -16 8 -6 16 8 -6 19 8 -9 +4 16 -20 7 10 -19 7 9 -19 7 -9 -20 7 -10 +4 16 20 7 -10 19 7 -9 19 7 9 20 7 10 +4 16 20 7 10 19 7 9 -19 7 9 -20 7 10 +4 16 -20 7 -10 -19 7 -9 19 7 -9 20 7 -10 +0 // diff --git a/public/ldraw/parts/s/3941s01.dat b/public/ldraw/parts/s/3941s01.dat new file mode 100644 index 0000000..32a68b8 --- /dev/null +++ b/public/ldraw/parts/s/3941s01.dat @@ -0,0 +1,99 @@ +0 ~Brick 2 x 2 Round without Reinforcement without Outer Surface +0 Name: s\3941s01.dat +0 Author: Gerald Lasser [GeraldLasser] +0 !LDRAW_ORG Subpart UPDATE 2020-01 +0 !LICENSE Licensed under CC BY 4.0 : see CAreadme.txt + +0 BFC CERTIFY CCW + +0 !HISTORY 2018-01-21 [GeraldLasser] Removed Surface for Printed and Modified Versions +0 !HISTORY 2018-02-19 [MagFors] used more primitives +0 !HISTORY 2018-03-30 [MagFors] used stug10-2x2 primitive +0 !HISTORY 2019-06-28 [PTadmin] Official Update 2019-01 +0 !HISTORY 2020-06-28 [PTadmin] Official Update 2020-01 + + +1 16 0 20 0 1 0 0 0 -1 0 0 0 1 stud4a.dat +1 16 0 4 0 8 0 0 0 1 0 0 0 8 4-4edge.dat +1 16 0 4 0 8 0 0 0 16 0 0 0 8 4-4cyli.dat +1 16 0 20 0 1 0 0 0 1 0 0 0 1 axlehol3.dat +1 16 0 0 0 1 0 0 0 20 0 0 0 1 axlehole.dat +1 16 0 0 0 1 0 0 0 1 0 0 0 1 axlehol2.dat +1 16 0 0 0 20 0 0 0 1 0 0 0 20 4-4edge.dat +1 16 0 20 0 18.47759 0 7.65367 0 4 0 -7.65367 0 18.47759 1-8cyli.dat +1 16 0 24 0 18.47759 0 7.65367 0 1 0 -7.65367 0 18.47759 1-8edge.dat +1 16 0 24 0 18.47759 0 7.65367 0 -1 0 -7.65367 0 18.47759 1-8chrd.dat +1 16 0 20 0 -7.65367 0 18.47759 0 4 0 -18.47759 0 -7.65367 1-8cyli.dat +1 16 0 24 0 -7.65367 0 18.47759 0 1 0 -18.47759 0 -7.65367 1-8edge.dat +1 16 0 24 0 -7.65367 0 18.47759 0 -1 0 -18.47759 0 -7.65367 1-8chrd.dat +1 16 0 20 0 -18.47759 0 -7.65367 0 4 0 7.65367 0 -18.47759 1-8cyli.dat +1 16 0 24 0 -18.47759 0 -7.65367 0 1 0 7.65367 0 -18.47759 1-8edge.dat +1 16 0 24 0 -18.47759 0 -7.65367 0 -1 0 7.65367 0 -18.47759 1-8chrd.dat +1 16 0 20 0 7.65367 0 -18.47759 0 4 0 18.47759 0 7.65367 1-8cyli.dat +1 16 0 24 0 7.65367 0 -18.47759 0 1 0 18.47759 0 7.65367 1-8edge.dat +1 16 0 24 0 7.65367 0 -18.47759 0 -1 0 18.47759 0 7.65367 1-8chrd.dat + +1 16 16 22 0 0 1 0 -2 0 0 0 0 11.36 rect.dat +1 16 0 22 -16 0 0 11.36 -2 0 0 0 -1 0 rect.dat +1 16 -16 22 0 0 -1 0 -2 0 0 0 0 -11.36 rect.dat +1 16 0 22 16 0 0 -11.36 -2 0 0 0 1 0 rect.dat +4 16 11.36 24 16 -11.36 24 16 -7.65 24 18.48 7.65 24 18.48 +4 16 -16 24 11.36 -16 24 -11.36 -18.48 24 -7.65 -18.48 24 7.65 +4 16 -11.36 24 -16 11.36 24 -16 7.65 24 -18.48 -7.65 24 -18.48 +4 16 16 24 -11.36 16 24 11.36 18.48 24 7.65 18.48 24 -7.65 +1 16 17.24 22 9.505 0 -1 -1.24 2 0 0 0 0 1.855 rect1.dat +1 16 9.505 22 17.24 0 0 -1.855 2 0 0 0 -1 1.24 rect1.dat +1 16 -17.24 22 9.505 0 1 -1.24 2 0 0 0 0 -1.855 rect1.dat +1 16 -9.505 22 17.24 0 0 -1.855 2 0 0 0 -1 -1.24 rect1.dat +1 16 17.24 22 -9.505 0 -1 1.24 2 0 0 0 0 1.855 rect1.dat +1 16 9.505 22 -17.24 0 0 1.855 2 0 0 0 1 1.24 rect1.dat +1 16 -17.24 22 -9.505 0 1 1.24 2 0 0 0 0 -1.855 rect1.dat +1 16 -9.505 22 -17.24 0 0 1.855 2 0 0 0 1 -1.24 rect1.dat +2 24 16 20 11.36 14.14 20 14.14 +2 24 14.14 20 14.14 11.36 20 16 +2 24 -16 20 11.36 -14.14 20 14.14 +2 24 -14.14 20 14.14 -11.36 20 16 +2 24 16 20 -11.36 14.14 20 -14.14 +2 24 14.14 20 -14.14 11.36 20 -16 +2 24 -16 20 -11.36 -14.14 20 -14.14 +2 24 -14.14 20 -14.14 -11.36 20 -16 + +1 16 0 4 0 8 0 0 0 -1 0 0 0 8 4-4ring1.dat +0 BFC INVERTNEXT +1 16 0 4 0 16 0 0 0 16 0 0 0 16 4-4cylo.dat +3 16 16 20 0 14.78 20 6.12 16 20 11.36 +4 16 14.78 20 6.12 11.31 20 11.31 14.14 20 14.14 16 20 11.36 +4 16 6.12 20 14.78 11.36 20 16 14.14 20 14.14 11.31 20 11.31 +3 16 0 20 16 11.36 20 16 6.12 20 14.78 +3 16 -16 20 0 -16 20 11.36 -14.78 20 6.12 +4 16 -14.78 20 6.12 -16 20 11.36 -14.14 20 14.14 -11.31 20 11.31 +4 16 -6.12 20 14.78 -11.31 20 11.31 -14.14 20 14.14 -11.36 20 16 +3 16 0 20 16 -6.12 20 14.78 -11.36 20 16 +3 16 16 20 0 16 20 -11.36 14.78 20 -6.12 +4 16 14.78 20 -6.12 16 20 -11.36 14.14 20 -14.14 11.31 20 -11.31 +4 16 6.12 20 -14.78 11.31 20 -11.31 14.14 20 -14.14 11.36 20 -16 +3 16 0 20 -16 6.12 20 -14.78 11.36 20 -16 +3 16 -16 20 0 -14.78 20 -6.12 -16 20 -11.36 +4 16 -14.78 20 -6.12 -11.31 20 -11.31 -14.14 20 -14.14 -16 20 -11.36 +4 16 -6.12 20 -14.78 -11.36 20 -16 -14.14 20 -14.14 -11.31 20 -11.31 +3 16 0 20 -16 -11.36 20 -16 -6.12 20 -14.78 +5 24 -7.65 20 18.48 -7.65 24 18.48 -14.14 20 14.14 0 20 20 +5 24 -18.48 20 7.65 -18.48 24 7.65 -20 20 0 -14.14 20 14.14 +5 24 -18.48 20 -7.65 -18.48 24 -7.65 -14.14 20 -14.14 -20 20 0 +5 24 -7.65 20 -18.48 -7.65 24 -18.48 0 20 -20 -14.14 20 -14.14 +5 24 7.65 20 -18.48 7.65 24 -18.48 14.14 20 -14.14 0 20 -20 +5 24 18.48 20 -7.65 18.48 24 -7.65 20 20 0 14.14 20 -14.14 +5 24 18.48 20 7.65 18.48 24 7.65 14.14 20 14.14 20 20 0 +5 24 7.65 20 18.48 7.65 24 18.48 0 20 20 14.14 20 14.14 + +1 16 0 0 0 4.24264 0 -4.24264 0 1 0 4.24264 0 4.24264 4-4ndis.dat +1 16 0 0 0 20 0 0 0 1 0 0 0 20 1-4chrd.dat +1 16 0 0 0 -20 0 0 0 1 0 0 0 20 1-4chrd.dat +1 16 0 0 0 -20 0 0 0 1 0 0 0 -20 1-4chrd.dat +1 16 0 0 0 20 0 0 0 1 0 0 0 -20 1-4chrd.dat +4 16 0 0 -20 0 0 -8.4853 -8.4853 0 0 -20 0 0 +4 16 0 0 20 -20 0 0 -8.4853 0 0 0 0 8.4853 +4 16 20 0 0 0 0 20 0 0 8.4853 8.4853 0 0 +4 16 0 0 -20 20 0 0 8.4853 0 0 0 0 -8.4853 + +1 16 0 0 0 1 0 0 0 1 0 0 0 1 stug10-2x2.dat diff --git a/public/ldraw/parts/stud.dat b/public/ldraw/parts/stud.dat new file mode 100644 index 0000000..d4beb77 --- /dev/null +++ b/public/ldraw/parts/stud.dat @@ -0,0 +1,20 @@ +0 Stud +0 Name: stud.dat +0 Author: James Jessiman +0 !LDRAW_ORG Primitive UPDATE 2012-01 +0 !LICENSE Licensed under CC BY 4.0 : see CAreadme.txt + +0 BFC CERTIFY CCW + +0 !HISTORY 2002-04-04 [sbliss] Modified for BFC compliance +0 !HISTORY 2002-04-25 [PTadmin] Official Update 2002-02 +0 !HISTORY 2007-06-24 [PTadmin] Header formatted for Contributor Agreement +0 !HISTORY 2008-07-01 [PTadmin] Official Update 2008-01 +0 !HISTORY 2012-02-16 [Philo] Changed to CCW +0 !HISTORY 2012-03-30 [PTadmin] Official Update 2012-01 + + +1 16 0 0 0 6 0 0 0 1 0 0 0 6 4-4edge.dat +1 16 0 -4 0 6 0 0 0 1 0 0 0 6 4-4edge.dat +1 16 0 0 0 6 0 0 0 -4 0 0 0 6 4-4cyli.dat +1 16 0 -4 0 6 0 0 0 1 0 0 0 6 4-4disc.dat diff --git a/public/ldraw/parts/stud10.dat b/public/ldraw/parts/stud10.dat new file mode 100644 index 0000000..8810ab1 --- /dev/null +++ b/public/ldraw/parts/stud10.dat @@ -0,0 +1,44 @@ +0 Stud Truncated Laterally Curved 40D for Round 2 x 2 Parts +0 Name: stud10.dat +0 Author: Orion Pobursky [OrionP] +0 !LDRAW_ORG Primitive UPDATE 2020-01 +0 !LICENSE Licensed under CC BY 4.0 : see CAreadme.txt + +0 BFC CERTIFY CCW + +0 !HISTORY 2004-01-06 [Steffen] Fixed Header +0 !HISTORY 2004-04-22 [PTadmin] Official Update 2004-02 +0 !HISTORY 2007-06-24 [PTadmin] Header formatted for Contributor Agreement +0 !HISTORY 2008-07-01 [PTadmin] Official Update 2008-01 +0 !HISTORY 2012-02-16 [Philo] Changed to CCW +0 !HISTORY 2012-03-30 [PTadmin] Official Update 2012-01 +0 !HISTORY 2018-02-25 [MagFors] Corrected and added cond-lines +0 !HISTORY 2019-06-28 [PTadmin] Official Update 2019-01 +0 !HISTORY 2020-06-28 [PTadmin] Official Update 2020-01 + + +2 24 6 0 0 5.6145 0 1.9397 +2 24 1.9387 0 5.6145 0 0 6 +2 24 5.6145 -4 1.9397 5.6145 0 1.9397 +2 24 6 -4 0 5.6145 -4 1.9397 +2 24 5.6145 -4 1.9397 4.142 -4 4.142 +2 24 4.142 -4 4.142 1.9397 -4 5.6145 +2 24 1.9397 -4 5.6145 0 -4 6 +2 24 1.9397 -4 5.6145 1.9387 0 5.6145 + +5 24 4.142 -4 4.142 4.142 0 4.142 1.9397 -4 5.6145 5.6145 -4 1.9397 +5 24 6 -4 0 6 0 0 5.5434 -4 -2.2962 5.6145 -4 1.9397 +5 24 0 -4 6 0 0 6 1.9397 -4 5.6145 -2.2962 -4 5.5434 + +1 16 0 -4 0 0 0 -6 0 4 0 6 0 0 3-4cyli.dat +1 16 0 0 0 0 0 -6 0 1 0 6 0 0 3-4edge.dat +1 16 0 -4 0 0 0 -6 0 1 0 6 0 0 3-4edge.dat +1 16 0 -4 0 0 0 -6 0 1 0 6 0 0 3-4disc.dat +3 16 6 -4 0 5.6145 -4 1.9397 0 -4 0 +3 16 5.6145 -4 1.9397 4.142 -4 4.142 0 -4 0 +3 16 4.142 -4 4.142 1.9397 -4 5.6145 0 -4 0 +3 16 1.9397 -4 5.6145 0 -4 6 0 -4 0 +4 16 6 0 0 5.6145 0 1.9397 5.6145 -4 1.9397 6 -4 0 +4 16 5.6145 0 1.9397 4.142 0 4.142 4.142 -4 4.142 5.6145 -4 1.9397 +4 16 4.142 0 4.142 1.9387 0 5.6145 1.9397 -4 5.6145 4.142 -4 4.142 +4 16 1.9387 0 5.6145 0 0 6 0 -4 6 1.9397 -4 5.6145 diff --git a/public/ldraw/parts/stud2a.dat b/public/ldraw/parts/stud2a.dat new file mode 100644 index 0000000..ff7d139 --- /dev/null +++ b/public/ldraw/parts/stud2a.dat @@ -0,0 +1,24 @@ +0 Stud Open without Base Edges +0 Name: stud2a.dat +0 Author: James Jessiman +0 !LDRAW_ORG Primitive UPDATE 2009-02 +0 !LICENSE Licensed under CC BY 4.0 : see CAreadme.txt + +0 BFC CERTIFY CCW + +0 !HISTORY 1999-07-05 [PTadmin] Official Update 1999-05 +0 !HISTORY 2002-04-04 [sbliss] Modified for BFC compliance +0 !HISTORY 2002-04-25 [PTadmin] Official Update 2002-02 +0 !HISTORY 2007-06-24 [PTadmin] Header formatted for Contributor Agreement +0 !HISTORY 2008-07-01 [PTadmin] Official Update 2008-01 +0 !HISTORY 2009-06-21 [cwdee] Update ring references to 4-4ring +0 !HISTORY 2009-09-03 [PTadmin] Official Update 2009-02 + + +1 16 0 -4 0 4 0 0 0 1 0 0 0 4 4-4edge.dat +1 16 0 -4 0 6 0 0 0 1 0 0 0 6 4-4edge.dat +0 BFC INVERTNEXT +1 16 0 -4 0 4 0 0 0 4 0 0 0 4 4-4cyli.dat +1 16 0 -4 0 6 0 0 0 4 0 0 0 6 4-4cyli.dat +1 16 0 -4 0 2 0 0 0 1 0 0 0 2 4-4ring2.dat +0 diff --git a/public/ldraw/parts/stud3.dat b/public/ldraw/parts/stud3.dat new file mode 100644 index 0000000..99aefdd --- /dev/null +++ b/public/ldraw/parts/stud3.dat @@ -0,0 +1,20 @@ +0 Stud Tube Solid +0 Name: stud3.dat +0 Author: James Jessiman +0 !LDRAW_ORG Primitive UPDATE 2012-01 +0 !LICENSE Licensed under CC BY 4.0 : see CAreadme.txt + +0 BFC CERTIFY CCW + +0 !HISTORY 2002-04-04 [sbliss] Modified for BFC compliance +0 !HISTORY 2002-04-25 [PTadmin] Official Update 2002-02 +0 !HISTORY 2007-06-24 [PTadmin] Header formatted for Contributor Agreement +0 !HISTORY 2008-07-01 [PTadmin] Official Update 2008-01 +0 !HISTORY 2012-02-16 [Philo] Changed to CCW +0 !HISTORY 2012-03-30 [PTadmin] Official Update 2012-01 + + +1 16 0 -4 0 4 0 0 0 1 0 0 0 4 4-4edge.dat +1 16 0 0 0 4 0 0 0 1 0 0 0 4 4-4edge.dat +1 16 0 -4 0 4 0 0 0 1 0 0 0 4 4-4disc.dat +1 16 0 -4 0 4 0 0 0 4 0 0 0 4 4-4cyli.dat diff --git a/public/ldraw/parts/stud3a.dat b/public/ldraw/parts/stud3a.dat new file mode 100644 index 0000000..55d497b --- /dev/null +++ b/public/ldraw/parts/stud3a.dat @@ -0,0 +1,19 @@ +0 Stud Tube Solid without Base Edges +0 Name: stud3a.dat +0 Author: James Jessiman +0 !LDRAW_ORG Primitive UPDATE 2003-02 +0 !LICENSE Licensed under CC BY 4.0 : see CAreadme.txt + +0 BFC CERTIFY CCW + +0 !HISTORY 2002-08-31 [izanette] Modified with WINDZ for BFC compliance +0 !HISTORY 2003-08-01 [PTadmin] Official Update 2003-02 +0 !HISTORY 2007-06-24 [PTadmin] Header formatted for Contributor Agreement +0 !HISTORY 2008-07-01 [PTadmin] Official Update 2008-01 + + +1 16 0 -4 0 4 0 0 0 1 0 0 0 4 4-4edge.dat +1 16 0 -4 0 4 0 0 0 1 0 0 0 4 4-4disc.dat +1 16 0 -4 0 4 0 0 0 4 0 0 0 4 4-4cyli.dat +0 + diff --git a/public/ldraw/parts/stud4.dat b/public/ldraw/parts/stud4.dat new file mode 100644 index 0000000..bb214d0 --- /dev/null +++ b/public/ldraw/parts/stud4.dat @@ -0,0 +1,26 @@ +0 Stud Tube Open +0 Name: stud4.dat +0 Author: James Jessiman +0 !LDRAW_ORG Primitive UPDATE 2009-02 +0 !LICENSE Licensed under CC BY 4.0 : see CAreadme.txt + +0 BFC CERTIFY CCW + +0 !HISTORY 1999-07-05 [PTadmin] Official Update 1999-05 +0 !HISTORY 2002-04-04 [sbliss] Modified for BFC compliance +0 !HISTORY 2002-04-25 [PTadmin] Official Update 2002-02 +0 !HISTORY 2007-06-24 [PTadmin] Header formatted for Contributor Agreement +0 !HISTORY 2008-07-01 [PTadmin] Official Update 2008-01 +0 !HISTORY 2009-06-21 [cwdee] Update ring references to 4-4ring +0 !HISTORY 2009-09-03 [PTadmin] Official Update 2009-02 + + +1 16 0 -4 0 6 0 0 0 1 0 0 0 6 4-4edge.dat +1 16 0 -4 0 8 0 0 0 1 0 0 0 8 4-4edge.dat +1 16 0 0 0 6 0 0 0 1 0 0 0 6 4-4edge.dat +1 16 0 0 0 8 0 0 0 1 0 0 0 8 4-4edge.dat +0 BFC INVERTNEXT +1 16 0 -4 0 6 0 0 0 4 0 0 0 6 4-4cyli.dat +1 16 0 -4 0 8 0 0 0 4 0 0 0 8 4-4cyli.dat +1 16 0 -4 0 2 0 0 0 1 0 0 0 2 4-4ring3.dat +0 diff --git a/public/ldraw/parts/stud4a.dat b/public/ldraw/parts/stud4a.dat new file mode 100644 index 0000000..f7b27a5 --- /dev/null +++ b/public/ldraw/parts/stud4a.dat @@ -0,0 +1,24 @@ +0 Stud Tube Open without Base Edges +0 Name: stud4a.dat +0 Author: James Jessiman +0 !LDRAW_ORG Primitive UPDATE 2009-02 +0 !LICENSE Licensed under CC BY 4.0 : see CAreadme.txt + +0 BFC CERTIFY CCW + +0 !HISTORY 1999-07-05 [PTadmin] Official Update 1999-05 +0 !HISTORY 2002-04-04 [sbliss] Modified for BFC compliance +0 !HISTORY 2002-04-25 [PTadmin] Official Update 2002-02 +0 !HISTORY 2007-06-24 [PTadmin] Header formatted for Contributor Agreement +0 !HISTORY 2008-07-01 [PTadmin] Official Update 2008-01 +0 !HISTORY 2009-06-21 [cwdee] Update ring references to 4-4ring +0 !HISTORY 2009-09-03 [PTadmin] Official Update 2009-02 + + +1 16 0 -4 0 6 0 0 0 1 0 0 0 6 4-4edge.dat +1 16 0 -4 0 8 0 0 0 1 0 0 0 8 4-4edge.dat +0 BFC INVERTNEXT +1 16 0 -4 0 6 0 0 0 4 0 0 0 6 4-4cyli.dat +1 16 0 -4 0 8 0 0 0 4 0 0 0 8 4-4cyli.dat +1 16 0 -4 0 2 0 0 0 1 0 0 0 2 4-4ring3.dat +0 diff --git a/public/ldraw/parts/stud4od.dat b/public/ldraw/parts/stud4od.dat new file mode 100644 index 0000000..bdc4215 --- /dev/null +++ b/public/ldraw/parts/stud4od.dat @@ -0,0 +1,18 @@ +0 Stud Tube Open without Outer Cylinder and Top Surface +0 Name: stud4od.dat +0 Author: Philippe Hurbain [Philo] +0 !LDRAW_ORG Primitive UPDATE 2013-02 +0 !LICENSE Licensed under CC BY 4.0 : see CAreadme.txt + +0 !HELP This stud is a "antistud" to be used like a underside stud, +0 !HELP but without the outer cylinder. +0 !HELP 1 47 0 0 0 1 0 0 0 1 0 0 0 1 stud4.dat + +0 BFC CERTIFY CCW + +0 !HISTORY 2013-12-23 [PTadmin] Official Update 2013-02 + + +1 16 0 -4 0 2 0 0 0 1 0 0 0 2 4-4ring3.dat +0 BFC INVERTNEXT +1 16 0 0 0 -6 0 0 0 -4 0 0 0 6 4-4cylo.dat diff --git a/public/ldraw/parts/stug-1x2.dat b/public/ldraw/parts/stug-1x2.dat new file mode 100644 index 0000000..a1fa26a --- /dev/null +++ b/public/ldraw/parts/stug-1x2.dat @@ -0,0 +1,13 @@ +0 Stud Group 1 x 2 +0 Name: stug-1x2.dat +0 Author: Steffen [Steffen] +0 !LDRAW_ORG Primitive UPDATE 2011-01 +0 !LICENSE Licensed under CC BY 4.0 : see CAreadme.txt + +0 BFC CERTIFY CCW + +0 !HISTORY 2011-07-25 [PTadmin] Official Update 2011-01 + + +1 16 -10 0 0 1 0 0 0 1 0 0 0 1 stud.dat +1 16 10 0 0 1 0 0 0 1 0 0 0 1 stud.dat diff --git a/public/ldraw/parts/stug-1x4.dat b/public/ldraw/parts/stug-1x4.dat new file mode 100644 index 0000000..261d9ec --- /dev/null +++ b/public/ldraw/parts/stug-1x4.dat @@ -0,0 +1,15 @@ +0 Stud Group 1 x 4 +0 Name: stug-1x4.dat +0 Author: Steffen [Steffen] +0 !LDRAW_ORG Primitive UPDATE 2011-01 +0 !LICENSE Licensed under CC BY 4.0 : see CAreadme.txt + +0 BFC CERTIFY CCW + +0 !HISTORY 2011-07-25 [PTadmin] Official Update 2011-01 + + +1 16 -30 0 0 1 0 0 0 1 0 0 0 1 stud.dat +1 16 -10 0 0 1 0 0 0 1 0 0 0 1 stud.dat +1 16 10 0 0 1 0 0 0 1 0 0 0 1 stud.dat +1 16 30 0 0 1 0 0 0 1 0 0 0 1 stud.dat diff --git a/public/ldraw/parts/stug-2x2.dat b/public/ldraw/parts/stug-2x2.dat new file mode 100644 index 0000000..d60b44a --- /dev/null +++ b/public/ldraw/parts/stug-2x2.dat @@ -0,0 +1,21 @@ +0 Stud Group 2 x 2 +0 Name: stug-2x2.dat +0 Author: Steffen [Steffen] +0 !LDRAW_ORG Primitive UPDATE 2012-01 +0 !LICENSE Licensed under CC BY 4.0 : see CAreadme.txt + +0 BFC CERTIFY CCW + +0 !HISTORY 2005-12-28 [PTadmin] Official Update 2005-01 +0 !HISTORY 2007-05-04 [PTadmin] Header formatted for Contributor Agreement +0 !HISTORY 2008-07-01 [PTadmin] Official Update 2008-01 +0 !HISTORY 2011-07-01 [PTadmin] Renamed from stug2 +0 !HISTORY 2011-07-25 [PTadmin] Official Update 2011-01 +0 !HISTORY 2012-02-16 [Philo] Changed to CCW +0 !HISTORY 2012-03-30 [PTadmin] Official Update 2012-01 + + +1 16 -10 0 -10 1 0 0 0 1 0 0 0 1 stud.dat +1 16 10 0 -10 1 0 0 0 1 0 0 0 1 stud.dat +1 16 -10 0 10 1 0 0 0 1 0 0 0 1 stud.dat +1 16 10 0 10 1 0 0 0 1 0 0 0 1 stud.dat diff --git a/public/ldraw/parts/stug10-2x2.dat b/public/ldraw/parts/stug10-2x2.dat new file mode 100644 index 0000000..44fb1c7 --- /dev/null +++ b/public/ldraw/parts/stug10-2x2.dat @@ -0,0 +1,22 @@ +0 Stud Group Truncated Laterally Curved 40D for Round 2 x 2 Parts +0 Name: stug10-2x2.dat +0 Author: Magnus Forsberg [MagFors] +0 !LDRAW_ORG Primitive UPDATE 2020-01 +0 !LICENSE Licensed under CC BY 4.0 : see CAreadme.txt + +0 BFC CERTIFY CCW + +0 !HISTORY 2019-06-28 [PTadmin] Official Update 2019-01 +0 !HISTORY 2020-06-28 [PTadmin] Official Update 2020-01 + + +0 // activate next lines to add logos on studs +0 // 1 16 10 -4 10 1 0 0 0 1 0 0 0 1 logo5.dat +0 // 1 16 -10 -4 10 1 0 0 0 1 0 0 0 1 logo5.dat +0 // 1 16 -10 -4 -10 1 0 0 0 1 0 0 0 1 logo5.dat +0 // 1 16 10 -4 -10 1 0 0 0 1 0 0 0 1 logo5.dat + +1 16 10 0 10 1 0 0 0 1 0 0 0 1 stud10.dat +1 16 -10 0 10 0 0 -1 0 1 0 1 0 0 stud10.dat +1 16 10 0 -10 0 0 1 0 1 0 -1 0 0 stud10.dat +1 16 -10 0 -10 -1 0 0 0 1 0 0 0 -1 stud10.dat diff --git a/public/ldraw/parts/stug3-1x3.dat b/public/ldraw/parts/stug3-1x3.dat new file mode 100644 index 0000000..130e4da --- /dev/null +++ b/public/ldraw/parts/stug3-1x3.dat @@ -0,0 +1,14 @@ +0 Stud Tube Solid Group 1 x 3 +0 Name: stug3-1x3.dat +0 Author: Steffen [Steffen] +0 !LDRAW_ORG Primitive UPDATE 2012-02 +0 !LICENSE Licensed under CC BY 4.0 : see CAreadme.txt + +0 BFC CERTIFY CCW + +0 !HISTORY 2012-08-09 [PTadmin] Official Update 2012-02 + + +1 16 -20 0 0 1 0 0 0 1 0 0 0 1 stud3.dat +1 16 0 0 0 1 0 0 0 1 0 0 0 1 stud3.dat +1 16 20 0 0 1 0 0 0 1 0 0 0 1 stud3.dat diff --git a/src/components/3D/Brick.jsx b/src/components/3D/Brick.jsx index 512fecc..36b767f 100644 --- a/src/components/3D/Brick.jsx +++ b/src/components/3D/Brick.jsx @@ -2,20 +2,25 @@ /* eslint-disable no-unused-vars */ /* eslint-disable react/prop-types */ /* eslint-disable react/display-name */ -import React, { useMemo, useEffect, useRef } from "react"; +import React, { useMemo, useEffect, useRef, useState } from "react"; import { CSSToHex, getMeasurementsFromDimensions, base, createGeometry, + LDRAW_PARTS, + partFootprint, + buildPartObject, } from "../../utils"; -import { Vector3, Box3 } from "three"; +import { Vector3, Box3, Color } from "three"; import { motion } from "framer-motion-3d"; +import { useStore } from "../../store"; export const Brick = ({ intersect, color = "#ff0000", - dimensions = { x: 1, z: 1 }, + dimensions, + type, rotation = 0, translation = { x: 0, z: 0 }, bricksBoundBox = { current: [] }, @@ -25,17 +30,60 @@ export const Brick = ({ }) => { const brickRef = useRef(); - const { height, width, depth } = getMeasurementsFromDimensions(dimensions); + // LDraw pieces carry a `type` key into LDRAW_PARTS; their footprint drives the + // exact same grid-placement maths as the parametric box, so positioning, + // collision and outline stay consistent. Non-LDraw bricks keep `dimensions`. + const isLdraw = !!type && !!LDRAW_PARTS[type]; + const dims = useMemo( + () => dimensions || (isLdraw ? partFootprint(type) : { x: 1, z: 1 }), + [dimensions, isLdraw, type] + ); + + const { height, width, depth } = getMeasurementsFromDimensions(dims); const brickGeometry = useMemo(() => { - return createGeometry({ width, height, depth, dimensions }); - }, [width, height, depth, dimensions]); + if (isLdraw) return null; + return createGeometry({ width, height, depth, dimensions: dims }); + }, [isLdraw, width, height, depth, dims]); + + // Lazily build (cached) the LDraw object for this type + colour. + const [ldrawObject, setLdrawObject] = useState(null); + useEffect(() => { + if (!isLdraw) return; + let alive = true; + buildPartObject(type, color).then((obj) => { + if (alive) setLdrawObject(obj); + }); + return () => { + alive = false; + }; + }, [isLdraw, type, color]); + + // Highlight LDraw pieces when selected in Edit mode (emissive glow). + const isSelected = useStore((state) => + state.selectedBricks.some((s) => s.userData && s.userData.uID === uID) + ); + useEffect(() => { + if (!ldrawObject) return; + const glow = isSelected ? new Color("#55aaff") : new Color("#000000"); + ldrawObject.traverse((obj) => { + if (obj.isMesh && obj.material && obj.material.emissive) { + const mats = Array.isArray(obj.material) + ? obj.material + : [obj.material]; + mats.forEach((m) => { + if (m.emissive) { + m.emissive.copy(glow); + m.emissiveIntensity = isSelected ? 0.6 : 0; + } + }); + } + }); + }, [isSelected, ldrawObject]); const position = useMemo(() => { - const evenWidth = - rotation === 0 ? dimensions.x % 2 === 0 : dimensions.z % 2 === 0; - const evenDepth = - rotation === 0 ? dimensions.z % 2 === 0 : dimensions.x % 2 === 0; + const evenWidth = rotation === 0 ? dims.x % 2 === 0 : dims.z % 2 === 0; + const evenDepth = rotation === 0 ? dims.z % 2 === 0 : dims.x % 2 === 0; return new Vector3() .copy(intersect.point) @@ -50,7 +98,7 @@ export const Brick = ({ evenDepth ? base : base / 2 ) ); - }, [intersect, dimensions.x, dimensions.z, height, rotation]); + }, [intersect, dims.x, dims.z, height, rotation]); useEffect(() => { const brickBoundingBox = new Box3().setFromObject(brickRef.current); @@ -67,11 +115,11 @@ export const Brick = ({ } bricksBoundBox.current = newA; }; - }, [uID, bricksBoundBox]); + }, [uID, bricksBoundBox, ldrawObject]); const compansate = { - x: dimensions.x % 2 === 0 ? dimensions.x / 2 : (dimensions.x - 1) / 2, - z: dimensions.z % 2 === 0 ? dimensions.z / 2 : (dimensions.z - 1) / 2, + x: dims.x % 2 === 0 ? dims.x / 2 : (dims.x - 1) / 2, + z: dims.z % 2 === 0 ? dims.z / 2 : (dims.z - 1) / 2, }; const offset = { @@ -85,37 +133,55 @@ export const Brick = ({ : Math.min(translation.z, compansate.z), }; + // userData mirrors the brick's serialisable data so Edit-mode tooling + // (Select / outline / color / delete) works for LDraw pieces too. + const userData = { + uID, + dimensions: dims, + type: type || `${dims.x}-${dims.z}`, + ldrawType: isLdraw ? type : undefined, + offset, + width, + depth, + position, + rotation, + translation, + }; + return ( - <> - + + {isLdraw ? ( + // The LDraw holder is footprint-centred on X/Z and base-aligned on Y, + // so we drop it by height/2 to sit it on the grid like the box brick. + + {ldrawObject && } + + ) : ( - - + )} + ); }; diff --git a/src/components/3D/BrickOutline.jsx b/src/components/3D/BrickOutline.jsx index 4a8abdc..14a4627 100644 --- a/src/components/3D/BrickOutline.jsx +++ b/src/components/3D/BrickOutline.jsx @@ -9,6 +9,7 @@ import { getMeasurementsFromDimensions, knobSize, outlineWidth, + LDRAW_PARTS, } from "../../utils"; import { BackSide, Object3D } from "three"; import { useStore } from "../../store"; @@ -92,6 +93,9 @@ export const BrickOutline = () => { for (let i = 0; i < selected.length; i++) { const currentSelected = selected[i]; + // LDraw pieces are highlighted via their own emissive tint, not the + // box-stud wireframe outline (whose maths only fit parametric bricks). + if (currentSelected.ldrawType) continue; if (Object.keys(currentSelected).length > 0) { meshesAccrodingToType[currentSelected.type] = meshesAccrodingToType[ currentSelected.type diff --git a/src/components/3D/ChangeColor.jsx b/src/components/3D/ChangeColor.jsx index fc1d4af..5438425 100644 --- a/src/components/3D/ChangeColor.jsx +++ b/src/components/3D/ChangeColor.jsx @@ -16,9 +16,12 @@ export const ChangeColor = ({ color }) => { const deferredColor = useDeferredValue(color); + const recordHistory = useStore((state) => state.recordHistory); + useEffect(() => { if (selected.length < 1 || prevColor.current === deferredColor) return; + recordHistory(); setBricks((bricks) => { const updatedBricks = []; @@ -41,7 +44,7 @@ export const ChangeColor = ({ color }) => { return () => { prevColor.current = deferredColor; }; - }, [deferredColor, selected, setBricks]); + }, [deferredColor, selected, setBricks, recordHistory]); return null; }; diff --git a/src/components/3D/LegoRoom.jsx b/src/components/3D/LegoRoom.jsx index 9e70191..7131e89 100644 --- a/src/components/3D/LegoRoom.jsx +++ b/src/components/3D/LegoRoom.jsx @@ -11,12 +11,14 @@ import { DialogBox } from "../UI"; import { ModeToggleBar } from "../UI/ModeToggleBar"; import { Panel } from "../UI/Panel"; import { BottomBar } from "../UI/BottomBar"; +import { PartsBar } from "../UI/PartsBar"; const UI = () => { return ( <> + diff --git a/src/components/3D/Others.jsx b/src/components/3D/Others.jsx index aaa11e5..5fd72d3 100644 --- a/src/components/3D/Others.jsx +++ b/src/components/3D/Others.jsx @@ -44,7 +44,6 @@ export const Others = () => { return ( <> {others.map((user) => { - console.log(user); return user.presence?.self ? ( { const isEditMode = mode === EDIT_MODE; - const width = useStore((state) => state.width); - const depth = useStore((state) => state.depth); const anchorX = useStore((state) => state.anchorX); const anchorZ = useStore((state) => state.anchorZ); const rotate = useStore((state) => state.rotate); const color = useStore((state) => state.color); + const partType = useStore((state) => state.partType); + const recordHistory = useStore((state) => state.recordHistory); + + // The active LDraw part's footprint drives placement, cursor and collision — + // keeping the exact same grid maths the parametric brick used. + const footprint = partFootprint(partType); + const width = footprint.x; + const depth = footprint.z; const room = useStore((state) => state.liveblocks.room); const self = useStore((state) => state.self); useAnchorShorcuts(); + useEffect(() => { + preloadAllParts(); + }, []); + const addBrick = (e) => { e.stopPropagation(); @@ -102,12 +114,14 @@ export const Scene = () => { const brickData = { intersect: { point: e.point, face: e.face }, uID: uID(), + type: partType, dimensions: { x: width, z: depth }, rotation: rotate ? Math.PI / 2 : 0, color: color, translation: { x: anchorX, z: anchorZ }, }; + recordHistory(); setBricks((prevBricks) => [...prevBricks, brickData]); } } else { diff --git a/src/components/3D/Select/index.jsx b/src/components/3D/Select/index.jsx index 3fbff40..a049ba2 100644 --- a/src/components/3D/Select/index.jsx +++ b/src/components/3D/Select/index.jsx @@ -29,16 +29,27 @@ export function Select({ const setSelectedBricks = useStore((state) => state.setSelectedBricks); + // A click can land on an inner mesh (LDraw pieces are multi-mesh groups), so + // walk up to the nearest ancestor that carries a brick `uID` in userData. + const resolveBrick = React.useCallback((object) => { + let node = object; + while (node) { + if (node.userData && node.userData.uID) return node; + node = node.parent; + } + return object; + }, []); + const onClick = React.useCallback( (e) => { e.stopPropagation(); if (!enable) return; setSelectedBricks({ - object: customFilter([e.object])[0], + object: customFilter([resolveBrick(e.object)])[0], shift: multiple && e.shiftKey, }); }, - [enable, multiple] + [enable, multiple, resolveBrick] ); React.useEffect(() => { @@ -162,10 +173,19 @@ export function Select({ if (isDown) { onSelectMove(event); prepareRay(event, selBox.endPoint); + // Resolve inner LDraw meshes up to their brick group and dedupe by uID. + const seen = new Set(); const allSelected = selBox .select() .sort((o) => o.uuid) - .filter((o) => o.isMesh); + .filter((o) => o.isMesh) + .map((o) => resolveBrick(o)) + .filter((o) => { + const id = o.userData && o.userData.uID; + if (!id || seen.has(id)) return false; + seen.add(id); + return true; + }); if (!shallow(allSelected, previous)) { previous = allSelected; setSelectedBricks({ object: customFilter(allSelected) }); @@ -189,7 +209,16 @@ export function Select({ document.removeEventListener("pointermove", pointerMove); document.removeEventListener("pointerup", pointerUp); }; - }, [size.width, size.height, raycaster, camera, controls, gl, enable]); + }, [ + size.width, + size.height, + raycaster, + camera, + controls, + gl, + enable, + resolveBrick, + ]); return ( { + const partType = useStore((state) => state.partType); + const setPartType = useStore((state) => state.setPartType); + const color = useStore((state) => state.color); + const setColor = useStore((state) => state.setColor); + + const [activeCat, setActiveCat] = useState(PART_CATEGORIES[0].id); + const category = + PART_CATEGORIES.find((c) => c.id === activeCat) || PART_CATEGORIES[0]; + + return ( +
+
+ {LDRAW_COLORS.map((c) => ( +
+ +
+ {PART_CATEGORIES.map((c) => ( + + ))} +
+ +
+ {category.keys.map((key) => { + const def = LDRAW_PARTS[key]; + if (!def) return null; + return ( + + ); + })} +
+
+ ); +}; diff --git a/src/components/UI/PartsBar/styles.css b/src/components/UI/PartsBar/styles.css new file mode 100644 index 0000000..62b08b8 --- /dev/null +++ b/src/components/UI/PartsBar/styles.css @@ -0,0 +1,131 @@ +/* LeoCAD-style parts bin, top-centred, kid-friendly. */ + +.PartsBar { + position: absolute; + top: 16px; + left: 50%; + transform: translateX(-50%); + z-index: 1000; + display: flex; + flex-direction: column; + gap: 8px; + padding: 10px 12px; + border-radius: 18px; + background: rgba(255, 255, 255, 0.96); + box-shadow: 0 10px 30px rgba(0, 0, 0, 0.3); + font-family: system-ui, -apple-system, "Segoe UI", Roboto, sans-serif; + max-width: 92vw; +} + +.ColorRow { + display: flex; + gap: 6px; + justify-content: center; + flex-wrap: wrap; +} + +.ColorSwatch { + all: unset; + box-sizing: border-box; + width: 26px; + height: 26px; + border-radius: 50%; + cursor: pointer; + box-shadow: 0 0 0 2px transparent; + transition: transform 0.1s ease, box-shadow 0.1s ease; +} + +.ColorSwatch:hover { + transform: scale(1.12); +} + +.ColorSwatch.active { + box-shadow: 0 0 0 3px #1b1b2b; + transform: scale(1.16); +} + +.CatTabs { + display: flex; + gap: 4px; + justify-content: center; + flex-wrap: wrap; +} + +.CatTab { + all: unset; + box-sizing: border-box; + display: flex; + flex-direction: column; + align-items: center; + gap: 1px; + padding: 5px 9px; + border-radius: 12px; + cursor: pointer; + background: #eef0f6; + color: #4a4a5e; + transition: background 0.1s ease, color 0.1s ease; +} + +.CatTab:hover { + background: #e2e5f0; +} + +.CatTab.active { + background: #2b6cff; + color: #ffffff; +} + +.CatIcon { + font-size: 1.2rem; + line-height: 1; +} + +.CatLabel { + font-size: 0.62rem; + font-weight: 700; +} + +.PartGrid { + display: flex; + gap: 6px; + justify-content: center; + flex-wrap: wrap; + max-width: 520px; +} + +.PartCard { + all: unset; + box-sizing: border-box; + display: flex; + flex-direction: column; + align-items: center; + gap: 2px; + width: 64px; + padding: 8px 4px; + border-radius: 12px; + cursor: pointer; + background: #f6f7fb; + box-shadow: inset 0 0 0 2px transparent; + transition: transform 0.1s ease, box-shadow 0.1s ease; +} + +.PartCard:hover { + transform: translateY(-2px); +} + +.PartCard.active { + box-shadow: inset 0 0 0 3px #2b6cff; + background: #eaf1ff; +} + +.PartGlyph { + font-size: 1.7rem; + line-height: 1; +} + +.PartLabel { + font-size: 0.6rem; + font-weight: 700; + color: #4a4a5e; + text-align: center; +} diff --git a/src/utils/index.js b/src/utils/index.js index c9a72e2..449adec 100644 --- a/src/utils/index.js +++ b/src/utils/index.js @@ -1,3 +1,4 @@ export * from "./helpers"; export * from "./constants"; export * from "./hooks"; +export * from "./ldraw"; diff --git a/src/utils/ldraw.js b/src/utils/ldraw.js new file mode 100644 index 0000000..faf78db --- /dev/null +++ b/src/utils/ldraw.js @@ -0,0 +1,212 @@ +/** + * ldraw.js — load real LEGO parts (LDraw .dat) as posable objects in the + * builder, LeoCAD-style. Pure data + a cached LDrawLoader. + * + * The curated part set, footprints, categories and colours come from the + * sovereign vendored closure under `public/ldraw/` (served at + * `ldraw/` after build). The loader degrades gracefully: every public + * function returns null on failure so the builder never throws. + */ +import { LDrawLoader } from "three/examples/jsm/loaders/LDrawLoader.js"; +import { Group, Box3, Vector3, Color } from "three"; +import { base } from "./constants"; + +// ── LDraw scale constants ─────────────────────────────────────────────────── +// LDraw units (LDU): 1 stud pitch = 20 LDU, a brick = 24 LDU tall, a plate = +// 8 LDU tall. LDraw uses a Y-down coordinate system. `base` (25) is one stud +// in world units, so LDU_SCALE maps a stud (20 LDU) onto exactly one cell. +export const LDU_PER_STUD = 20; +export const LDU_BRICK_H = 24; +export const LDU_PLATE_H = 8; +export const LDU_SCALE = base / LDU_PER_STUD; // 25 / 20 = 1.25 + +// Resolve the public path the LDraw closure is served from. With Vite +// `base: '/blocs-pro/'`, BASE_URL is '/blocs-pro/' in prod and '/' in dev. +function ldrawPath() { + const b = + (typeof import.meta !== "undefined" && + import.meta.env && + import.meta.env.BASE_URL) || + "/"; + return `${b.replace(/\/?$/, "/")}ldraw/`; +} + +/** + * Curated kid-friendly part set (15 LDraw parts). Each entry: + * - file: path under public/ldraw/ passed to loader.load + * - w, d: footprint in studs (X, Z) + * - kind: category glyph hint + * - label: short French caption + * - glyph: emoji preview for the palette + * - category: category id (see PART_CATEGORIES) + */ +export const LDRAW_PARTS = { + // Briques + b2x4: { file: "parts/3001.dat", w: 2, d: 4, kind: "brick", label: "Brique 2×4", glyph: "🟥", category: "bricks" }, + b2x2: { file: "parts/3003.dat", w: 2, d: 2, kind: "brick", label: "Brique 2×2", glyph: "🟧", category: "bricks" }, + b1x2: { file: "parts/3004.dat", w: 1, d: 2, kind: "brick", label: "Brique 1×2", glyph: "🟨", category: "bricks" }, + b1x1: { file: "parts/3005.dat", w: 1, d: 1, kind: "brick", label: "Brique 1×1", glyph: "🟩", category: "bricks" }, + b1x4: { file: "parts/3010.dat", w: 1, d: 4, kind: "brick", label: "Brique 1×4", glyph: "🟦", category: "bricks" }, + // Plaques (fines) + p2x4: { file: "parts/3020.dat", w: 2, d: 4, kind: "plate", label: "Plaque 2×4", glyph: "▭", category: "plates" }, + p2x2: { file: "parts/3022.dat", w: 2, d: 2, kind: "plate", label: "Plaque 2×2", glyph: "◻", category: "plates" }, + p1x2: { file: "parts/3023b.dat", w: 1, d: 2, kind: "plate", label: "Plaque 1×2", glyph: "▬", category: "plates" }, + p1x1: { file: "parts/3024.dat", w: 1, d: 1, kind: "plate", label: "Plaque 1×1", glyph: "▪", category: "plates" }, + // Tuiles (lisses) + t2x2: { file: "parts/3068b.dat", w: 2, d: 2, kind: "tile", label: "Tuile 2×2", glyph: "⬜", category: "tiles" }, + t1x2: { file: "parts/3069b.dat", w: 1, d: 2, kind: "tile", label: "Tuile 1×2", glyph: "▭", category: "tiles" }, + // Pentes + s2x1: { file: "parts/3040b.dat", w: 2, d: 1, kind: "slope", label: "Pente 2×1", glyph: "◢", category: "slopes" }, + s2x2: { file: "parts/3039.dat", w: 2, d: 2, kind: "slope", label: "Pente 2×2", glyph: "◣", category: "slopes" }, + // Ronds + r1x1: { file: "parts/3062b.dat", w: 1, d: 1, kind: "round", label: "Rond 1×1", glyph: "⚫", category: "round" }, + r2x2: { file: "parts/3941.dat", w: 2, d: 2, kind: "round", label: "Rond 2×2", glyph: "⭕", category: "round" }, +}; + +/** Default part type a new room starts with. */ +export const DEFAULT_PART = "b2x4"; + +/** Parts grouped by category for the LeoCAD-style parts bin. */ +export const PART_CATEGORIES = [ + { id: "bricks", label: "Briques", icon: "🧱", keys: ["b1x1", "b1x2", "b2x2", "b1x4", "b2x4"] }, + { id: "plates", label: "Plaques", icon: "▭", keys: ["p1x1", "p1x2", "p2x2", "p2x4"] }, + { id: "tiles", label: "Tuiles", icon: "⬜", keys: ["t1x2", "t2x2"] }, + { id: "slopes", label: "Pentes", icon: "◢", keys: ["s2x1", "s2x2"] }, + { id: "round", label: "Ronds", icon: "⭕", keys: ["r1x1", "r2x2"] }, +]; + +/** LDraw kid-friendly colour codes (hex) used as material overrides. */ +export const LDRAW_COLORS = [ + { code: 4, hex: "#C91A09", name: "Rouge" }, + { code: 1, hex: "#0055BF", name: "Bleu" }, + { code: 2, hex: "#237841", name: "Vert" }, + { code: 14, hex: "#F2CD37", name: "Jaune" }, + { code: 22, hex: "#81007B", name: "Violet" }, + { code: 25, hex: "#FE8A18", name: "Orange" }, + { code: 15, hex: "#FFFFFF", name: "Blanc" }, + { code: 0, hex: "#05131D", name: "Noir" }, +]; + +/** Footprint (in studs) of a part type, with a 1×1 fallback. */ +export function partFootprint(type) { + const def = LDRAW_PARTS[type]; + return def ? { x: def.w, z: def.d } : { x: 1, z: 1 }; +} + +// ── Cached loader + geometry templates ─────────────────────────────────────── +let _loaderPromise = null; // Promise +let _manifest = null; +const _templateCache = new Map(); // partKey -> Promise (shared template) + +async function _getLoader() { + if (_loaderPromise) return _loaderPromise; + _loaderPromise = (async () => { + try { + const path = ldrawPath(); + _manifest = await (await fetch(`${path}manifest.json`)).json(); + const loader = new LDrawLoader(); + // The loader ships a built-in conditional-line material default, so we + // don't need to inject one (it isn't a named export in this three build). + loader.setPath(path); + loader.setPartsLibraryPath(path); + if (_manifest && _manifest.fileMap) loader.setFileMap(_manifest.fileMap); + loader.smoothNormals = true; + return loader; + } catch { + return null; + } + })(); + return _loaderPromise; +} + +/** + * Load (and cache) the raw LDraw group template for a part key. The returned + * group is a SHARED template: callers must `.clone(true)` it. Null on failure. + * @returns {Promise} + */ +export function loadPartTemplate(partKey) { + if (_templateCache.has(partKey)) return _templateCache.get(partKey); + const promise = (async () => { + const def = LDRAW_PARTS[partKey]; + if (!def) return null; + const loader = await _getLoader(); + if (!loader) return null; + return await new Promise((res) => { + loader.load( + def.file, + (group) => res(group), + undefined, + () => res(null) + ); + }); + })(); + _templateCache.set(partKey, promise); + return promise; +} + +/** Eagerly warm the template cache for every curated part. */ +export function preloadAllParts() { + for (const key of Object.keys(LDRAW_PARTS)) loadPartTemplate(key); +} + +/** + * Build a ready-to-render Object3D for a part type, scaled to world units, + * flipped Y-up, footprint centred on the local origin in X/Z, and bottom-aligned + * so it sits on the group origin — matching the box brick's placement maths. + * The chosen colour is applied to surface materials (edges kept). + * @returns {Promise} + */ +export async function buildPartObject(partKey, colorHex) { + const template = await loadPartTemplate(partKey); + if (!template) return null; + + const cloned = template.clone(true); + + // LDraw is Y-down: flip to Y-up, then scale LDU -> world units. + const inner = new Group(); + cloned.rotation.x = Math.PI; + cloned.scale.setScalar(LDU_SCALE); + inner.add(cloned); + + // Centre the footprint on X/Z and rest the base on y=0 of the holder. + const box = new Box3().setFromObject(inner); + const center = box.getCenter(new Vector3()); + inner.position.set(-center.x, -box.min.y, -center.z); + + const holder = new Group(); + holder.add(inner); + + _tint(holder, colorHex); + holder.userData.isLdraw = true; + return holder; +} + +/** Tint surface materials with the chosen colour; keep edges as-is. */ +function _tint(root, colorHex) { + if (!colorHex) return; + const col = new Color(colorHex); + root.traverse((obj) => { + if (obj.isMesh && obj.material) { + const mats = Array.isArray(obj.material) ? obj.material : [obj.material]; + const cloned = mats.map((m) => { + const nm = m.clone(); + if (nm.color) nm.color.copy(col); + nm.roughness = 0.45; + nm.metalness = 0.05; + return nm; + }); + obj.material = Array.isArray(obj.material) ? cloned : cloned[0]; + } else if ((obj.isLineSegments || obj.isLine) && obj.material) { + const mats = Array.isArray(obj.material) ? obj.material : [obj.material]; + const cloned = mats.map((m) => m.clone()); + obj.material = Array.isArray(obj.material) ? cloned : cloned[0]; + } + }); +} + +/** Clear caches (frees geometry refs). */ +export function clearPartCache() { + _templateCache.clear(); + _loaderPromise = null; + _manifest = null; +}