Jeremy Tammik

May 2013

Sun Mon Tue Wed Thu Fri Sat
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31  


Twitter Updates

    follow me on Twitter
    May 23, 2013: Effortless Extensible Storage
    Comments: 0 | Categories: .NET , Algorithm , Data Access , Storage , View
    Today we proudly present an exciting and powerful extensible storage utility class library by Victor Chekalin. I'll also add some other assorted items at the end: Extensible storage extension Example 1 – save integer value to an element Example 2...

    May 17, 2013: CouchDB Implementation and GitHub Repository
    Comments: 0 | Categories: Algorithm , Cloud , Element Relationships , External , HTML , JavaScript , JSON , Mobile , REST , SVG
    I more or less completed the research for my cloud-based round-trip 2D Revit model editing project. I'll describe some parts of that, and also address Three aspects of life and programming Room editor navigation Nested asynchronous database call-back functions Roomedit...

    May 15, 2013: DWG Issues and Various Other Updates
    Comments: 0 | Categories: 2014 , Data Access , DWG , Geometry , Storage
    One of the highlights mentioned in the overview of the Revit 2014 API is the FreeForm element API that enables modification of solid geometry imported from DWG or SAT. Several other new DWG and DXF related features include import of...

    May 14, 2013: External Command Lister and Adding Ribbon Commands
    Comments: 4 | Categories: .NET , Installation , Ribbon , SDK Samples , User Interface , Utilities
    I have been asked a couple of times how you can integrate multiple Revit add-ins from different sources together into a single ribbon panel. This topic has also been discussed on the web, e.g. towards the end of whether to...

    May 12, 2013: Removing Unused Mac Architectures, Languages and Files
    Comments: 3 | Categories: External , Mac , Utilities
    Nature abhors vacuum, and every disk fills up. This Mac has a 500 GB SSD, which is great, but gradually getting cramped. Looking around for some disk space management tools, I also happened to stumble across Monolingual and made immediate...

    May 11, 2013: Source Code Formatting and Google Prettifier
    Comments: 0 | Categories: .NET , External , HTML , JavaScript , JSON , Utilities
    As you know, I format my source code to pretty short lines in order to avoid having them truncated by the narrow blog post view column. I also like to present the code colour coded, as it appears in Visual...

    May 9, 2013: Add-In Wizards for Revit 2014
    Comments: 2 | Categories: .NET , 2014 , Getting Started , Migration , Update , Utilities , VB , Wizard
    I updated my Visual Studio Revit add-in wizards and am taking the time to publish them today, which is Ascension Day and a holiday in Neuchâtel. That also gives me some extra time to prepare for the June 3-4 Tech...

    May 8, 2013: Copy and Paste API Applications and Modeless Assertion
    Comments: 0 | Categories: 2014 , Element Creation , Idling , SDK Samples , View
    Here is a detailed description of one of the most exciting Revit 2014 API features that you should have heard about by now and promises numerous uses, prompted by a question from a developer on duplicating views from one document...

    May 7, 2013: A Simpler Dockable Panel Sample
    Comments: 3 | Categories: 2014 , Events , Ribbon , SDK Samples , User Interface
    Here is a very nice little sample on using the new Revit 2014 dockable panels by Håkan Wikemar of AEC, Sweden. In Håkan's words, it is close to the DockableDialogs SDK sample but easier to follow. The DockableDialogs SDK sample...

    May 6, 2013: My Cloud-Based 2D Editor Implementation and Status
    Comments: 0 | Categories: .NET , Algorithm , Cloud , Desktop , JavaScript , Mobile , Server
    Continuing the research and development for my cloud-based round-trip 2D Revit model editing project, here are some issues I tackled since my last report: Updated project description and status CouchDB SVG editor implementation Home page: list all models and select...

    May 2, 2013: Revit 2014 SDK and Visual Debugging Tools
    Comments: 0 | Categories: 2014 , Debugging , DWF , gbXML , Geometry , Utilities , View
    Two hot topics for today, especially the first: Updated Revit 2014 SDK Visual debugging tools Updated Revit 2014 SDK An updated Revit 2014 SDK is live on the ADN Open Revit developer page now: www.autodesk.com/developrevit This version includes RevitLookup and...

    April 30, 2013: Transactions, Sub-Transactions and Transaction Groups
    Comments: 3 | Categories: Getting Started , Group , Transaction
    Here is a recent query from a developer that led to a nice succinct overview of transactions, sub-transactions and transaction groups by Arnošt Löbel. This makes a change from the recent rash of monster posts. The last ten posts were...

    April 29, 2013: What's New in the Revit 2014 API
    Comments: 0 | Categories: 2014 , News , RME , RST , SDK Samples , Update
    Here is one post that I prepared well for in advance, by publishing the previous 'What's New in the API' sections two months back: What's New in the Revit 2010 API What's New in the Revit 2011 API What's New...

    April 26, 2013: Compiling the Revit 2014 SDK
    Comments: 3 | Categories: 2014 , Getting Started , Installation , Migration , SDK Samples , Update
    Here are some notes on the small issues I encountered compiling the Revit 2014 SDK: Compile and install RevitLookup Set up the Revit API assembly paths First compilation run causes expected errors Set up the RevitAddInUtility assembly path PointCurveCreation Office...

    April 25, 2013: Room and Furniture Loops Using Symbols
    Comments: 0 | Categories: .NET , Algorithm , Desktop , Element Relationships , Family , Geometry
    Continuing the research and development for my cloud-based round-trip 2D Revit model editing project, I now implemented the first of the next steps mentioned at the end: Separation of symbol and instance data in my add-in and database structure: currently,...

    April 24, 2013: Migrating a Built-in Category and Other Things
    Comments: 0 | Categories: 2014 , Data Access , Element Relationships , Family , Filters , Getting Started , Migration , Parameters
    Here is a category related issue that appeared when migrating from the Revit 2013 to the Revit 2014 API, plus a several other typical simple little Revit API questions from the last day or two: Migrating the room separation lines...

    April 23, 2013: Accessing and Filtering by Ramp Material
    Comments: 0 | Categories: Data Access , Family , Filters , Geometry , Material
    I had a chat with Ning Zhou, who was away from the Revit API for a while and is now happily back in the fold. He explored how to access the material of a ramp element. Access to Ramp Material...

    April 22, 2013: Grouping Schedule Headers and How to Do Something
    Comments: 0 | Categories: 2014 , Data Access , Schedule , View
    Here is my first real Revit 2014 post, sharing some code friendlily provided by David Robison of Design Master showing how to use the ViewSchedule.GroupHeaders method. Using the ViewSchedule GroupHeaders Method Question: I am trying to call ViewSchedule.GroupHeaders, and it...

    April 19, 2013: Room Editor Project Overview and CouchDB Configuration
    Comments: 0 | Categories: Cloud , Desktop , External , Mobile
    Continuing the research and development for my cloud-based round-trip 2D Revit model editing project, here are some issues I tackled since my last report: Project Overview Replicating a CouchDB with Python Same origin policy snag and resolution Learning and struggling...

    April 18, 2013: Migrating The Building Coder Samples to Revit 2014
    Comments: 0 | Categories: 2014 , Migration , Units , Update
    I started migrating The Building Coder samples to Revit 2014. Funnily enough, on the exact same date as last year for the previous version. The changes are very small this time around. Furthermore, I am well prepared, since I recently...

    April 17, 2013: Perpetual GUID Algorithm and Revit 2014 Product GUIDs
    Comments: 2 | Categories: 2014 , Data Access , External , Installation , Migration , Update
    Every year anew, people ask for the Revit product GUIDs used to identify the Revit installation and stored in the Windows registry under HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Uninstall I already answered several queries from developers lately wishing to update their installers for the new...

    April 16, 2013: Changing a Family Parameter from Type to Instance
    Comments: 0 | Categories: Family , Parameters
    Here is a short and simple question that just cropped up and required some digging around until my colleague Phil Xia came up with the right answer: Question: Is it possible to change the type of a family parameter programmatically?...

    April 12, 2013: Launching AutoCAD within a Revit Add-in
    Comments: 0 | Categories: .NET , ACA , DWG , External , VB
    We looked at the topic of running AutoCAD inside a Revit add-in way back in 2008, in the grey and dusty beginnings of this blog. Many developers have made use of that since then, and the topic is still important...

    April 11, 2013: Desktop to Cloud via DreamSeat CouchDB Client
    Comments: 0 | Categories: .NET , Cloud , Desktop , External , SVG
    Continuing the research and development for my cloud-based round-trip 2D Revit model editing project, I now started looking at storing the plan view room and furniture boundary loop data in the cloud. I wound up the main Revit add-in functionality...

    April 10, 2013: Setting up your ViewOrientation3D
    Comments: 0 | Categories: .NET , 2013 , Algorithm , Element Creation , Geometry , Migration , View
    Here is a contribution from Mario Guttman of CASE, who already made various contributions here in the past. He says: I have been purging my 2013 code of deprecated functions in preparation for my 2014 upgrade. One group of statements...

    April 9, 2013: Handy Utility Classes
    Comments: 1 | Categories: Utilities
    Rudolf Honke of Mensch und Maschine acadGraph GmbH has repeatedly encouraged me to raise awareness of the numerous utility classes available in the Revit API and now provided the following starting point for a discussion of them. One way to...

    April 8, 2013: GeoSnoop .NET Boundary Curve Loop Visualisation
    Comments: 0 | Categories: .NET , Algorithm , Desktop , External , Geometry
    Continuing the research and development for my cloud-based round-trip 2D Revit model editing project, I explained how I use the ExtrusionAnalyzer to create a plan view boundary profile for the furniture and equipment family instances, sort and orient its output...

    April 5, 2013: Getting Started with the Revit API
    Comments: 2 | Categories: Fun , Getting Started , Installation , SDK Samples , Training
    I am regularly forced to return to this topic, to provide a useful starting point for beginners. The amount of available material is getting huge, and some help is required deciding where to start exploring the Revit API. The most...

    April 4, 2013: Curve Following Face and Bounding Box Implementation
    Comments: 0 | Categories: .NET , Algorithm , AU 2011 , Desktop , Element Creation , Geometry
    Continuing the research and development for my cloud-based round-trip 2D Revit model editing project, I looked at using the ExtrusionAnalyzer to create a plan view boundary profile for the furniture and equipment family instances and implemented a utility method SortCurvesContiguous...

    April 3, 2013: Extrusion Analyser and Plan View Boundaries
    Comments: 2 | Categories: Algorithm , Desktop , Failure , Geometry
    Continuing the research and development for my cloud-based round-trip 2D Revit model editing project, I looked at using the ExtrusionAnalyzer to create a plan view boundary profile for the furniture and equipment family instances and implemented a utility method SortCurvesContiguous...

    April 2, 2013: The Revit 2014 Pre-release API and SDK
    Comments: 0 | Categories: 2014 , Fun , Migration , SDK Samples , Update
    Below, we look at how ADN members can obtain the Revit 2014 pre-release SDK, address migration issues, and one or two interesting new aspects of the API. First however, a few words on yesterdays post touting the idea of a...

    April 1, 2013: Cloud-Based Restaurant Seating and Cleaning
    Comments: 4 | Categories: Cloud , External , Fun , JavaScript
    I hope you had a successful Easter egg hunt. As you probably noticed, I have lately been focusing on the research and implementation of my cloud-based round-trip 2D Revit model editing project for the upcoming Autodesk internal tech summit in...

    March 31, 2013: Sort and Orient Curves to Form a Contiguous Loop
    Comments: 3 | Categories: Algorithm , Desktop , Geometry
    Continuing the research and development for my cloud-based round-trip 2D Revit model editing project, I need to determine the boundary loop polygons to represent the furniture and equipment family instances for manipulation on the mobile device. To display a polygon...

    March 29, 2013: Filter for Family Instances in a Room
    Comments: 0 | Categories: Element Relationships , Filters , Performance
    I wish you a Good Friday. Continuing the research and development for my cloud-based round-trip 2D Revit model editing project, I need to determine the boundary loop polygons to represent the furniture and equipment family instances for manipulation on the...

    March 28, 2013: Revit 2014 API and Plan View Room Boundary Loops
    Comments: 6 | Categories: .NET , 2014 , Algorithm , Data Access , Desktop , Geometry , News , SDK Samples
    I am continuing the research and development for my cloud-based round-trip 2D Revit model editing project. At the same time, Revit 2014 has been announced, and I am sure you are eager to hear more about that, especially from the...

    March 27, 2013: Revit 2014 and Supporting Columns
    Comments: 0 | Categories: 2014 , Algorithm , Element Relationships , Filters , Geometry , News , Update
    Revit 2014 Announced As you probably noticed by now, Revit 2014 has been announced. Here are the main product features: Design Enhanced Autodesk Exchange Dockable window framework New stairs and railings Temporary view templates to change view properties temporarily Point...

    March 25, 2013: Relax – Simple Free Cloud Based Data Repository with NoSQL, CouchDB, and IrisCouch
    Comments: 2 | Categories: .NET , Cloud , External , Storage
    Last week, I mentioned my proposal for the Autodesk Technical Summit in June, to present a cloud-based round-trip 2D Revit model editing project. That will obviously required a cloud-based data repository. Talking with my colleagues, all of their suggestions were...

    March 21, 2013: Rename View by Matching Elevation Tag with Room
    Comments: 10 | Categories: Element Relationships , Filters , Fun , Geometry , View
    Today is the last morning meeting with my European DevTech colleagues here in Brittany, and time to travel back to Switzerland. Before leaving, here is a useful real-world productivity tool by Trevor Taylor of ZGF, Zimmer Gunsul Frasca Architects LLP,...

    March 20, 2013: Cloud & Mobile, Extensible Storage Data Use in Schedules
    Comments: 2 | Categories: .NET , Algorithm , Cloud , Data Access , External , News , REST , Schedule , Storage , SVG
    My topics for today are: Cloud and mobile topics I covered so far Cloud-based round-trip 2D Revit model editing on any mobile device using SVG Extensible storage data use in schedules I am still meeting with my European DevTech colleagues...

    March 19, 2013: Parameter DisplayUnitType, Bretagne and Decompilers
    Comments: 1 | Categories: .NET , Algorithm , Data Access , Debugging , External , Parameters , Photo , Travel
    After looking at several performance enhancement possibilities last week, e.g. the sweep family performance enhancement and LoadFamily and collector iteration performance, here is another exciting and pretty sophisticated exploration of internal Revit API implementation details by Victor Chekalin that can...

    March 15, 2013: Determining Purgeable Elements
    Comments: 3 | Categories: Algorithm , Deletion , Element Relationships , Performance
    A question that crops up from time to time and is rather hard to answer exactly and exhaustively is on purgeable elements: Question: What is the best way to get all of the elements that can be purged? I can...

    March 14, 2013: Units and RevitLookup
    Comments: 2 | Categories: Data Access , Getting Started , Parameters , Settings , Units
    Here is a typical question from a Revit API newbie that prompts me to reiterate some important basic beginner information on units and the RevitLookup tool for exploring the Revit database: Question: How can I retrieve the length and mass...

    March 13, 2013: LoadFamily and Collector Iteration Performance
    Comments: 0 | Categories: .NET , Algorithm , Family , Filters , Performance
    Since we are into the topic of family loading performance anyway, after yesterdays discussion on efficient sweep creation, here is another interesting discussion with some useful family loading and symbol filtering benchmarking results and observations by Thomas Jarzyna and an...

    March 12, 2013: Sweep Family Performance Enhancement
    Comments: 2 | Categories: BIM , Element Creation , External , Family , Geometry , Performance
    Now I am back at work again, enjoying the queries coming in from developers, postponing other important things such as my own long-term class and presentation preparations etc. Addicted to helping, that's me. Anyway, here is a piece of doubly...

    March 11, 2013: Export Wall Parts Individually to DXF
    Comments: 0 | Categories: Events , External , Parts , Photo , Transaction , Travel
    I am back from my vacation. It was a wonderful break, and I feel ready and happy to get back to grips with everyday life and work again. A query from a colleague caught up with me already on the...

    March 7, 2013: Curve Evaluation and Song of the Gulls
    Comments: 0 | Categories: Algorithm , Geometry , News , Travel
    Below, we take a look at one aspect of parametric NURB spline curve evaluation and an overview of recent AEC DevBlog posts. First, however, another update on my vacation :-) Marvels of the Song of the Gulls I am winding...

    March 4, 2013: What's New in the Revit 2013 API
    Comments: 3 | Categories: 2013 , News , Travel
    This is the fourth and last instalment of a series publishing the information provided in the 'What's New' sections of the past few Revit API releases help file RevitAPI.chm. The first instalment covering What's New in the Revit 2010 API...

    February 28, 2013: What's New in the Revit 2012 API
    Comments: 0 | Categories: 2012 , News , Travel
    This is the third instalment of a series publishing the information provided in the 'What's New' sections of the past few Revit API releases help file RevitAPI.chm. The first instalment covering What's New in the Revit 2010 API explains my...

    February 25, 2013: What's New in the Revit 2011 API
    Comments: 0 | Categories: 2011 , News , Travel
    This is the second instalment of a series publishing the information provided in the 'What's New' sections of the past few Revit API releases help file RevitAPI.chm. The first instalment covering What's New in the Revit 2010 API explains my...

    February 21, 2013: What's New in the Revit 2010 API
    Comments: 0 | Categories: 2010 , News
    I am in vacation in Italy, and trying not to work. There is one project that I had in mind for quite a while, though, and will start addressing now anyway during this break: I plan to publish the contents...

    February 18, 2013: ADN Revit API Training Material Update and Vacation
    Comments: 0 | Categories: 2013 , Getting Started , Training , Update
    After cleaning up the usage of deprecated Revit API calls in The Building Coder samples, I decided to clean up the ADN training material as well. My original plan was to remove all warnings about deprecated API usage, only I...

    February 15, 2013: Retrieving Schedules on a Sheet
    Comments: 1 | Categories: 2013 , Data Access , Element Relationships , Filters , Schedule
    Guy Robinson recently explained an easy way to access all elements in a schedule. Victor Chekalin picked up and expanded on that. Here is his solution to retrieve all schedules in a view and elements from a schedule. In his...

    February 13, 2013: Eliminating Compiler Warnings and Deprecated Calls
    Comments: 2 | Categories: 2013 , Getting Started , Migration
    I am revisiting this topic again, which we last looked at a year ago, to clean up our usage of deprecated methods in the Revit 2012 API. In that discussion, I also pointed back to previous versions and other related...

    February 12, 2013: Adjustable Versus Perpendicular Spud
    Comments: 0 | Categories: Element Creation , Family , RME
    I recently presented an explanation of some Revit MEP family editor part type classes, which led to a follow-up: Question: Thank you for the detailed answer about the duct fittings. I have a similar problem with one of the pipe...

    February 11, 2013: 2D SVG Editing on Mobile Device with Raphaël
    Comments: 3 | Categories: Cloud , JavaScript , Mobile , SVG
    As I mentioned last week, I took another look at displaying a 2D view of a Revit model on mobile devices using SVG to enhance the room polygon and furniture picker in SVG. That implementation displays a read-only view of...

    February 8, 2013: MP3 Manipulation Using Python, Mutagen and Ffmpeg
    Comments: 9 | Categories: Data Access , External , Fun , M3U , MP3 , Music , Python
    Today is an education day, and I am taking another look at displaying a 2D view of a Revit model on mobile devices using SVG. I started off doing so quite a while back, implementing a room polygon and furniture...

    February 7, 2013: Adding a Button to Existing Ribbon Panel
    Comments: 1 | Categories: .NET , Automation , Events , Ribbon , User Interface
    Here is an interesting user interface contribution from Eduardo Teixeira of Autodesk: Question: I am building a Revit add-in using the Revit API. I would like to add a button for it to an existing out-of-the-box Revit ribbon panel using...

    February 6, 2013: Simple MEP System Traversal
    Comments: 1 | Categories: Data Access , RME
    Here is a simple MEP system traversal implementation that especially addresses the issue of determining what equipment is connected to the systems. The following read-only external command traverses all MEP systems in the document, using the MEPSystem.Elements property to retrieve...

    February 5, 2013: Content Localisation
    Comments: 0 | Categories: Family , Parameters , RME
    How to manage families and content creation is a crucial topic for a large number of Revit add-ins. Brian Johnson, technical specialist on structural engineering solutions at Autodesk in Austin, Texas, discusses how to efficiently address some important aspects of...

    February 1, 2013: Parameters versus Properties
    Comments: 3 | Categories: .NET , Data Access , Material , Parameters , View
    In his comment on reading material asset data, Alexander Buschmann points out that this same information can be accessed without retrieving, reading and converting the data directly from the undocumented built-in parameters. Instead and more comfortably, you can use the...

    January 31, 2013: Change Element Workset
    Comments: 1 | Categories: Data Access , Parameters , Workset
    We discussed reading the workset of an element, either using the built-in parameter ELEM_PARTITION_PARAM or, more easily, the dedicated document GetWorksetId method. This is actually another example of the possibility to choose your data access method by using either a...

    January 30, 2013: Read Material Asset Parameter
    Comments: 2 | Categories: Data Access , Material , Parameters
    Even though it is still January, the days are already getting a little bit lighter, the sun has broken through now and then, sets half an hour later, some birds are starting to tweet around, and one can imagine spring...

    January 28, 2013: Duplicate Built-in Parameter Values and BipChecker Update
    Comments: 4 | Categories: .NET , Algorithm , Data Access , Parameters , Utilities
    BipChecker is a tool that I would recommend every Revit developer to install, just like RevitLookup. It simply lists the values of all parameter data stored on a selected element. Similar access is also offered within RevitLookup by the option...

    January 24, 2013: Basic File Info and RVT File Version
    Comments: 5 | Categories: .NET , 2013 , Algorithm , BIM , Data Access , External , Mac , RST , Utilities
    I presented an initial solution in Python for determining the version of an RVT file on disk from outside Revit making use of its OLE document Structured Storage format back in 2008. David Echols later shared a more full-fledged C#...

    January 22, 2013: Delux Database Enabled Loading and Updating
    Comments: 2 | Categories: BIM , Element Relationships , External
    This paper by Steven Rowland, Interior BIM Manager in a hospital in Stockholm, Sweden, describes a novel method to extend database functionality for a "smart" loading and updating process in very large Revit projects. The method is designed solve a...

    January 18, 2013: Changing Viewport Type
    Comments: 8 | Categories: Element Relationships , Parameters , View
    Here is a question on setting the type of an element by using the built-in ELEM_FAMILY_AND_TYPE_PARAM parameter value, explored by Bettina Zimmermann of NTI Cadcenter A/S: Question: I'm inserting viewports on sheets and I'd like to change the viewport type...

    January 17, 2013: Implement a Progress Bar and Abort a Lengthy Process
    Comments: 4 | Categories: .NET , News , Photo , User Interface , Utilities
    The time has come to talk of many things: of shoes and ships, and sealing-wax, of cabbages and kings [^]... or no, let's continue sticking to the Revit API for now, more or less; today's topics are: A walk in...

    January 16, 2013: Determine Revit Demo Mode and Serial Number
    Comments: 4 | Categories: .NET , Data Access , External , Installation , Win32
    Last week's updated Revit demo mode determination prompted a lively discussion between two strong Revit API experts and blog contributors, Victor Chekalin and Rudolf Honke the Revitalizer, partly on how to further improve the demo mode detection, and mainly on...

    January 14, 2013: Revit 2013 Unit Conversion Utility
    Comments: 0 | Categories: 2013 , Data Access , Migration , Parameters , Units , Update , Utilities
    Here is a Revit 2013 update of the Revit 2011 unit conversion utility, originally posted and described for Revit 2010, by Harry Mattison. In his own words: I was looking at the great unit conversion utility and created a new...

    January 11, 2013: Determine Revit Demo Mode Revisited
    Comments: 10 | Categories: .NET , Data Access , Discipline , External , Installation , Migration , Ribbon , Settings , User Interface , Win32
    Almost a year back, we talked about how to determine whether the current running Revit application is a demo version or not. The initial suggestion was to test this by trying to execute real functionality modifying the model and then...

    January 10, 2013: What I Do, Wall Layers and Open Transactions
    Comments: 0 | Categories: AU , Data Access , Idling , News , Training , Travel
    One of my tasks today and tonight will b...

    January 9, 2013: Set Detail Curve Visibility
    Comments: 1 | Categories: Parameters , RST , View
    Mostly, the Revit API limits an add-in to pretty high-level operations, encapsulating and protecting the parametric BIM from reckless modifications. For the nonce, here is a little bit of nitty-gritty bit manipulation anyway, in a utility method provided by Scott...

    January 8, 2013: URL and Other Buttons, XYZ Points and Vectors
    Comments: 2 | Categories: Automation , Cloud , gbXML , Geometry , REST , Ribbon , User Interface
    Let me summarise a very few of the topics I have been chatting with people about in the past few days: Ribbon button identification Opening a URL from a ribbon button XYZ comparison and point and vector behaviour Autodesk API...

    January 4, 2013: Family Symbols versus Types and SelectionFilterElement
    Comments: 0 | Categories: 2013 , Family , Filters , Vasari
    Here is a question that has been asked a couple of times recently and thus seems worthwhile clarifying: Question: If I access the OwnerFamily.Symbols in a family document, i.e. an RFA file, it returns an empty collection. If I load...

    January 3, 2013: Create FaceWall on Slanted Mass Face
    Comments: 0 | Categories: Element Creation , Geometry
    Happy New Year! I hope you had a wonderful break and a good start into the New Year. I spent New Year's Eve with my sons and some friends in a Swiss mountain village. We had a nice hike up...

    December 21, 2012: GetInstanceGeometry Overhead and Invalid References
    Comments: 0 | Categories: Element Relationships , Family , Geometry
    I made it back safe and sound to Switzerland from the developer conferences, and I note that this special pivotal day – the winter solstice – seems to be progressing normally and we all survived in spite of the end...

    December 19, 2012: Solid Centroid and Volume Calculation
    Comments: 2 | Categories: 2013 , Algorithm , Geometry , Links , News
    I have not posted anything since last Friday, being too caught up in the West European Developer days and travelling. Today and tomorrow we spend in Gothenburg on the last lap of our journey, after Paris, Milano, Farnborough and Munich....

    December 14, 2012: Installing a Macro and Closing the Active Document
    Comments: 2 | Categories: Macro , View
    You can close an open Revit document programmatically. Unfortunately, though, this only works for all except the last one. People keep running into this issue, of course. It even motivated René Gerlach to implement a workaround using SendKeys.SendWait to send...

    December 13, 2012: ToElementIds Performance
    Comments: 5 | Categories: .NET , Cloud , Filters , Getting Started , Performance
    Conversion of a filtered element collector to an explicit .NET collection of elements or element ids is always costly and mostly avoidable and unnecessary. Before getting to the details of that issue, here is another quick snapshot from our travels...

    December 12, 2012: Accessing all Elements in a Schedule
    Comments: 10 | Categories: 2013 , Data Access , Filters , Schedule , View
    Here is a quick little post, with a surprisingly short and simple answer to a short and seemingly difficult Revit API question. Before getting to that, I will just mention that I arrived safe and sound in Paris for a...

    December 10, 2012: BIM 360 Glue REST API Authentication Using Python
    Comments: 0 | Categories: Cloud , Glue , Python , REST
    I provided an overview of the BIM 360 Glue REST API and SDK last Friday and hinted at upcoming further exploration. Well, here it is already. Due to Autodesk University and the world-wide developer conferences, I had to skip my...

    December 7, 2012: The BIM 360 Glue Viewer and REST API
    Comments: 7 | Categories: BIM , Cloud , Glue , REST
    As you certainly know by now, Autodesk provides a range of powerful cloud-based solutions, specifically Autodesk 360, PLM 360 and BIM 360 Glue (reference). Of special interest to AEC developers, the BIM 360 Glue platform includes support for programming interfaces...

    December 5, 2012: Reload Add-in for Debug Without Restart
    Comments: 10 | Categories: AU , Debugging , Utilities
    We explored and learned a lot of interesting areas during the DevLab at AU on Tuesday last week. One recurring theme is how to effectively debug an add-in without having to restart Revit and reload the entire model each time...

    December 4, 2012: Boost Your BIM and Dance with an Elephant
    Comments: 3 | Categories: BIM , Links , Macro , News
    Advent, advent! Yet another Revit API focused blog is born! Harry Mattison, ex Revit API development team, has initiated Boost Your BIM and kicked it off with a series on using the built-in SharpDevelop development environment Revit macros to resolve...

    December 3, 2012: Extra Transaction or Regeneration Required
    Comments: 0 | Categories: AU , Data Access , Element Creation , Regen , Transaction
    Whenever your add-in modifies the model in any way and you wish to query the Revit database, you need to pay careful attention to ensure that you do not retrieve stale or invalid data. If anything unexpected whatsoever happens, one...

    November 30, 2012: AU Classes on Python, UI, Server and Framework APIs
    Comments: 6 | Categories: 2013 , AU , Cloud , Events , Idling , Python , Server , Transaction , User Interface , Vasari , View , Win32
    Thursday was another very full and fruitful day at AU. I gave my third and last class, the most exciting one in my eyes, on some UI and integration aspects. I was unable to attend Iffat May's class introducing Python...

    November 29, 2012: AU Classes on the View, MEP and Link APIs
    Comments: 2 | Categories: 2013 , AU , Data Access , Element Creation , Links , RME , View
    Wednesday was my first normal and full AU day, after completing the developer conference and DevLab activities. I was able to attend two interesting classes held by Revit API developers Steven Mycynek and Arnošt Löbel, and present my own Revit...

    November 28, 2012: The Champions Roundtable at AU
    Comments: 0 | Categories: AU , BIM , Data Access , DMU , News
    Tuesday we held a DevLab at AU successfully exploring and resolving a bunch of interesting issues. I hope to get around to documenting and sharing some of them soon, before being overwhelmed by other new exciting stuff. The most pressing...

    November 26, 2012: Grand Canyon and AU Arrival
    Comments: 0 | Categories: AU , Climbing , Travel
    I always try to arrive early in Las Vegas to acclimatise and recover from jetlag before the conferences begin. I bring my sleeping bag and sleep in the desert. Sleeping in the cold dry winter desert under starlight, watching the...

    November 22, 2012: Survey and Project Base Point
    Comments: 1 | Categories: BIM , Data Access , Element Relationships , Travel , Utilities
    Happy Thanksgiving! I am on the road to Las Vegas now, gearing up for last-minute AU preparations. No actually, I am pretty much set to go. Other upcoming developer conferences still require some work, though. Meanwhile, here is some useful...

    November 20, 2012: Building Performance Analysis and Face Tessellation
    Comments: 0 | Categories: 2013 , External , gbXML , Geometry
    I am busy with Autodesk University and developer conference preparations. The Mac is happily chugging along. Welcome to Building Performance Analysis In spite of these busy times, Emile Kfouri and John Kennedy just launched a new blog on the topic...

    November 16, 2012: Updater Queues Multi-Transaction Operation for Idling
    Comments: 0 | Categories: Algorithm , DMU , Element Relationships , Events , Group , Idling , Utilities
    I recently pointed out that certain operations require multiple transactions to complete. The dynamic model updater framework DMU, on the other hand, takes complete control over the transaction handling, making it impossible to incorporate such a multi-transaction operation. The updater...

    November 15, 2012: Happy Bhai Dooj!
    Comments: 2 | Categories: .NET , Automation , Events , Fun , Ribbon , User Interface
    Happy Bhai Dooj to you! This greeting comes from my colleague Sandeep Kumar in Bangalore, who explains: Bhai Dooj is a festival of prayers from sister to brother, brother's protection for her sister. May we all celebrate this Bhai Dooj...

    November 14, 2012: Roll Your Own Toggle Button
    Comments: 2 | Categories: External , Fun , Mac , Ribbon , RST , User Interface
    Today I took my first stab at creating, compiling and debugging a new Revit add-in on the Mac. I cannot run Revit or Visual Studio natively on the Mac, of course, so those have to remain in Windows, hosted by...

    November 13, 2012: Moving to the Mac
    Comments: 12 | Categories: AU , Data Access , Mac , Utilities
    I have been quiet for a whole week now, busy setting up my Mac, learning new functionality, techniques, keyboard shortcuts, editors, you name it. Under Windows, I was already using quite a number of batch files and command line Unix-style...

    November 6, 2012: Geometry Object Subcategory
    Comments: 0 | Categories: Data Access , Element Relationships , Family , Geometry , Schedule , View
    I received and have started installing and learning to use my new laptop, which is a Mac, I'm finishing up my preparations for Autodesk University, and I'm working on preparations for upcoming developer conferences, so you can imagine there is...

    November 2, 2012: Temporary Transaction Trick Touchup
    Comments: 0 | Categories: Data Access , Geometry , Transaction
    I mentioned a number of uses of the temporary transaction trick a few days back. Autodesk's own Revit API transaction expert Arnošt Löbel has a very important point to add to that discussion: The procedure as described is not always...

    November 1, 2012: Drive Revit through a WCF Service
    Comments: 12 | Categories: .NET , 2013 , Events , External , Idling , RST , View , WCF
    Today, a special titbit for you: How can I access Revit functionality from an external process? As we have underlined many times in the past, the Revit API does not support any kind of asynchronous access. The Idling event, however,...

    October 31, 2012: Display a Geometry Debugging Point in the Model
    Comments: 2 | Categories: AVF , Debugging , Element Creation , Geometry
    Here are some pointers from a conversation I had with Daren Thomas on how to display a reference point in the model for debugging purposes that may be on general interest. Question: I am playing around with the FindReferencesWithContextByDirection method...

    October 30, 2012: The Temporary Transaction Trick for Gross Slab Data
    Comments: 0 | Categories: Algorithm , AU , Data Access , Events , Geometry , News , Transaction
    Last week I provided an updated version of the CmdSlabBoundary external command to determine a floor slab boundary. Here is a follow-up to that issue: Question: The solution provided to retrieve the slab boundary works fine for me if no...

    Feed & Share