This is a short macro that I wrote today for a task that has always been bothering me. I spend equal amounts of time changing the first several text notes by hand, looking for an existing solution in the Revit Store as well as everywhere else (Google) and finally writing the small script up.

It is the smallest possible amount of code and you can surely make it prettier if it is your wish. You can have it up and running in no time by following these steps:

1.      Go to Manage tab ->Macro Manager -> Application

2.      Click on ‘Module’, give it a name

3.      Copy/Paste the code below right after ‘Revit Macros generated code’  (click after the last ‘, hit ‘Enter’, paste)

4.      Go to Build -> Build Solution (F8) and Ctrl+S to save it out.

5.      Close the Sharp Develop window

6.      Under the Macro Manager you should now see your new Macro named ‘Capitalize’ if you haven’t changed it

7.      Now ‘Run’ the Macro and select the Texts you want to change.

There you go. You now write Revit Macros. Congratulations!

 

public void Capitalize()

  {
            UIDocument uidoc = ActiveUIDocument;
            Document doc = ActiveUIDocument.Document;
            
IList<Reference> selection = uidoc.Selection.PickObjects(ObjectType.Element, “Text to edit“);

if(selection.Count == 0)
{
TaskDialog.Show(“Error“, “No selected elements“);
return;
}

using (Transaction t = new Transaction(doc, “Capitalise Text”))
{
t.Start();
foreach(Reference r in selection)
{
TextNote note = doc.GetElement(r.ElementId) as TextNote;

if(note != null)
{
note.Text = note.Text.ToUpper();
}
}
t.Commit();
}
}

Update: Family Editor Interface was added to the Featured App category! 

On 30 May 2016, Archilizer’s first plugin got a place in the featured apps in the Revit Store. We are really happy with this fact and we hope that now the plugin will have the chance to reach and help even more people out there!

*** 

This is a special one for me because this is our first officially published Archilizer Plug-in! I am incredibly excited about the launch of this first digital toddler and I wish it all the luck and happy moments with its new users!

In this Plugin Review, I will go into detail of what the plugin does and where to download it from but first, let me give you a few words about the process of submitting a plugin to the Autodesk Plugin Store, as this might be interesting to the few of you who are thinking of sharing their programmatic work with the world. Having been through the process once, I would dare to say that it might be easier the next time around, however for a first timer, the venture sure was intimidating. In a sense, writing the plugin itself was the easier part, as following the admittedly many Autodesk sources was actually a challenge.

Your first action, after creating an account in the App Store website, is to go to the following link, read through the text and head to the bottom of the page, where you will see a little matrix with video tutorials. Watch those at least a few times. No go back and read the text again. Once you’ve gained enough courage, start the procedure of launching a new plugin and refer to the above resources as you need. Every single bit of the process can take a lot of resources. Personally, I would recommend outsourcing the logo design, because even for a seasoned graphics pseudo-designer as myself, I ended up producing a crappy logo with an even crappier resolution, for some yet unknown reason (this will be the first thing that I will be updating as well).

Challenging as it may be, don’t worry all that much. After putting everything down the way it is described, publish your work and you will have the pleasure to communicate with the IT Support team which will guide you through the rest of the process. It literally feels like a humanized bug removal tool. On every step of the way, they will report when they encounter a hurdle or an obstacle and make you fix it. From start to finish, the whole thing took about a month. I hope this gives you a feeling of what it’s like to publish a plugin to the Autodesk Store. Don’t hesitate to ask me any questions. Now let’s get back to this plugin and see why it is so adorable!

What it does.

Family Editor Interface takes only those parameters which manipulation is useful in creating an intuitive feedback on how your family is behaving and slaps them onto a simple applet that sits quietly in your work field. The simple sliders represent the values of those parameters. They give you a meaningful range of values to play with and test the mechanics of your door, window or furniture system. The plugin is conceptualized as an interactive tool that makes the process of family creation more enjoyable. The plugin is most certainly influenced by Grasshopper, Dynamo and the like and is one of those quality-of-life add-ins which you could do without but just makes your task more pleasant.

Who is it for.

