September’s Plugin of the Month: DigSigStamp
Yesterday Scott Sheppard announced the availability of this plugin over on It’s Alive in the Lab.
We originally received a request for this Plugin of the Month some time ago. Fenton Webb, from our DevTech Americas team, developed the initial version using an ObjectARX custom entity – as the requester required support for versions of AutoCAD prior to 2010 – but for this public release, Stephen Preston went ahead and re-implemented the mechanism in a .NET application using the Overrules API introduced in AutoCAD 2010.
This plugin basically allows you to see graphically when an AutoCAD drawing is digitally signed, which is apparently a requirement for some branches of government. The idea is that you specify a couple of different block definitions to indicate what should be displayed when the drawing is signed and when it’s not. You then choose a particular block reference – which probably sits somewhere on your title sheet – to have it’s WorldDraw() display function overruled to display the appropriate block definition, depending on whether or not the drawing has been signed and has a valid signature attached. The “valid” block definition can contain attributes that get populated with information provided in the digital signature.
A number of fairly innocuous activities – such as panning and zooming – invalidate a drawing’s digital signature. While we choose to display the appropriate “invalid” block in the editor, when the drawing is plotted we do a little more work, to make sure the drawing gets plotted as “valid”.
I’m actually not going to post the code for this one to my blog (you can download it from the Labs site, of course). The plugin uses a few tricks to implement a relatively rudimentary security mechanism: if people need something more secure, they will need to invest some effort themselves. If we went the whole hog and implemented industrial-strength security for this plugin, we clearly wouldn’t be able to publish the source code. We therefore decided to leave it fairly lightweight and open for people to extend as they see fit. To benefit those people choosing to use the implementation as-is, I’ve left the implementation details in the source that comes along with the plugin.