Showing posts with label Programming. Show all posts
Showing posts with label Programming. Show all posts

Tuesday, September 16, 2014

How to Start Programming Revit Add-ins.

Part of the focus of this blog is how to manipulate and take advantage of the Data being generated by BIM. I'm happy to say I'm well on my way to learning to swim in this sea of data! I have started learning how to program the Revit API in C#.  I had some programming experience in college about ten years ago and in a different language.  So far, I have successfully written five different add-ins.  Yeah me!

Here is what I have done to learn what it takes.

I downloaded and installed the Software Developers Kit from Autodesk Developers Network.  I also tried several good tutorials they have available.  While this was good, it didn't give a lot of explanation to why things were done the way they were, especially for a novice programmer. Also, much of what I found available in this was written in C#, which inspired my learning the language.

First a free online Fundamentals for Beginners C# Programming course from Microsoft.  This gave me a good understanding of the basics. It also talked me through downloading and installing Microsoft Visual Studio Express 2012.  The express doesn't mean it runs faster. It simply means it is the free version with several features missing.  That topic could and likely will be another blog entry to itself.

Knowing C# alone is only part of the puzzle.  Next you must learn the specifics of using the Revit API in C#. I choose to purchase the Udemy on-line course from Harry Mattison, Founder of Boost Your BIM. The man knows his stuff, and does a good job of explaining it.  This course is what finally got me off the ground and running.  

Another training tool I found very beneficial was Don Rudder's book on programming for the Revit API, (also an excellent resource).  Most if not all of his examples are in Visual Basic. This I have learned is not a big deal for experienced programmers to utilize and swap between several languages, provided they are all part of the .net framework.  I won't pretend to understand all of that short of saying they are somewhat interchangeable.

Also along the way has been countless Google searches on topics, advise from friends in the programming industry and a trip to Autodesk University (focusing on API classes).  One class that stood out to me was David Rushforth's Automate your Revit-Based Software Workflows: Let the API Do the Work.

In the not to distant future, I hope to start selling some Add-ins through this site. I have several ides already. Do you have any suggestions/requests? If so, please leave a comment, or message me.


Thursday, August 7, 2014

Retooling the Revolution

Retooling is often a phrase we here for factories getting an upgrade to make a new model of widget, or as an upgrade to help them produce the widgets faster.  I believe the AEC industry is in the midst of retooling for the Digital Design Revolution.  Why you may ask? BIM is producing more data then we know what to do with.  We need to become better at sorting though all this data to make educated informed decisions, without drowning. We need to learn to swim though the sea of data.

The AEC industry for ages has revolved around the all mighty drawing set.  The printed (or hand drawn) set of documents that communicated to the construction trades the extents and quality expectations of their work.  This is no longer the case.  The drawing set is being replaced by digital models.  Digital models heaping with data.  We need the ability to sort though the data, gather specific bits of it to make decisions.  The authoring software usually does a pretty good job of helping us do that, when it falls short, when we need a specific task not built into it, that is when we start to drown.  This is where we need to retool.  Accessing and manipulating databases is what we don't have the skills and tools to handle. Sure many of us learned how to script for AutoCAD,  or maybe to write a macro in excel, but how many of us have learned to write a macro for Revit, or an add-in even.  How many of us have learned how perform a query on an SQL database or to link it to real objects in the Revit database? Do we need to become proficient programmers in C#, Python, Ruby on Rails, or the next hot programming language?

This is the kind of retooling I am proposing.  I don't believe we need to all become programmers before we become designers and engineers, but these are the tools of this generation.  These are the tools that will differentiate us from the competition.  Perhaps we will hire a programmer on staff, perhaps keep one on retainer like a lawyer. No matter the arrangement, programming and data management needs to be part of the tool kit for the BIM world.