Two useful community contributions and some thoughts on global warming:
A collection of tiny tools to work faster in Revit. Most of these commands are available in Revit, but as options in secondary windows. Since these actions are repeated often, the goal is to access them quickly, using keyboard shortcuts.
Many thanks to Francisco for these, and pointing them out in his answer to the Revit API discussion forum thread on a pyRevit extension to toggle point cloud visibility.
Some personal background (skip if not interested): I’m originally from Brazil but grew up in New York and now live near Seattle. I have been in the manual labour side of the residential construction industry since I was 18 (I am now 38). Because of my personal circumstances, I was never able to receive any formal education or degrees but have always loved programming and software development. This love became my favourite hobby, making me great at googling and pushing myself to learn all that I could. Almost 4 years ago I was introduced to Revit and became certified in it, which marked the start of my employment at The Conco Companies. Conco is a commercial concrete contracting company in the west coast of the US. I was hired as a 'VDC modeler' in the estimating department, and for the first time in my life, I had a desk job. While performing my duties in this role I discovered the great potential that Revit provides in the form of the Revit API. I was able to take all my informal experience and apply it to developing addins that were very helpful to the department. I was finally getting paid to do what I love, even if I couldn’t do it all of the time (after all, estimates still had to go out). As of June of this year I left Conco and started my own company (BIMDev LLC), a one-man operation. I connected and have been working closely with another developer who incidentally has a similar story but has been doing this much longer and is better known in the community, Michael Kilkelly of ArchSmarter.com. My former company, Conco, also agreed to become one of my clients, and between the 2 I have been very busy creating addins (and enjoying every second).
The extension: One of the things that Michael opened my eyes to is the amazing convenience of using Visual Studio’s 'Shared Project' template to keep most code for an addin in a single place, and then using conditional compilation symbols where the different versions of Revit differ. Based on this concept, I created an extension for visual studio that does the following:
- The solution generated by this template consists of one project for each Revit version from 2018 forward.
- Each project references a single 'Resources' project for files, images, and icons they have in common.
- Each project references a single 'Shared' project where all code they have in common resides. See the documentation on Shared Projects.
- The Compilation Symbol for each project is set to Revit2018, Revit2019, etc.
- RevitAPI.dll, RevitAPIUI.dll, and AdWindows.dll are all included and referenced in the template using the latest version for each Revit year in the corresponding project.
- Each project will have its own Revit manifest file (.addin), and that file is set to Copy Always to the output directory. A new GUID is automatically generated for the AddinId.
- Post-build events are generated to copy any .dll and .addin files from the output directory of each project to the respective installed Revit addin folder.
There are at least 2 additional major features that I envision this extension having:
Present a form to the user where he can choose if the addin should be an 'Application' or a 'Command', choose if he wants the post-build events mentioned above, and fill out additional details that will auto-populate the
.addin manifest and the
Have a separate folder in the 'ProgramData\Autodesk\Revit' directory named 'Addins_Experimental'. Then detect when a debugging session begins, rename the 'Addins' folder to 'Addins_Actual', and change 'Addins_Experimental' to 'Addins'. When the debugging session ends, reverse the name changes. The idea here is to make it so that addins that are in active development can be loaded in isolation from any others, and running Revit without the debugger only loads the production-ready addins that a user has installed.
The community aspect: I already have about 40 hours sunk into this extension so far, and I have decided to make the project public on GitHub. I opted to put it under the GLP-3 license (as opposed to MIT) because I’m still a very small name in this space, and my new company could still fail, so asking people who do take my code to mention my name felt like a good idea. I have also published the extension as it is so far to the Visual Studio Marketplace. Lastly, I have a problem I am trying to resolve, and I have asked the question both on StackOverflow as well as Microsoft.
My extension seems to be one of only 4 that appear in the Visual Studio Marketplace when you search for 'Revit'. Another is the template that you maintain, and none but mine seem to use the 'Shared Project' functionality or be as ambitious. That makes me think that this is really something that could benefit the community. This is a project I intend to maintain long term, especially since it is a tool that I myself intend to use regularly. I would really love to hear any suggestions you and the community may have for this extension. I look forward to participating much more in the Revit software development community now that I am on my own.
Here are the links:
Thank you for your attention, and I’m sure we’ll cross paths again in the forums.
Many thanks to Leandro for this tool, and good luck with your new enterprise.
I read a scary article in The Economist about how the temperature on Earth keeps rising: The IPCC delivers its starkest warning yet about climate change – The effects of a hotter planet are visible around the world (you may need to subscribe to read the full article). They discuss how to reduce greenhouse gas emissions, especially methane, and actively remove carbon dioxide from the atmosphere to prevent the warming of our planet.
On the same topic, I recently finished Jonathan Safran Foer's book We are the weather.
I highly recommend it to anyone interested in an analysis of what each of us can do about the climate change problem right here and now. Basically, he recommends we eat less meat and consume less animal products in general. According to the reliable sources he quotes, raising animals is contributing somewhere between 14.5% and 51% of all greenhouse gases, more than airplanes, cars, industry, construction, heating, anything and everything else.
Carbon farming, carbon removal by agriculture and land management, might help on a global scale; however, for an individual, he identifies just four immediate relevant options:
- don't fly
- don't drive
- don't have children
- don't consume animal products
The fourth is something we can act on immediately, the next time we sit down to have a meal.
This list is rather focus on don'ts... I prefer to look at the positive side of things, and what I do want to do. That take longer to explain, though :-)