feat: ldraw lego parts in builder

Add the real LDraw LEGO parts (LeoCAD-style) as the posable objects.

- Vendor the curated 15-part LDraw closure under public/ldraw so it is
  served at /blocs-pro/ldraw/ after build (CC BY 4.0, credits kept).
- src/utils/ldraw.js loads each part via three's LDrawLoader, caches the
  geometry per type, applies the LDU->world scale and Y flip to match the
  existing grid, and tints surfaces with the active colour.
- A LeoCAD-style PartsBar (colour row + category tabs + part grid) picks
  the active part; Create mode places it at the grid cell and stores a
  JSON-only brick { uID, type, color, position/dimensions, rotation } so
  the piece syncs to peers like any other brick.
- Brick.jsx renders the cached LDraw clone for typed bricks and keeps the
  parametric box as a fallback. Edit-mode tooling (select / move / colour
  / delete) walks up to the brick group so it works on multi-mesh pieces;
  selection is shown with an emissive tint instead of the stud wireframe.
This commit is contained in:
L'électron rare
2026-06-13 18:43:44 +02:00
parent ca1c5749cc
commit 529e74c1a6
92 changed files with 2941 additions and 49 deletions
+46
View File
@@ -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.
+99
View File
@@ -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"
]
}
+19
View File
@@ -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
+18
View File
@@ -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
+26
View File
@@ -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
+15
View File
@@ -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
+21
View File
@@ -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
+16
View File
@@ -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
+15
View File
@@ -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
+34
View File
@@ -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
+22
View File
@@ -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
+24
View File
@@ -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
+42
View File
@@ -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
+27
View File
@@ -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
+26
View File
@@ -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
+20
View File
@@ -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
+19
View File
@@ -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
+19
View File
@@ -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
+19
View File
@@ -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
+21
View File
@@ -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
+40
View File
@@ -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
+34
View File
@@ -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
+23
View File
@@ -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
+19
View File
@@ -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
+17
View File
@@ -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
+20
View File
@@ -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
+24
View File
@@ -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 <CR>
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
+21
View File
@@ -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
+16
View File
@@ -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 //
+19
View File
@@ -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
+50
View File
@@ -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
+15
View File
@@ -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
+32
View File
@@ -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
+32
View File
@@ -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
+32
View File
@@ -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
+34
View File
@@ -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
+34
View File
@@ -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
+34
View File
@@ -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
+34
View File
@@ -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
+27
View File
@@ -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
+61
View File
@@ -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
+27
View File
@@ -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
+24
View File
@@ -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
+28
View File
@@ -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
+48
View File
@@ -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
+28
View File
@@ -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
+23
View File
@@ -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
+33
View File
@@ -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
+32
View File
@@ -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
+33
View File
@@ -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
+33
View File
@@ -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
+19
View File
@@ -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
+22
View File
@@ -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
+18
View File
@@ -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
+40
View File
@@ -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
+15
View File
@@ -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
+22
View File
@@ -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
+25
View File
@@ -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
+24
View File
@@ -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
+25
View File
@@ -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
+24
View File
@@ -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
+19
View File
@@ -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
+91
View File
@@ -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
+75
View File
@@ -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
+24
View File
@@ -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
+37
View File
@@ -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
+24
View File
@@ -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 //
+99
View File
@@ -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
+20
View File
@@ -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
+44
View File
@@ -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
+24
View File
@@ -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
+20
View File
@@ -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
+19
View File
@@ -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
+26
View File
@@ -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
+24
View File
@@ -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
+18
View File
@@ -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
+13
View File
@@ -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
+15
View File
@@ -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
+21
View File
@@ -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
+22
View File
@@ -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
+14
View File
@@ -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
+98 -32
View File
@@ -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,8 +133,22 @@ 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 (
<>
<motion.group
ref={brickRef}
rotation={[0, rotation, 0]}
@@ -94,28 +156,32 @@ export const Brick = ({
initial={{ opacity: 0, scale: 0.8 }}
animate={{ opacity: 1, scale: 1 }}
transition={{ type: "spring", stiffness: 250, duration: 2 }}
userData={{
uID,
}}
userData={{ uID }}
>
{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.
<group
userData={userData}
position={[
(offset.x * width) / dims.x,
-height / 2,
(offset.z * depth) / dims.z,
]}
onClick={onClick}
onPointerMove={mouseMove}
>
{ldrawObject && <primitive object={ldrawObject} />}
</group>
) : (
<mesh
castShadow
receiveShadow
userData={{
uID,
dimensions,
offset,
width,
depth,
type: `${dimensions.x}-${dimensions.z}`,
position,
rotation,
translation,
}}
userData={userData}
position={[
(offset.x * width) / dimensions.x,
(offset.x * width) / dims.x,
0.5,
(offset.z * depth) / dimensions.z,
(offset.z * depth) / dims.z,
]}
onClick={onClick}
geometry={brickGeometry}
@@ -128,7 +194,7 @@ export const Brick = ({
roughness={0.5}
/>
</mesh>
)}
</motion.group>
</>
);
};
+4
View File
@@ -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
+4 -1
View File
@@ -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;
};
+2
View File
@@ -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 (
<>
<DialogBox />
<ModeToggleBar />
<PartsBar />
<Panel />
<BottomBar />
</>
-1
View File
@@ -44,7 +44,6 @@ export const Others = () => {
return (
<>
{others.map((user) => {
console.log(user);
return user.presence?.self ? (
<Other
key={user.presence.self.id}
+16 -2
View File
@@ -18,6 +18,8 @@ import {
useAnchorShorcuts,
minWorkSpaceSize,
EDIT_MODE,
partFootprint,
preloadAllParts,
} from "../../utils";
import { ChangeColor } from "./ChangeColor";
import { useStore } from "../../store";
@@ -41,18 +43,28 @@ export const Scene = () => {
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 {
+33 -4
View File
@@ -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 (
<group
+73
View File
@@ -0,0 +1,73 @@
import { useState } from "react";
import "./styles.css";
import { useStore } from "../../../store";
import {
LDRAW_PARTS,
PART_CATEGORIES,
LDRAW_COLORS,
} from "../../../utils";
// LeoCAD-style parts bin: a colour row + category tabs + the curated LDraw
// parts. The active part + active colour decide what gets placed in Create mode.
export const PartsBar = () => {
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 (
<div className="PartsBar">
<div className="ColorRow">
{LDRAW_COLORS.map((c) => (
<button
key={c.code}
className={
"ColorSwatch" +
(color.toLowerCase() === c.hex.toLowerCase() ? " active" : "")
}
style={{ background: c.hex }}
title={c.name}
aria-label={c.name}
onClick={() => setColor(c.hex)}
/>
))}
</div>
<div className="CatTabs">
{PART_CATEGORIES.map((c) => (
<button
key={c.id}
className={"CatTab" + (c.id === activeCat ? " active" : "")}
onClick={() => setActiveCat(c.id)}
title={c.label}
>
<span className="CatIcon">{c.icon}</span>
<span className="CatLabel">{c.label}</span>
</button>
))}
</div>
<div className="PartGrid">
{category.keys.map((key) => {
const def = LDRAW_PARTS[key];
if (!def) return null;
return (
<button
key={key}
className={"PartCard" + (key === partType ? " active" : "")}
onClick={() => setPartType(key)}
title={def.label}
>
<span className="PartGlyph">{def.glyph}</span>
<span className="PartLabel">{def.label}</span>
</button>
);
})}
</div>
</div>
);
};
+131
View File
@@ -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;
}
+1
View File
@@ -1,3 +1,4 @@
export * from "./helpers";
export * from "./constants";
export * from "./hooks";
export * from "./ldraw";
+212
View File
@@ -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
* `<base>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<LDrawLoader|null>
let _manifest = null;
const _templateCache = new Map(); // partKey -> Promise<Group|null> (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<Group|null>}
*/
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<Object3D|null>}
*/
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;
}