I tracked down the binary I posted all those years ago, and re-uploaded it to a working location.
Below is my post from LUGNet when I first wrote UnMirrorStuds, but with an updated URL. Note that I never did go back and work on it, because as far as I can tell, nobody used it. The version posted below is a 32-bit Windows command line program. It's not incredibly likely that I'll ever update the program, but its source code has been in the LDView CVS repository on SourceForge for a very long time.
Below is my post from LUGNet when I first wrote UnMirrorStuds, but with an updated URL. Note that I never did go back and work on it, because as far as I can tell, nobody used it. The version posted below is a 32-bit Windows command line program. It's not incredibly likely that I'll ever update the program, but its source code has been in the LDView CVS repository on SourceForge for a very long time.
Travis Cobbs Wrote:OK, I have created a command line program to un-mirror studs. It is called
UnMirrorStuds, and version 0.1 is available from the following location:
http://www.halibut.com/~tcobbs/ldraw/pri...tuds01.zip
Please download it and give it a try, and let me know what you think. I'd like
to have people process as many files as possible in order to track down and fix
any errors. Please note that I haven't personally tested the output with L3P; I
just commented out the automatic stud mirroring in LDView and used that to proof
the output. It works on all the files I have tested it against (including files
with large mirrored sub-assemblies for wings and such).
If it finds any mirrored studs in a model, it creates a new model with a .ums
(un-mirror studs) extension. Send this new model to L3P with stud logos turned
on, and the resulting POV file shouldn't contain any mirrored stud logos.
(Rendering the POV file should produce an image with no mirrored logos.)
In order to handle all possible stud mirroring scenarios, it creates files with
.ums and .um2 extensions where necessary all the way along the model heirarchy
(including in the parts directory). There is also an option to delete all the
files created for a particular file.
If you run it with no command line arguments, it will give you a list of
options. If it creates a new file, it will tell you the filename (your old
filename with its extension replaced with .ums). If you run it on a file with a
.ums extension, that file will be replaced if any mirrored studs are detected
(which admitedly won't happen if the file was generated by the program, and
there is a -s option which prevents the replacement of any files). It doesn't
currently support MPD files, but does detect them; if you give it one, it will
give you an error.
I will release the source code at some point, but it is using my new LDraw model
loading code under development for the next major LDView release, and that code
isn't ready for prime-time. If anyone has a pressing interest, send me an
e-mail, and I will send it to you. As an aside, if you run UnMirrorStuds with
the -v (verbose) option, you will see all the errors and warnings generated by
my new code (some of which will go away prior to an LDView release using the
code).
Once I am convinced that the program is fairly stable (either as-is or--more
likely--after modifications from feedback here), I will post it to
lugnet.anounce and send the program to ldraw.org. While it should work fine, I
wouldn't recommend using it if you are new to LDraw (but then, if you are,
you're probably not reading this newsgroup).