Sunday, October 1, 2017

Converting LDD to standard 3D model files

I've wanted to make Lego Digital Designer files into 3D models or 3D printable models. It's not too terribly hard. 1) From Lego Digital Designer, export the model as an LDraw file: File->Export Model, pick Ldraw-Files (*.ldr) 2) Open that ldr file in LeoCAD 3) Export to Wavefront OBJ file. 4) Import into Microsoft 3D Builder, select mm for import units 5) Repair 6) Resize (Select size, make sure it's locked, change mm to % and pick 40) 7) Save as STL Scales in OBJ files vary, and LeoCAD apparently decided to use the LDraw Units instead of anything like mm or inches when exporting. So after importing, a "stud" is 20 mm instead of 8mm. To resize them we need to scale the model to 40%. Note that the LeoCAD export uses the nominal sizes, so the model won't have any of the reductions in size that a real Lego brick does to allow for fit.

Saturday, September 23, 2017

3D Printing

From some of the posts here and on L3-G0's blog and YouTube, you can tell that I've been doing some stuff with 3D Printers.  Especially for the droids I "need" funny angled bricks and the like that reinforce the Lego models.  They can be built from pure Lego, but once you start bouncing them down a rough sidewalk, they fall to pieces, and the hinges get confused and stuff - so most of the droids have printed bricks.

(printed bricks seen @ 21 seconds in the video)


I've been exposed to some of the 3D printers available at a "maker garage" and have friends that have built various models, but I pretty much thought of all FDM (Fused Deposition Modeling) printers using filament as being about the same. They all have things to move the head &/or platform and an extruder to squeeze out a long string of hot plastic to build up the models in layers.

To that effect, I'd bought a Flashforge Creator (the wood one) as my first printer, and I've been pretty happy with it. The other various printers at work sometimes seem a little cleaner in some cases, or worse in other cases. They all have issues with the extruder getting clogged occasionally, and they all need a little bit of hands on maintenance.

I pretty much expected to keep using the Flashforge (indeed, I bought another used one and fixed it up), however I've been lured into trying a Creality CR-10 and have been pretty pleased so far.

Saturday, March 11, 2017

Mini Lego Disney Wonder Instructions

People ask if we have instructions/plans/whatever for the big builds, but we don't :(  Sometimes they even get really mad that I don't have time to spend 3 full-time weeks making plans for them instead of working on fixing my roof or the next project or whatever.

But we do have plans for the Mini Lego Disney Wonder!


Two notes: the second page is an alternate hull in black because black is easier to find than the Dark Earth Blue brick that is a better match to the real ship.  So start on page one or page two, not both :)

And the last page is stickers for the rear details for the blue hull.  Some need printed on clear sticker paper, some can be printed on white sticker paper.

And please support the large Lego Disney Wonder on Lego Ideas!




Here's the link for the plans: https://1drv.ms/b/s!AkcvBm2eyNfPytovCpqr6xK_ow-dqg

And don't forget to support the big Lego Wonder on Lego Ideas!


Friday, April 8, 2016

Lego Model for 520 Bridge Grand Opening

For the 520 Bridge Grand Opening - the longest floating bridge in the world - Sealug made a 1:125 play scale 15' long model section of the bridge.  Thanks to all the folks that came to see it - all fifty thousand visitors!

Crowd of People at 520 Bridge Grand Opening

More Pix on Flickr Album

Wow, we're used to some big events, ECCC gets 70K or so people, Brickcon gets 15K or something.  50 thousand people is quite a bit, even if they didn't all stop in our tent!

People in Lego Bridge Tent
Our Lego Tent at 520 Grand Opening
Our model bridge is about 1/125th scale, 2' wide and 15' long (60cm x almost 5m) and took almost 19,000 bricks to build.  When we showed up at 7am it was pretty cold, but fortunately it warmed up to be a great day.

520 Lego Bridge Sealug Tent
Detail of Lego 520 Bridge
The original plan had a kids building area for Duplo and a building table for bigger kids to make cars to put on the model bridge.  After we started arranging things we had a little more space so expanded it to 2 tables.  Once kids started showing up at the most we had to start a 3rd build table!
Duplo Play Area
Kids' Car Building Area @ 520 Bridge

