When the Lego Universe Team has started to share rough data of 80 parts http://www.ldraw.org/Article489.html [4] and soon after I've got feedback from part authors that because of their excellent quality those parts were heavyweights and would give us a hard time reducing the file size I was curious to what extend I could strip them down. After approx. 10 working hours my part was cut by 92%.
After I had chosen the “44572.dat - Hinge Panel 2 x 4 x 3 &
1/3 Locking” from the L(EGO)Draw parts chart at
http://www.ldraw.org/Article490.html [5]
I added my name to the chart (kind of easy with admin rights ;-) to
let people know I was working on the part.
First I compared the part
with the similar and already certified „2582.dat - Hinge Panel
2 x 4 x 3 & 1/3” in MLCad. I was wondering if the LEGO
Universe Team had done a good job on the overall size and
orientation. The part was excellent but to my amazement it had an
offset of 0.4 LDU on the x axis and the studs were way to small.
After correcting the position and substituting all the quads and
edges building the studs with the „stud2.dat - Stud Open“
primitive I tackled the section with the Click-lock hinges. The
click-locks created with the stl2dat conversion tool were 0.25 LDU
larger on the x-axis than our primitive „clh4.dat - Click-lock
hinge half dual finger for bricks and plates“ is (deside the
fact that clh4.dat makes usage of cylinder primitives to get a
smoother look)!
We know that the source for the L(EGO)Draw parts
are the original shapes, created for the molding machines – in
short they are the REFERENCE. A this point I had to take a critical
decision: fix the clh4.dat and all the parts using the primitive (and
there are quite a lot) in order to be faithful to the REFERENCE or
fix my part. I opted for the latter. I can live with a 0.1 mm
tolerance – if you cannot feel free to fix clh4.dat. As a side
note it might interests you that LEGO's part designers in Billund use
Rhino http://www.rhino3d.com/ [6]
for prototyping and not SolidWorks as suggested by the stl2dat
conversion tools – as I was told by the LEGO Master Builders
present at the 1000SteineLand 2007 in Berlin.
Using Syncedit
http://news.lugnet.com/cad/?n=13926 [7]
(strangely it is not listed on Anders' website) through LDDP I
trimmed all the figures where the click-lock primitives touch the
body. Furthermore this involved deleting/fixing the superfluous
triangles and quads.
Back in MLCad the next step was getting rid off of 50% of the overall file size by cutting the part in two and deleting one half of it. It was clear right from the start that I would subfile most of the code to allow patterned versions and since I can mirror the subpart using the matrix there was no need for an entire part.
With the LDraw Primitives Reference http://www.ldraw.org/library/primref/ [8] at hand I once more looked out for portions of the part I could replace with boxes and cylinders.
Finally I run the rest of the code through LDDP's Error Checking, fixed non-coplanar quads or code with bad vertex sequence I had messed up when I cut the part in two, sorted and BFCed the part by polling to LDView. Last step was subfiling plus sanding the header using DATHeader.
The original L(EGO)Draw part weights 173 KB. The version I submitted to the PT http://www.ldraw.org/cgi-bin/ptdetail.cgi?f=parts/44572.dat [9] is (including the subpart) 14 KB! Thx to Philo and Mike the part needs only a review by the PT-Admins to be shipped.