Anyone who spends enough time in the Family Editor. In my practice, enough time is the time necessary for you to create a responsive, well-parametrized family which does not break in contact with regular users. A complex family has a lot of interconnected relationships between its parameters and even for its creator it is sometimes hard to intuit the internal logic of the structure. That’s when this simple interface comes really handy, as it allows you to quickly test the functionality of all your ‘important’ parameters, or in other words, the parameters which drive the family. However, once used to this extra panel, it becomes a second nature to just check your parameters and I tend to use it even for small components with just a Width and a Height parameter.

Is it free?

It is absolutely free and if there is enough interest from the community, I will open the source on GitHub, so folks can play with it and take it in the direction they want. Meanwhile, I will be taking on board any comments and suggestion in order to make the tool as user-friendly and useful as possible.

How to use:

You can find a few short video tutorials on how this plugin is used on the publisher’s website. I would like to think that the tool is quite easy to understand and use, but if you have any suggestions, please write me in the comments section below or by contacting us.

Tips and Tricks:

Use the ‘Refresh Document’ button to quickly ‘reset’ the defaults of your parameters and incrementally reach a higher/lower value.

Try it now! Test it for free! 

You can find the Family Editor Interface in the Revit section of the official Revit Plugins Store here:

When managing projects of non-small sizes, one of the tedious routines that you are required to go through is to somehow match information that is part of the project’s Sheet set and its View set. The idea of cross-referencing data between various elements is native for information management, yet Revit does not yet cover that aspect for us. Dynamo, however, does (so, in a sense, Revit does. Duh).

Traditionally, we could approach that task as follows:

 

  • load all sheets
  • load all views
  • for each sheet and view, see which view the sheet is sat on and finally
  • check if the corresponding parameters match and if not
  • do something (make them equal)

 

Now, there is one little bug that has been migrating with every update of Dynamo, and the brand new 1.0.0 (Congratulations!) version still apparently still got it – when retrieving elements by Category, the View Category will spit a message which states that Template Views are not Views. That’s fine. There is an even nicer node that simplifies the task for us:

Sheet.Views

What this node is supposed to do is to only select those Views that are place on the set of Sheets it is given. Now we can skip a step, retrieve only the Views that matter, and continue with our cross-referencing. .. but this node ,too, does not work.

That’s also fine. Here is the solution to the problem, written in python code.

.. and here is what the definition looks like:

What we did here is that we collected all the sheets in the project, using the Dynamo node of retrieving All Elements by Category, then we fed the resulting list together with a couple of shared parameters, which both the Sheet and the Views of the project use, and we executed the python code which, on one hand matched the information of those shared parameters, and on the other, gave us a handy list of ‘failed’ views. Those ‘failed’ views are simply the views that had View Templates assigned on, controlling and thus ‘locking’ the shared parameters.

While we are on the subject of python and getting instance parameters from elements, I want to point out the correct (at least for now) way of doing it.

The general syntax of this command in Python is:

element.Parameter[“Parameter Name”].AsString() – to get (can also be .AsInteger(), .AsDouble()) the parameter, or

element.Parameter[“Parameter Name”].Set – to set the parameter.

This is important to know as a lot of times Dynamo tasks revolve around Parameter manipulation and there is hardly any information out there that explains how this can be achieved in Dynamo with Python.

I hope that custom Dynamo definition can be of help to you in your BIM journeys my friends! Good night and best of luck.

Site Designer for Revit 2015/2016 R2 has been out for a while now. For those of you who may have had the chance to register its emergence and got quite excited by the beautiful video demonstrations out there (like I was) but haven’t had the time or reason to give it a try themselves, here is what you might need to know.

Site Designer is officially released plug-in, which in a way means that Autodesk supports its existence to the point of entrusting the content of this package to be part of Revit’s core installation, or at least the R2 version of Revit 2015/2016 available from the subscription center (‘Download is Exclusive to Autodesk Subscription Customers’). Once installed, the plugin comes with its own tab in the ribbon and at first glance, the amount of icons that pop out is quite impressive.

Linear workflow – this is the first thing that you notice when working with the SD is the linear workflow it follows. This is quite common for any programmatic tool and after the initial and inevitable frustration that follows every time you pick up a new piece of software, you start to get it. Following the logic of the tool equals using the icons from left to right. First, you either have to import an existing Toposurface or create one using the traditional Site tools (Massing & Site). Second, you set a surface as a base, third you start creating your elements and fourth, you simply modify them. There might have been a fifth step in which you document your work, but I did not get that far.

