Martin Lemburg

Shortform: male

About me

Short introduction

I was born in Hamburg/Germany in 1971 and I've been living in Berlin/Germany since 1999.

After an apprenticeship to fine mechanics I studied up to 1999 mechanical engineering, specialized on construction/design and information technology. My tcl experiences began in 1997 with extending an administrative CAD system supporting software. Since 1997 I got stuck with tcl/tk - more or less!

Since 2008 I've been father of my older son Lutz, since 2010 I've been married and father of my younger son Falk.

My work

In 1999 I started to work in a former very small company dCADE - founded by former Fraunhofer IPK employees.

dCADE was bought by UGS, former Unigraphics Solutions, previously a part of EDS called EDS PLM Solutions (PLM = Product Lifecycle Management) and now belonging to Siemens Digital Factory division - Siemens PLM Software [1 ] and responsible to join the mechanical, electrical world of product(ion (planning)) with the world of software of CA-technologies, PDM, EDM and simulation.

From 1999 to 2009, I worked in the team of Press Line Simulation (PLS), formerly known as dCADE/Stamping or stamping.

I built scheme'able converters for data exchange between different kind of CAD, CAM and FEM systems and our simulation system. But my main work was about connection the CAD systems CATIA V4 and Unigraphics Solutions, later called UG or UG NX, with the simulation. My work was about process-, network communication, data extraction and export via parsing or API usage.

The simulation system PLS, I developed for, is used to simulate, verify sheet metal manufacturing press lines, presses and dies (kinematics, collisions, flow of material, ...). It's used too for offline and online programming of the presses, the transfer, the tooling, and to help construction teams to verify their work.

The application is based onto a toolkit used for object storage, definition, graphs, kinematics, mathematics, tcl for the "application logic" and an MFC based executable.

So I'm used to say, that we have a C++ core (executable) and an application written in tcl.

The only currently supported platforms is Windows, but in former times IRIX, AIX, Solaris, HP-UX, and Windows Itanium.

Main customers for this simulation application are automotive companies and their subcontractors all over the world.

And since the manufacturers of the presses and press lines are designing more and more complex machines, more and more customers accept, that a simulation like PLS is needed not only to drive the machines well, but to use those machines most efficiently!

With a short stop at the product team for eM RealNC, a CNC-/NC-simulation, working onto a connection of a virtual machine (a CNC-controller installed onto a PC) to the simulation environment, I stepped further to the product team of the material and information flow simulation "Plant Simulation".

Since 2011 I'm working as core developer in the product team of "Plant Simulation", now only working with C++, mostly in the area of UI development, conformance and style guide compliance.

Private tcl usage

Currently my time with tcl or tcl/Tk is limited to write small tools to help getting my work done more efficiently. on the other hand I still use tcl and tcl/Tk to create "helpers", utilities for my private use. Some of my old packages still "assist in helping" me.

Here a list of those applications and packages, which are not all hosted here in the wiki:

tcl and tcl/Tk appliations:

  • tracksToCsv - application to create from a given source into the CSV format, the [2 ] accepts for bulk scrobbling. It parses even data retrieved from Amazon Music and from Discogs.
  • colorDiff - appliaction to help choosing colors for fore- and background still fulfilling accessibility guide lines in color differences and contrast differences.
  • vCardManager - a small application to read VCF files, filter and transform some data and export it in a single or multiple VCF files
  • sortPhotoFiles - console application to scan (sub)folders for digital camera images/movies to sort them chronologically and and to rename those files to match a given scheme
  • MoveToSubFolder - small application helping to put many files - given via "Send To" into sub folders created by a given name, suggested from the files to get moved
  • RenameWithTimes - small application to rename selected files - given via "Send To" - using the probably available EXIF date, the access, modified or creation date/time.
  • runOnceTool (an application to allow to create RunOnce entries inside the registry)
  • ...

tcl only packages (no Tk required):

(many of them are really old and not "maintained")

  • !include (C-include like behaviour to source files - enhanced version of [3 ])
  • atexit exit-handler/finalizer package, inspired by [4 ])
  • maths package providing many mathematical procedures including vector/matrix mathematics registered as functions
  • lists package providing many list procedures including mathematical and statistic procedures
  • clist (compressed lists like {1-4 8-9 10} representing {1 2 3 4 8 9 10})
  • colors (rgb <-> hls, rgb <-> cymk, rgb <-> hsv, manipulation of brighteness, saturation)
  • const (a variable const'ification package to get constant variables/arrays)
  • do (a do-while, do-until control structure package)
  • htmlEntities (a package to map non-ASCII or all characters inside a text to HTML entities (like "&quot;") and back)
  • mp3file (a file command extension with the new sub commands bitrate, channelmode, codec, copyright, duration, private, original, samplerate, mp3info, album, artist, genre, title, track, year, idtags)
  • static (a package to declare a procedure variable to be static and available at the next procedure evaluation)
  • stopwatch (a package for (run)time measurement)
  • with (a package allowing to evaluate code with variables only known inside this evaluation scope, not allowing to shadow existing variables)

tcl only packages (Tk required):

(many of them are really old and not "maintained")

  • balloon (another balloon/tooltip package)
  • datechooser (a kind of date picker)
  • hexView (a kind of mega-widget to display data hexadecimal)
  • htmlView (a HTML viewing widget using TkHTML 2.x, allowing to protect agains Web-Bugs, not executing any scripts nor applets, with the feature to load images only from the domain, the web page is loaded from)
  • mp3player (a MP3 file player widget using the package mp3file)
  • openWith (a windows-only package to get and to visualize all applications to be used with a file like using "Open with ..." inside the explorer context menu)
  • optionsDlg (a simple modal toplevel options dialog)
  • recent (a kind of recent-file-emulation)
  • selector (a mega-widget displaying a list of data and providing a filter entry to filter those data to select a sub set of this data)
  • sorter (a mega-widget displaying a list of data, providing to sort this data, allowing to use a filter entry to easier the selection of a sub set of the data)
  • textDlg (a simple dialog showing non-changable text)

binary packages with MS Windows DLL:

(many of them are really old and not "maintained")

  • pstclapi (PSAPI tcl API to execute, introspect, and/or kill processes)
  • shutdown (a command to logoff from, poweroff, reboot, or shutdown the computer it is used on, for tcl/tk v8.1+)


Contact via Internet: