I've just arrived home from a 10-day trip to the Bay Area. It was a really interesting visit – as usual – but I'm happy to be home (even if I’m writing this at 3am, once again fighting jetlag).
The news has started to come out about AutoCAD 2015 – much of it fed by the Autodesk bloggers' day on Monday, which I unfortunately didn't attend – so it seemed timely for me to talk about the updates more from a developer’s perspective.
Let's look at the major features of AutoCAD 2015, starting with the user interface enhancements.
The most immediately visible change is the dark theme. This gives a whole new feel to AutoCAD, making it look and feel much more modern and (arguably) less straining on the eye.
A great deal of effort was needed to make this happen, and this also goes for application developers: work is clearly needed to redesign icons and implement dialogs that look good in this new mode. The runtime changes hinge around the COLORTHEME system variable – applications need to check for changes to this variable using a reactor – something we’ll look at in more depth in a future post.
Another UI-related feature is the New Tab page. This is the default view you get on launching AutoCAD with STARTUP == 2, allowing users to create new drawings or open recently accessed ones (as well as providing info from Autodesk 360, etc.).
One application-level change brought about by this work, effectively providing support for non-drawing documents, is the fact that MdiActiveDocument can now be "null": it's important to check it has a valid object reference before using it, from AutoCAD 2015 onwards.
Another great enhancement is around command preview. Many commands inside AutoCAD – such as TRIM and EXTEND, to name a couple – will now preview the projected results of the operation visually depending on the object(s) being hovered over. This is in combination with more vibrant effects for selecting geometry (highlighting by obscuring is no longer the default mode).
AutoCAD users have become used to jagged diagonals, over the years, but the anti-aliasing work in this release – enabled by the LINESMOOTHING system variable – brings AutoCAD bang up to date. Here's how an angled hatch looks both with and without line smoothing applied:
AutoCAD's user interface has inevitably become more complex, over the years, as its capabilities have expanded. The UI Finder feature extends AutoCAD's Help to enable users to locate the capabilities they're reading about in the documentation automatically. It works by calling a JavaScript function that searches for the chosen macros ID via CUI, changing the currently visible ribbon in order to display the required location to the user. Very cool. This should also be something developers can hook into – for when their own documentation is visible in AutoCAD’s help browser, it won’t work otherwise – which is something we’ll take a look at in a future post.
A really important feature, from my perspective, is the enhancements to AutoCAD’s point cloud capabilities: it's getting easier and easier to model against point cloud data in AutoCAD, particularly with the new ability to derive a UCS dynamically based on a plane extracted from the point cloud. This is going to add serious value to the use of point clouds in AutoCAD, whether they come from laser scanners or devices such as the Kinect.
Another change in this area is the deprecation of the POINTCLOUDINDEX command: you can no longer index text files into point cloud files (at least not right now). AutoCAD now uses the RCS format for point clouds – rather than PCG – which means that you need to use ReCap Studio to aggregate or manipulate point clouds before bringing them into AutoCAD. In time I hope it'll once again be possible to index text files directly inside AutoCAD – or have a better approach from creating RCS files on-the-fly – but in this release applications such as my sample application integrating Kinect need to be changed to write out text files to be processed separately in ReCap Studio. Less that ideal, but there you go.
Aside from dynamic UCS, the other good news around point clouds in AutoCAD is that the way they are visualized has also received significant attention in this release: the ReCap visualization engine has been integrated into AutoCAD, bringing much broader visualization options.
The next major architectural change inside AutoCAD is the complete removal of Microsoft's long-deprecated fiber technology. The NEXTFIBERWORLD and FIBERWORLD system variables no longer have any influence over the use of fibers in AutoCAD: with any luck we’ve now addressed all the issues related to this. This means you can now debug AutoCAD much more readily from Visual Studio – no need to turn fibers off, relaunch AutoCAD from the debugger, and then remember to turn them back on afterwards. On the subject of debugging, we've fixed the issue related to edit & continue of 64-bit .NET applications in Visual Studio 2013. This is great news for .NET developers.
The fiber removal work will also have a significant impact on developers, in that it's now completely supported to call commands from .NET (using a mechanism that's ultimately much better than Document.SendStringToExecute()), but we'll talk about that in more depth in the next post.
Another larger topic for a future post is the JavaScript API. This technology has matured beyond the “preview” stage we saw in AutoCAD 2014. Aside from general API improvements, our approach for hosting the Chromium runtime now makes use of a separate process per client instance. This makes it more reliable and fault-tolerant.
Oh, and a quick note to wrap-up… drawing bloat due to unused DGN linestyles should also no longer be an issue in AutoCAD 2015, which will also be good news for many AutoCAD users out there.
This isn’t the full extent of the updates, improvements and new features in AutoCAD 2015, but hopefully it does give a feel for the magnitude of the release (from my perspective the team has done a brilliant job on a number of fronts during this release cycle).
Update:
It turns out NEXTFIBERWORLD/FIBERWORLD are still usable – primarily for QA purposes, in case issues with fiber removal require verification – so the code paths for using fibers are still there, just inactive by default. I’d recommend against switching fibers back on unless it’s to help diagnose and report an issue, though. Thanks to Stephen Preston for checking on this. :-)