The problems with this type of flow come when you are already waist deep into changing and fiddling with your terrain and you realize that something major needs to be updated. There simply isn’t a way to revert to an earlier stage of your work and in this respect the workflow is quite destructive. This becomes a massive problem when you take into account the ..

Incredibly slow performance. Chances are that you are going to want to use SD on a real project where a few hectares of landmass need to be worked on. The bad news is that any sort of transformation causes SD to create a huge number of points. This leads to operations that take anywhere from a few minutes to an hour to complete. This is simply not feasible in terms of the standards of software responsiveness that we have adopted nowadays. Coupled with the frequent crashes and the destructive workflow mentioned earlier, working with SD on any sort of deadline quickly becomes an exercise of hair-pulling.

Soft terrain – really nice concept. This allows you to modify a plot of land the way you always wanted, raising it as a whole and with a certain grading to the boundaries. It takes while to complete, but I did enjoy the result when one was produced. A nifty trick that I found was that I can ‘reset’ my topography by modifying it. I doubt that was the intended workflow.

Featured line – it didn’t work.

Point Wipeout – should come really handy when you start fine-tuning your design. I couldn’t get that far.

Streets – now, this is an amazing concept, because, in theory, this should allow you to create a street network with such an ease that your CGI team will love you and buy you beer and cookies. In practice, this feature is useless as it limits you to a fairly primitive set of geometric shapes and connections, so unless your project is a small house with a single front to the highway, you wouldn’t find a good use for it.

This is the point where I started to give up. I did try curbs and retaining walls, which caused the already strained model to crash. The concepts themselves are amazing and I would have loved to implement it on a real project, but I simply couldn’t find a way to submit something that would not allow my client to alter or even use the model for any meaningful purpose. After I’ve spent a few days of hard work trying to tame this beast, I had to revert to the traditional Modelling Site tools in the ‘Massing & Site’ tab.

To me, Site Designer, at least at this stage of development, is similar to what a Barbie Kitchen Set is to a professional chef. Sure, there are hobs and ovens and mittens and plates, but you might reconsider using that particular kit for your 3 star Michelin dinner.

I think that the officiality of this release might have been a little premature, but I hope that the feedback from the community will get this project faster to the point where we can finally have something to do our landscape with. I stay positive that Autodesk would not leave something as half-baked as the current Site Designer sit for too long without taking a step to either fully integrate it within the software or leave it altogether, finding an alternative that will satisfy the needs of Landscape Architects, Civil Engineers and Architects that use Revit as their BIM platform of choice.

After a short delay, a BIM Consultancy gig in Doha and a trip in the desert (thank you Velina for organizing this amazing event and thank you once more for bringing us home in one piece), I have decided to do a short review of a really neat and useful Revit Plug-in, called ‘View Duplicator’ that I recently came across.

Without further ado, I give you the ‘View Duplicator’. View Duplicator is a great small Revit plugin that solves one of the many user experience issues that vanilla Revit has – namely, it gives you the ability to duplicate series of views in one go, or in other words, it is a ‘batch duplicating tool’. If you are anything like me, you would expect certain functionalities to come out-of-the-box with your software product of choice and indeed, I have always imagined that right-clicking on a selected number of views will allow me to duplicate said views with, perhaps, attaching a (1) prefix to preserve the imperative of name uniqueness.

In Revit 2016 this is still not the case, and so the nice people from Theptech (the P Tech?) have created an add-in that allows you to overcome this minor obstacle. And since a picture is worth a thousand words, I have prepared a series of GIF images to demonstrate how the tool works.

As with every other external plug-in, you need to first download it and install it, before you can take advantage of its immense power.

Head to https://apps.autodesk.com/ and look for ‘View Duplicator’. Download and install the plugin. This is best done with your Revit turned off, although it will probably work even if you have it working at the time of the installation. You can always uninstall the tool by double clicking on the same installer file.

Now, with that out of the way, start your copy of Revit. Revit add-ins normally occupy the Add-Ins tab on the ribbon, so on opening the tab you should be greeted by the stylish purple twin sheets of the View Duplicator icon.

The interface of the tool is quite simple – 4 panels will guide you through the whole process. The first one gives you the ability to select the views that need duplicating. A nice touch is the fact that the views are organized by types, which adds to the clarity of the exercise.