I wasn't sure how the public would react to the Lego area and was eager to see their reaction.  It was a bit disturbing to see the first people rush on past -- until I realized everyone was trying to make the bridge opening speeches in the middle of the bridge.  Even so I fear we may have delayed some families as kids started to build their cars.  After the official ceremony we were packed.

Tons of cars on Lego Bridge
I know that not every one of those 50,000 people stopped in our tent, but at times it felt like it.  We were wall to wall kids and cars were being loaded onto the Lego bridge faster than we could make room for them.  We hope all the kids had as much fun as we did.
Crowd in Lego Bridge Tent
Lots of people looking at Lego Bridge
Factoids:
  • Longest, and only, Lego bridge ever displayed on the longest floating bridge in the world.
  • 15 feet long and 2 feet wide, but still fits in our minivan!
  • 50,000 attendees on bridge day! WOW!
  • Peak capacity: 250 kid-built cars!
  • 50 microfig pedestrians
  • Built by 15 Sealug volunteers and a Lego class over several weekends.
  • Over 1000 antennas used as the pontoon railings.
  • Enough "lightsaber" blades to outfit 168 Jedi with gray lightsabers!
  • Gave away every bookmark we had for Brickcon Madness 2016  (except the one that fell behind a table).
Thanks to Alice's kids for helping build a bridge section, thanks to all the Sealug volunteers for helping to design and build the bridge.  Thanks to Dox and 520GoLong the 520 folks and everyone else for arranging the grand opening activities.  We had fun showing the bridge and tons of people had fun on bridge day!

More Pix on Flickr Album

We hope to show the bridge again for Brickcon 2016:  Madness! in October.

Thursday, March 3, 2016

How I Kept From Getting Sick on the Forbidden Journey Harry Potter Ride.

Lots of people apparently get ill or nauseated on the Forbidden Journey Harry Potter ride, but I figured out how to stop that (for me).  The ride's really cool, but not if it ruins the rest of the day at the park!



We rode Forbidden Journey and it was cool - but I felt horrible the rest of the day, like I had a huge headache.  My daughter loved it though, so we went again the next day.  That time I closed my eyes for the movies - and I was fine!  I'd thought it was the robotic benches doing me in with all the motion, but really it's the movie scenes.

So we rode it again.  I was on an edge bench and peeked.  When your bench swoops in to the movie cut scenes, your bench is attaching itself to a rotating set of movie screens.  It looks like there are 5 or 6 or so screens stuck in a circle, rotating like a clock.  Your bench comes in, attaches to a screen, and then follows the screen, rotating clockwise or counterclockwise until the scene is over and then your bench swoops back out. 

How the Forbidden Journey
Movie Cut Scenes Work

In the above photo I've drawn a clockwise rotating set of screens with 3 benches watching the movie as one bench approaches and one leaves (like my blue swoosh lines?) 

With my eyes closed I could "feel" the movement of the bench gently following the screen in its circle - this is a subtle motion that the wild flying motion is on top of.  My problem is that when your eyes are open, the scene in front of you doesn't match that rotation. 

Sometimes in the movie your the scene darts in the direction of the real world motion. Those don't mess up my inner ear too much.  Sometimes the visible motion is mostly forward, but the real world still rotates around it's clock.  That's not too bad.  Sometimes the visible motion jerks completely opposite of the real world motion.  That's really bad! 

Now that I know what's happening I can "feel" the real world and that helps a ton.  If it feels too bad, I close my eyes.

FWIW, the "benches" are really interesting industrial robots attached at the back to supports that travel a preset path.  You can sometimes see the huge bit behind a neighbor's bench if you look off to the side.

Monday, January 11, 2016

Lego Cruise Ship is Back on Lego Ideas!

Take 2

We've stuck the Lego Disney Wonder back on Lego Ideas - Please support it now! https://ideas.lego.com/projects/128153.

And don't forget to check out the original article about it's construction.

We need your help!

We reposted it on Lego Ideas due to several requests, however last time it didn't even get 1000 supporters. Most of that is probably because it lost visibility on the Lego system.

