AutoCAD .NET

  • After our quick look at AutoCAD 2016 from a user perspective, let's now spend some time looking at the things important to developers in this latest release. Compatibility Off the bat it's worth stating that AutoCAD 2016 is a DWG compatible release: it's using the same file format as AutoCAD 2013, 2014 and 2015. It's also a binary application compatible release: ObjectARX apps written for AutoCAD 2015 should work in 2016 and it's likely that .NET apps built for AutoCAD 2014 will work, too. That said, some changes have been made to the security model for this release of AutoCAD,…

  • In this post we're wrapping up this mini-series on docking, which is part of a much broader story arc around a "command-line helper" tool, of course. But then we're reaching the end of that, too, I suspect, as the app's just about done. Hopefully it's ready for posting to Autodesk Labs, at least. Last time we added right-click dragging to allow our keywords window to be moved around without interrupting the active command. Now we're taking it a step further to preview docking at one of the four corners of the drawing window, as well as to actually dock the…

  • I'm happy to say that the implementation I mentioned in the last post ended up being pretty straightforward. Which is actually great, as I have some important posts to work on for next week. ๐Ÿ™‚ Today we're going to take a look at the next stage of the "command-line helper" implementation: basic right-click movement of the global keywords dialog, so we can set a custom location for the dialog without needing to use the KWSDOCK command. Here's the code in action: The main work for this stage was to add support for right-click, mouse move and right mouse-button up events,…

  • During the course of this week we're going to look at extending the command-line helper sample posted last week by allowing our global keywords window to "dock" to the four corners of the drawing window as well as to remain fixed at a custom location somewhere on the screen. I use the term "dock" here loosely, as we're really just placing it in one of the corners of the drawing window. If we wanted a modeless dialog that was properly docked into AutoCAD then we'd almost certainly want to use a PaletteSet. Here's a quick video demonstrating the KWSDOCK command,…

  • Today we're going to look at the implementation talked about in the last post: we're going to see how it's possible to use the Application.PreTranslateMessage() method to hack AutoCAD's message-loop and basically convert typed keywords into global ones. This is actually pretty neat (yes, even if I do say so myself ๐Ÿ™‚ and frankly I'm surprised it works. Here's the overall approach: Track the characters typed into the command-line Add individual characters into a list Backspace removes the tail of the list Arrow-keys invalidate the tracking: if the user accesses entries in the command-history we can't deal with that, and…

  • Here's a quick piece of code to finish up the week to complement what we saw earlier. The idea is that on localized AutoCAD versions this code will allow the user to enter English commands without needing the underscore prefix. The code works by detecting an "unknown" command and then attempting to execute it again after prefixing an underscore to launch a global command. Which may or may not work, of course, so we certainly need to set a flag to avoid descending into an infinite loop of commands being called while prefixed by an ever-expanding legion of underscores. Aside…

  • After introducing this project in the last post, now it's time to share some code. The project, as it currently stands, contains three source files: the first one relates to AutoCAD โ€“ it implements the various commands we'll use to attach event handlers to tell us when to display (or hide) keywords and the other two files relate to the UI we'll use to display them. We're going to use an invisible window which has a child popup containing a listbox of our keywords. Here's the application in action โ€“ for now in English AutoCAD, as that's what I have…

  • I'm up in the mountains, supposedly on vacation, but as one of our children woke up with a fever, I'm skipping the morning session on the slopes to stay home with him. Which gives me the chance to start writing up a little project I've been working on for our Localization team. Here's the ideaโ€ฆ apparently it's relatively common in certain countries for AutoCAD users to learn the product in English but then end up working with a localized version of the software. While it's always possible to use global commands and keywords by prefixing an underscore, it's not always…

  • This week I've spent quite a bit of time looking into future API features. For one of them I needed to create a progress meter, and thought to myself "why not create one in HTML5?" And as it's nothing specific to a future product release, I decided to go ahead and post it now. For context, here's the way AutoCAD's standard progress meter currently looks, displayed using the code from this previous post: So why would you go head and create your own progress meter? A few different reasons come to mindโ€ฆ yes, AutoCAD has its own, but perhaps you…

  • My esteemed colleagues over in the ADN team, Philippe and Balaji, have been working their magic, creating samples to show how to make use of JavaScript-based physics engines within Autodesk software. They've inspired me to have a go myself. Philippe's sample โ€“ which carried on from his preliminary research into JavaScript-based physics engines โ€“ shows how you can integrate ammo.js with the View & Data API to add some gravity to an A360 model. Really fun stuff! [Side note: I love that ammo.js stands for "Avoid Making My Own physics engine" as well as being an emscripten port of the…