You can then choose to assign a view template, which is indeed quite handy. Finally, you can customize the naming of the newly created views in two ways – by giving a prefix or a suffix to the View Name and also to the Title on Sheet.

Yet another pleasant surprise was the fact that the author contacted us personally when we made the suggestion to incorporate a ‘Duplicate with Detailing’ toggle to allow that extra bit of control. There is obviously a round of changes coming which will hopefully incorporate that little wish of ours.

All in all, View Duplicates is a simple, yet powerful plugin that overcomes a user experience flaw. As with many other automation tools, its usefulness is fully realized when a large number of elements are affected, but from what we’ve seen so far, ‘View Duplicator’ has the potential to save you from the ‘Death by Many Right Clicks’.

Thank you for stopping by and as always, we hope it was useful.

Revit is an amazing CAD program. (And so is ArchiCAD, all right. I just happen to know and use Revit). Despite the fact that it has been around for quite some time and given the monstrosity of Autodesk as a company (therefore allowing it to push its products like no other), I feel that it has taken more than it should have to get Revit to the prestigious spot that it is now occupying. Of course, Building Information Modelling wasn’t as important as it is now, but I think that one of the reasons that made it difficult for Revit to shine (and allowed AutoCAD to still be lurking around) was the lack of sex-appeal, and I am referring to the quality of the draftsmanship it allowed us to produce out of the box.

For the majority of the architects, or at least, the ones that I know and have worked with, design expression is of extraordinary importance. So much so, that Illustrator/Corel have always been an inseparable part of all our submissions. The ability to control every bit of detail in one’s drawings is of such importance that, again, lots of people prefer to work in a 2D package than to take the world of benefits that comes with using Revit.

One instance where Revit has failed to deliver user control, where it is needed, is in the assignment of line weights for wall hatch patterns. I remember a project where we finally decided to overlay all of the walls with filled regions in order to achieve the desired look (it wasn’t my idea, but I played along).

Cutting to the chase, let me explain about the technical side of the problem. There are several system families that use fill patterns, for either their section or projection representation. The type of those patterns comes from the material of said element. So far we were able to override the color of the pattern (and indeed one of the “viable” workarounds has been to assign a grey color (to the pattern) in an attempt to give it a lighter touch). But we weren’t able to assign a different line weight to those patterns.

In theory, Revit allows you to change the default values for “all” object styles from the object style interface. For some reason, however, those hatch patterns are not among the categories that users have control over.

Here is an old thread in which the discussion revolves around another workaround in which pen 1, which is the default number for the patterns (trial-and-error) is set to the lowest possible value. And since pen 1 is the default for a lot more objects, we were supposed to beef up all the remaining values with +1. However, one immediate problem might be that, as with the hatch patterns themselves, there probably are more categories which line weight assignment has not been exposed. Furthermore, it’s one of that task that feels time-consuming in a debilitating kind of way. This is another approach, but it still doesn’t feel right to me.

The good news is that nowadays we have Dynamo! While setting up a company templates the other day, I remembered how pressured I felt trying to fix the same issue on a deadline before, so I decided to give it another go. I started by theorizing that I can programmatically increment all the line weights as described in the existing workaround. While I actually managed to achieve this, I was really surprised to find that now my hatch patterns were controlled by pen #2. It took a little bit of back and forth until I finally narrowed it down to just a few Categories that controlled those pesky infills. I was able to take control over 4 family categories – walls, floors, ceilings, and roofs. Each of those, in turn, had a surface pattern and a cut pattern property that I was able to override.

You can see this short video demonstrating the functionality of the definition. There is still more investigation that I need to do because I still have no idea how to override the values for the non-system families’ pattern infills.

Having said that, this definition can be useful to a lot of people out there just the way it is right now. You can download the Dynamo definition here. You would need to have Dynamo 0.90 installed, but that shouldn’t be a problem as it comes pre-installed with Revit 2015. If you have any questions, please feel free to contact me.

I have been doing work for a Doha-based practice for the last couple of days. It was a short gig, an in-and-out operation to help the team push through a rough deadline and since I was the one setting up their Revit Model just a month prior, I was in a great shape to take off the pressure off their team. The workflow was a bit more complicated, as we were working off a cloud repository, which allowed us to use the same Central Files, but required a bit of planning ahead. Aside from that, what I found quite annoying was the constant error messages that I kept running into – many times their inexperienced team would forget to relinquish certain elements, which would freeze my progress for short but increasingly more frustrating periods of time. I reached my limit of Skype requests soon enough, so I did the only natural thing – I Relinquished All Theirs. Here, let me show you how this can be done – it’s really quite simple.

