Here you'll find answers to questions multiple people have asked me or I thought were useful / interesting.

General concerns

Usage questions

Problem solving


Does the setup install additional crap?

As I hate bundle ware myself LDCad's setup program will not install any kind of third party tools or software. It will only install stuff actually needed by LDCad itself.

I found a 3rd party setup claiming to include LDCad is it safe to use?

Below are all third party tools/installers that include LDCad which are known/trusted. Any other site claiming to offer a setup containing LDCad can not be trusted as they might have made an alternative installer which pushes all kinds of adware and/or malware aka crapware. Please let me know where you found it in such cases.

LDraw All in one installer (AIOI)

This is the official getting started package for windows maintained by It includes the LDraw library itself and many LDraw tools including a recent version of LDCad. The, huge, installer prevents having to gather all these tools from their various homes helping new users getting started quickly.

VEX IQ orientated LDCad by 'Philo'

This is a repackaged LDCad version optimized to work with LDraw based VEX parts instead of the LEGO orientated default LDraw library. This has been done by providing alternative support/configuration files. The main LDCad executable is identical to one found on this site.

Which key(s) does LDCad use in the windows registry?

LDCad itself does not use the Windows registry at all, only configuration files. The setup will use some registry keys to keep track of the installation location etc though, but this is normal/expected behavior of any installer.

What's up with the weird / old fashioned / ugly / etc interface?

Main reason is I like it myself. The second and more technical reason: it's all drawn manually by my own OpenGL gui routines. Which I choose to keep simple for the time being. I also have a long term plan to make the program usable in full screen OpenGL (like a game), at that point even the dialogs will be handled using my own routines.

Also using pure OpenGL as the main gui limits OS dependencies making sure the program looks and acts exactly the same on any platform (just compare the Windows and Linux version to see what I mean).

In what language is LDCad written and which tools does it use?

LDCad is written in plain C++ and compiled with GCC (under minGW on windows). As of version 1.4 it uses the following third party libraries:

Generic (non OpenGL) gui is handled by wxWidgets, but I try to minimize LDCad's dependencies on it so a migration to alternatives won't be to much of a deal in the future. This keeps supporting additional platforms open to me.

GLEW headers are used to talk with OpenGL.

Boost is also used, but at the moment I only use its threading / mutex stuff.

LUA scripting engine, for scripting :)

freeType font rendering in order to render professional looking text using OpenGL.

And currently I use code::blocks as the main editor during development.

Why isn't LDCad open source?

It's mainly a personal choice as I really (for the moment) want to retain full control over the features and internal 'secrets'. But if I ever loose interest in the project I will make it open source and or donate the code to

How do I enable part snapping?

Part snapping is disabled by default as its not available for all parts which might be confusing to new LDraw users. You can however enable it at any time using the compass in the left bottom. It will show (among other things) a label 'GS' in red. This means 'grid snapping', if you click it it will change into a green 'PS' meaning 'part snapping'.

Part snapping acts weird, things seem to snap wrong and or partial?

Part snapping is a very complicated thing to do / implement. Even the most advanced implementation will not behave perfectly / as expected in all situations. Taking this into account I decided to implement only basic part snapping.

The feature is therefore only used to do the initial placement of new parts. This must be done with the the aid of the current (relative) grid set to an appropriate orientation. After initial placement you can always do some manual adjustments using e.g. the editing pin.

This seems like a 'cheap' way to go but in practice it can actually be a better way of doing things as you won't have to fight the 'system' to get things into places the more complicated implementations won't allow etc.

Some improvements are planned though, but the system will always remain optional and thus in essence a guidance tool only.

I don't like the way the camera rotates, can anything be done about that?

By default LDCad uses a trackball rotation mechanism as its camera control. This method allows for full rotational freedom. For non CAD users this might be a bit alien though. For those users LDCad offers a more common 'spin' rotation control, which basically acts like your model sits on a turntable.

You enabled the spin camera control from the compass in the lower left of the editing area. It will show 'TBL' in yellow in its right bottom. Click it to change it to 'SPN' to enable the spin camera mode.

how can I search for a part by part number?

You can search for any part in the library using the special search part bin indicated by the minifigure holding the looking glass icon.

While this group is active you can search for parts by typing (a) keyword(s) while the mouse cursor is inside the rectangle currently displaying '[no filter]'. This is the same as for any group but instead of limiting the content the special search group will only show matching parts if any text is given.

By default the filter searches only trough the part descriptions. To also search on part number you need to change the part bin filter configuration.

To do this open the filter dialog by clicking on the filter region normally displaying '[no filter]'.

Inside the filter dialog check 'name' in the 'match on' panel and click on the bottom right 'Options ..' button. In the resulting menu select 'Apply to all and use as default.'. Finally click 'Accept' to close the dialog.

From now on any text you type into the filter field will also be checked against part numbers, aka part(file)name.

How do I (un)dock (new) subwindows?

You can dock any subwindow (e.g. a part bin, color bin or source window) by holding the ctrl key while dragging the window by its top bar. To undock a window grab it anywhere in its 'dead' space and start dragging it. To prevent unwanted/accidental undocking use the lock options in the prefs/gui menu.

Where does LDCad keep its configuration files?

If you installed LDCad using the setup or LDraw's AIOI all configuration files will be located in the current users appdata location. This is usally something like "C:\Users\Roland\AppData\Roaming\LDCad" (replace 'roland' by your own user name). To be sure you open Windows (file) explorer and type "%appdata%\LDCad" in the location bar.

