Commands
-
The AutoCAD I/O team has deployed version 2 of their API. For specific information on what's new, check this page. As I'll be talking about AutoCAD I/O at AU 2015, I thought it important to get to grips with the new version and understand how it differs from v1. I went ahead and updated Jigsawify.com to make use of the new API, so I'll add my own commentary below on the changes that have been introduced. As a reminder, the full source code for Jigsawify.com is available on GitHub. To check out the specific migration changes, see this comparison…
-
A question came in by email, yesterday, and despite having a few mini-projects in progress that were spawned during last week's event in Prague, I couldn't resist putting some code together to address it. The developer wanted to purge zero-length geometry: the simplest way to solve the problem is to run "_-PURGE _Z" at the command-line, but I saw this more as an opportunity to create a simple helper that would loop through all the entities in a drawing and erase any meeting a specified condition. In this case it would be curves with a length less than the global…
-
I needed to run some code from a modeless dialog, the other day, and found it was a bit of a pain to generate something quickly to do so. So I thought it might be a good idea to populate a palette dynamically with buttons that call commands and methods that were somehow tagged in the current project. The first step was to work out how to tag them: the obvious choice being some kind of method-level designation (much as we have with the CommandMethod() attribute). I created a command – named PC, for PaletteCommands – that uses reflection on…
-
A really interesting problem came up during an internal discussion, this week: someone wanted to launch the REFEDIT command on a selected xref and pre-select the entity found at the picked point. The entity that's part of the selected xref, of course. This turned out to be quite a tricky problem and yet one that could be solved with relatively few lines of code. The tricky parts were finding the right entity in the nested selection and then the corresponding entity in the xref. Here's the approach I ended up taking: Ask the user to selected a nested entity Get…
-
I mentioned recently that I'd hit a limitation with the amount of data that could be passed as embedded JSON data to an AutoCAD I/O Activity, and so decided to rearchitect my site to post the data at a URL and have the Activity download and use the data from there. The system worked well until a security flaw was fixed by the AutoCAD I/O team, earlier this week: it turns out the approach of manually downloading the additional payload from the Activity itself wasn't supposed to work. And now, sure enough, it doesn't. 🙂 This video does a great…
-
This question came in as a blog comment on this previous post: Is possible to use Revision Cloud in this situation? Example: Creating a polyline/circle/ellipse then make it a revision cloud. It seemed to make sense to broaden the topic for the purposes of this blog post: how to pass an entity or entities to an AutoCAD command called via Editor.Command() or CommandAsync(). Since Editor.Command() was implemented in AutoCAD 2015, I've been a fan of the calling commands in AutoCAD application code. But I haven't actually covered the approach needed to send object information to commands via this function. Yes,…
-
When I was a boy, I used to love going to play with toys at my grandmother's house. My absolute favourite was a die-cast Batmobile made by Corgi in the UK. What I particularly liked about this toy was its hidden features: the cars apparently came with secret instructions, although these were nowhere to be seen by the time I started playing with it. The Batmobile had plastic flames that came out of the exhaust when the rear wheels turned and spring-loadable, vertical rocket launchers. The biggest surprise was when I discovered the cutting blade that popped out of the…
-
Following on from the last post, where we saw an outline for this series of posts on AutoCAD I/O, today's post adds a command to our jigsaw application that creates the geometry for a jigsaw puzzle of a specified size and with a specified number of pieces. As jigsaw puzzle pieces are largely quite square, it actually took me some time to get my head around the mathematics needed to calculate the number of pieces we need in each of the X and Y directions to make a puzzle of a certain size. And it's (with hindsight) obviously not possible…
-
The title of this post is probably a bit misleading: I'm not actually going to show how this works, today, but I do intend to plot a path for addressing this topic over the coming weeks. I was spurred on by a tweet I received a couple of hours ago: @keanw Dear kean, I've been looking into AutoCAD I/O and it looks like it may only execute "scripts"; so no .NET API calls or LISP? — Cyborg (@CyborgEvilHam) May 13, 2015 The short answer to this is "yes, it's absolutely possible!". But readers of this blog are clearly interested in…
-
A reminder that proposals are open for AU2015 until May 26th. I've just submitted two, myself. Of the three topics I had in mind – relating to VR, AutoCAD I/O and TypeScript – I decided to submit proposals on the first two: I'll do my best to use TypeScript for one or both of the other two (assuming they get accepted) which will at least give people some exposure to how the technology works. And give some good fodder for blog posts, of course. Here are the abstracts I submitted: Virtual Reality viewing of 3D models using Autodesk's View and…