By default, the username that Revit assigns is taken from your Windows login account. Let’s assume that your account name is ‘janeroe’. Your handsome colleague ‘johndoe’ from the 3rd floor has been playing with the Central File the night before and is now late for work. You get an urgent memo from your boss ‘hereyougo’ saying that you need to change the grid of the curtain wall system. You dash to your Revit icon, open the local file (which now takes 2 minutes in which you start to silently panic), Reload the Latest changes, as you should. You open the view, head to the curtain wall and the moment you try to unpin the first grid line, this error message greets you from the screen:

What you do next is the following:

  1. Open a new Revit session.
  2. Go to big ‘R’, Options and under ‘Username’ change the name to ‘johndoe’ (or whatever the name of the user that has the rights of the element is in your particular case).
  3. Go to ‘Collaborate’ tab, Synchronize with Central -> Relinquish All Mine -> head back to your other Revit session -> Reload Latest there and see if you can now edit the element. You should be.
  4. Go back to the extra Revit that you have opened with the ‘johndoe’s credentials. Close the file, change the user back to your original username and close the program. You can now keep working in your local copy.

You shouldn’t do that all the time or recklessly, those limitations were set there for a reason. This is a last resort measure that can save you at times of trouble. Normally, if you have your colleague within earshot, the right thing to do would be to ask politely for a Relinquish.

I hope that you find this tip useful! Have a great day and be nice to your colleagues.

Hey folks,

Today I am going to show you how to reveal all levels in a Revit project, because:

  • Have you ever opened an Elevation or a Section View only to find that your levels have miraculously disappeared?
  • And then opened every single section and elevation, but couldn’t quite figure where they went (pondering on the meaning of the words ‘propagate extends’ for at least few minutes)?
  • Googled ‘CAN’T SEE LEVELS REVIT’ to no avail?
  • Wasted time, money, hair and youth, but never got a satisfactory answer on how to make those pesky levels appear on your command? 

That scenario is so common that I finally took the time and came up with a bullet-proof, panic-free, robust solution that I now use every time the proverbial composting material hits the fan. I am going to explain to you how to do it, but I need to warn you that there are many reasons why something can be hidden in Revit and I am not going to attempt to cover all of them here. My favourite article on the topic is the 33 ways to find stuff, although you should know that this number is even higher. So, without further ado, here is the algorithm:

  1. Open your file, open a plan view, make sure that ‘Elevations’ and ‘Scope Boxes’ are turned on from the Visibility Graphics interface.
  2. Create a new elevation (View Tab/Elevation View) (it can be a section too, but let’s stick to elevations). Create a new scope box (View Tab/Scope Box).
  3. I prefer to do this in a 3d view, but you can do it in an elevation view just the same – your goal is to adjust the scope box so that it ‘contains’ all the levels inside its horizontal boundaries. This means you need to stretch the bottom and the top grid of the scope box – the bottom needs to be below the lowest level and the top – above the highest one.
  4. Now go to the newly created elevation view. Let’s take the worst-case scenario, in which no levels are shown. Create a new dummy level (shortcut ‘LL’). Don’t forget to delete this level after you are done with this exercise!
  5. Select the level and right-click -> select all instances in the project. (shortcut ‘SA’). You should observe that you have selected at least several levels.
  6. With all the levels selected, go to their Properties and assign your brand new scope box. You should now see all your levels neatly aligned within the boundaries of the scope box!
  7. In addition, you would want to repeat steps 5 and 6 for all your level types. Let me go back a bit – like any other element in Revit, levels can have multiple types. The command ‘select all instances’ implicitly says ‘of this type’ and therefore, in order to reveal all the levels in your project, you should repeat the above process for all level .. types (and so for all instances of those types).

That’s it! It wasn’t so hard, was it? What you would like to take home from this lesson is that scope boxes are a great way to control your datum elements and you should learn how to use them to your advantage. Of course, handling multiple scope boxes can be cumbersome, but that’s a topic for another discussion.

I hope you enjoyed this little Revit tutorial – have fun revealing all your levels!