If you used the Windows or Linux archive version configuration files will be located in folders inside the main LDCad folder, just be sure NOT to delete the 'docs', 'resources', and 'seeds' folders as those are part of the basic LDCad installation.

How do I reset the LDCad configuration?

You can reset (part of) LDCad settings by deleting its configuration files. If you only want to reset the main options deleting the config\main.cfg file will be enough, be sure to close LDCad before deleting any files.

See also Where does LDCad keep its configuration files?

How do I change the LDraw library location?

You can change any LDraw search locating using the 'Search (library) paths' dialog accessible through the 'prefs/LDraw' menu. Don't foget to also update the LDConfig.ldr location as it's usually at the same place as the official library. Changing the LDConfig.ldr location is done through the 'Configuration files' item in the 'prefs/LDraw' menu.

Alternative (easier way) would be to delete the (main.cfg) LDCad configuration in order to force the re-asking of the LDraw library at the next start up.

How do I use unofficial parts?

LDCad can be configured to use multiple LDraw libraries at once, this includes unofficial ones. To use it download the complete unofficial LDraw library and place it somewhere appropriate (e.g. next to the official one).

When you're done downloading the unofficial library, open the 'prefs' menu form the toolbar inside LDCad. Next choose the first item in the menu 'LDraw', followed by again the first item 'search (library) paths'.

This will open a dialog listing the LDraw search paths. Per default it will only show two lines. Click the first one (of type official), followed by a click on the 'new' button. This will duplicate the line and add it to the list.

Now configure this new line so it points to the new library, by changing its kind to 'unofficial library' and change its location to point to the downloaded file, you do this by clicking the 'Browse archive' button next to the current location. This will open a file browser dialog which you can use to locate the zip file.

When done close all dialogs using 'ok' and restart LDCad. Upon restart LDCad will need some time to analyze the libraries again, when done all unofficial parts will be usable. They will be mixed into the part bin among the official ones as a whole.

Why are models containing flexible parts so big?

The file size for models containing flexible parts (e.g. pneumatic hoses) can easily be a couple of megabytes as most flexible part templates use the high quality "deform" method to generate the shape of the part. This means LDCad supplies the geometry of the part in full detail / low level LDraw code.

On modern harddrives etc this shouldn't be a big deal though, but if you really want/need smaller filesizes you could always start using the LQ versions of certain flexible parts or reconfigure the exiting parts in your model. The later is not an easy task so be sure to choose the correct templates from the get go.

LDCad crashes and one of the last log lines mentions the conditional line vertex shader.

This is almost certainly (Especially if the OpenGL version is below 2.0) caused by insufficient / buggy shading support by the OpenGL/VGA driver.

The current workaround is to disable all shading by replacing the 'shadingEnabled=true' option (under '[rendering]') with 'shadingEnabled=false' in main.cfg (located in the config folder.).

If the main.cfg file is not yet present you need to create a new file called 'main.cfg' inside the config folder (which will be present because it's forced on startup). When creating the file make sure it's content reads:


If you need additional help feel free to email me.

Whenever I load a model all I see are red crosses, what's that about?

LDCad is ether misconfigured in regards of the LDraw library location or the given location is not available and/or readable at all. Make sure you have the latest LDraw library installed. If so validate / change the LDCad settings so it point to the correct location.

Alternative (easier way) would be to delete the (main.cfg) LDCad configuration in order to force the re-asking of the LDraw library at the next start up.

Parts are not fully drawn or appear 'in side out'/corrupted.

This might be caused by the Open Source Readeon Linux driver. The AMD proprietary driver doesn't have this issue. Newer versions of the oss driver might fix it in the future, I'm also still looking into this issue.

In all other situations upgrading to the latest driver might resolve the issue.

Part edges are not (fully) visible from certain angles (and or in ortho mode)

This might be caused by the Open Source Readeon Linux driver. The AMD proprietary driver doesn't have this issue. Newer versions of the oss driver might fix it in the future, I'm also still looking into this issue.

In all other situations upgrading to the latest driver might resolve the issue.

The screen corrupts (seems to scale down or move up) with every redraw.

This caused by the 'reuse front buffer' option. This option is sort of a 'hack' and will therefore not always behave like expected.

Select a different frame rendering method in the OpenGL preferences menu. 'FBO' is the preferred value, if that also causes problems set it to 'basic'.

If this is impossible because you can't see what you're doing and or FBO won't work ether try the FBO related problem fix.

The screen is empty or only partly drawn.

When using a low OpenGL version support for the FBO feature might be insufficient. This might be solved by disabling it. This however might be a problem as you don't see what your doing.

Luckily you can also change options by editing the configuration file manually. Before doing this be sure to first close LDCad. Then Open the main.cfg file (located in the config folder.) and search for a line starting with "frameRenderMethod=". Change this line into "frameRenderMethod=basic" (all without the quotes).

After saving the file restart LDCad to see if it will render a normal screen now. If so it will be alot slower but something is better then nothing :). If it still won't render correctly or nothing at all something else is at play, feel free to email me in such a case.

(some) pictures show up as white crosses.

This happens when the texture image needed to render the picture could not be found or loaded. Please make sure LDCad is installed correctly and has full read access of its configuration location(s).

It could also be caused by very outdated (low version) OpenGL drivers which might not be able to handle the image size and or dimensions.

Consult the LDCad log file for the exact reason of failure.

Models using 'mirroring' or 'scaling' will not render correctly.

This is because it will mess up normals and or BFC information. In practice it's best not to use mirroring at all because it causes 'unrealistic' usage (e.g. can't do it with real Lego). Otherwise it's not really a problem besides the degraded rendering quality.