If you really want to reach 10,000 votes and see Lego consider this project, we're going to need a LOT more social media support. Tweet about the project, share it on Facebook. Get your friends to support it. Blog about it. Anything!

The link is  https://ideas.lego.com/projects/128153

The Gang with The Lego Wonder
Lego Wonder and The Gang

Saturday, May 2, 2015

How do I mirror an LDD / LDraw file?

THIS ONLY WORKS FOR BASIC BRICKS/PLATES (and some others) on a boring orientation.  I don't try to figure out how to find a left ring for a right wing, etc., so this won't work for all models.

I made part of a Lego model that I wanted to "mirror", just flip about an axis.  It's "just bricks" so I didn't have to worry about wings or funny shapes or anything.  I'm surprised Lego Digital Designer doesn't have this.

Anyway, I figured the easiest way to do this was to export it into an LDraw (ldr) file, then since that's plain text, just flip the - signs on the appropriate coordinates.

Here's the little program I used to do this (C#, Windows).  After compiling, just say something like:

SimpleLcadMirror infile.ldr outfile.ldr y

Hmm, don't know how to "compile" it you say?  On Windows it's reasonably easy.

Open cmd (win+r, type cmd, press enter)
notepad SimpleLcadMirror.cs
Copy the stuff below into that file and save it
Type this into the cmd and press enter:
    %windir%\Microsoft.NET\Framework\v4.0.30319\csc.exe SimpleLcadMirror.cs
It should compile and give you a SimpleLcadMirror.exe

Then 'just' run it from the cmd line:
SimpleLcadMirror.exe yourfile.ldr newfile.ldr x y

// Simple utility to mirror an LCAD file
using System;
using System.IO;

class MirrorLCad
{
    static void Main(string[] args)
    {
        String filenameIn = null;
        String filenameOut = null;
        bool mirrorX = false;
        bool mirrorY = false;
        bool mirrorZ = false;
        bool round = false;

        if (args == null || args.Length < 3)
        {
            return;
        }

        filenameIn = args[0];
        filenameOut = args[1];
        for (int i = 2; i < args.Length; i++)
        {
            if (args[i].Equals("x"))
            {
                mirrorX = true;
            }
            else if (args[i].Equals("y"))
            {
                mirrorY = true;
            }
            else if (args[i].Equals("z"))
            {
                mirrorZ = true;
            }
            else
            {
                PrintUsage();
                return;
            }
        }

        PrintWarning();

        var inFile = new StreamReader(filenameIn);
        var outFile = new StreamWriter(filenameOut);
        String line;
        while ((line = inFile.ReadLine()) != null)
        {
            // Very boring in line detection, only type one, and only if syntax has no strange stuff
            line = line.TrimStart();
            if (line.StartsWith("1 "))
            {
                string[] parts = line.Split(' ');
                // We care about x, y, z, - 2, 3 & 4
                // 1  x y z a b c d e f g h i 
                if (mirrorX) { parts[2] = mirror(parts[2]); }
                if (mirrorY) { parts[3] = mirror(parts[3]); }
                if (mirrorZ) { parts[4] = mirror(parts[4]); }
                foreach (var part in parts)
                {
                    outFile.Write(part);
                    outFile.Write(' ');
                }
                outFile.WriteLine();
            }
            else
            {
                // Don't do anything to strange line
                outFile.WriteLine(line);
            }
        }
        outFile.Close();
    }

    static String mirror(String value)
    {
        Console.Write('.');
        if (value.StartsWith("-"))
        {
            value = value.Substring(1);
        }
        else
        {
            value = '-' + value;
        }
        return value;
    }

    static void PrintUsage()
    {
        Console.WriteLine("Usage:");
        Console.WriteLine("SimpleLcadMirror   [x] [y] [z]");
        Console.WriteLine("y is vertical, z is depth, x is horizontal");
    }

    static void PrintWarning()
    {
        Console.WriteLine();
        Console.WriteLine("ONLY ARRANGES PARTS POSITIONS, doesn't swap parts (eg: left/right wing, etc)");
        Console.WriteLine("Intended for simple brick/plate structures on a simple axis, square to the grid");
    }
}