InfraWorks Tips & Tricks

From the upcoming AUGI World magazine – March 2019 edition

InfraWorks Tips & Tricks

In my previous Tips & Tricks article (AUGIWorld March 2017) I showed you a way to adjust the height of buildings imported using Model Builder. In this article, I’ll show you a more accurate way of adjusting building heights using aerial images from a drone as well as a few other tips to speed up the design process.

What’s the point?

If you have an FAA Part 107 drone pilot on staff, why not take advantage of them and gather aerial imagery for your InfraWorks model? Using an autonomous flight application (I personally like Drone Deploy for this but there are plenty of other apps that can do this such as Pix4D, Litchi, and more) capture the images, upload them into Autodesk Recap Photo, set the desired coordinate system, and let the power of the cloud do all of the processing work for you. After the photos are processed, download the resulting Recap file and import it into your InfraWorks model. You can then use the point cloud as a reference to sketch the existing buildings and set their roof heights accordingly. And because the captured photos are geotagged with coordinates from the location of the drone at the time of the flight, and you set the appropriate coordinate system, the point cloud will fall right into position within your InfraWorks model.

infraworks matt wunch autodesk expert elite skyviz.io skyviz augi world augi infraworks tips tricks photogrammetry aerial drone photography

Component Roads for All Models

So, you’ve created a detailed component road with multiple lanes, striping, shoulders, curbs, sidewalks, decorations… THE WORKS! But now you need to use the same component road style in a new model. What do you do?? You have two options in this scenario: 1) export the component road style to a JSON file that you can import into another model or 2) copy the component road source files to InfraWorks’ ProgramData directory and make them available to all models without having to export to a JSON file first.

Option 1

On the Style palette click on the Component tab and navigate to the Custom folder (this is where any component roads that you’ve created in the current model are stored).  Click the Save icon to export the current catalog to a JSON file that you can import into another model or share with another InfraWorks user.

infraworks matt wunch autodesk expert elite skyviz.io skyviz augi world augi infraworks tips tricks photogrammetry aerial drone photography

Option 2

If you don’t want to import a JSON file every time you create a new model you can copy the component road source files to InfraWorks’ ProgramData folder and they’ll be available for every new model as well as every existing model you have. When you save a custom component road assembly its definition and preview image are saved to the project directory in a folder labeled “Custom” (similar to the Custom catalog folder in Option 1). Within that folder will be two files associated with your custom roadway style – a .PNG (the thumbnail preview of the road) and a .ACITEM file (this is the actual roadway definition and tells InfraWorks which components to use). To find these files, browse to the following location:

C:\Users\<User Name>\Documents\Autodesk InfraWorks Models\Autodesk 360\<model number>\<model name>.files\unver\Content\Styles\Component\Custom

Then copy them to C:\ProgramData\Autodesk\InfraWorks\LocalLibrary\Styles\Component\Assembly

Every project (new and existing) will now be able to use your custom roadway style. No need to export / import JSON files. Your custom component road style will not appear in the Custom folder. It will instead be located with the other default styles that install with InfraWorks.

Barriers for Steps

A custom barrier style makes quick work of creating steps in InfraWorks. Simply duplicate an existing barrier style, modify the materials and dimensions and you have dynamic steps that you can manually adjust as needed. When modifying a “steps” barrier style, be aware of the following parameters when adjusting the dimensions.

Length = depth of steps

Height = thickness of steps

Thickness = width of steps

infraworks matt wunch autodesk expert elite skyviz.io skyviz augi world augi infraworks tips tricks photogrammetry aerial drone photography red transit

Image courtesy of Wolverine Engineers & Surveyors, Inc. and Red Transit Consultants, LLC

Create Your Own Content

Now this one may not sound like much of a “tip” but….create your own content! Learn the basics of a new application, whether it’s by watching YouTube videos, LinkedIn Learning videos, viewing past Autodesk University presentations, or posting questions on the AUGI forums. When you create your own content, you can quickly make edits to existing objects, creating different versions (like these MUTCD – Manual on Uniform Traffic Control Design – signs, for example) and you get the added benefit of learning a software application. These signs were created using Formit and since I have the source files, I can quickly modify the size, shape and materials to make additional signs.infraworks matt wunch autodesk expert elite skyviz.io skyviz augi world augi infraworks tips tricks photogrammetry aerial drone photography

infraworks matt wunch autodesk expert elite skyviz.io skyviz augi world augi infraworks tips tricks photogrammetry aerial drone photography

Interactive Tours

360-panoramic photos are a great way to show clients and stakeholders existing job site conditions, construction progress, or post-construction/occupancy and marketing, and can be easily embedded into your InfraWorks model. Using a drone, you can quickly capture the photos and stitch them together into a seamless 360-degree spherical image. In the example below, I used a DJI Mavic Pro and its automated Sphere photo capture function to capture the necessary images.

infraworks matt wunch autodesk expert elite skyviz.io skyviz augi world augi infraworks tips tricks photogrammetry aerial drone photography

Once the photos have been stitched together, upload it to an online service such as Kuula.co, copy the unique URL and paste it into the Tooltip field of any object (I prefer POIs) within your InfraWorks model. By adding the URL to the tooltip, it will automatically show the 360-panoramic directly within your model when you hover your mouse over that object. Here’s the direct link to the 360-panoramic image I used in this example so you can play around with it yourself. https://kuula.co/post/7Y7Bn

infraworks matt wunch autodesk expert elite skyviz.io skyviz augi world augi infraworks tips tricks photogrammetry aerial drone photography

And the recent integration of BIM 360 makes it easier than ever to share your design model (and 360-panoramic images) with others. Publish your model, share the link with stakeholders and clients that that tooltip hyperlink will be available for viewing.

infraworks matt wunch autodesk expert elite skyviz.io skyviz augi world augi infraworks tips tricks photogrammetry aerial drone photography

Shortcuts

Shortcuts are a great way to speed up the creative process and eliminate a few clicks at the same time. A few of my favorites that I use all the time are…

SHIFT+Left Mouse Click: Remove a vertex from any object

ALT+Left Mouse Click: Add a vertex to any object

CTRL+D: Duplicate a selected object or group of objects. This comes in handy when you need to manually place trees, cars, city furniture to add content to your model quickly.

For a complete list of keyboard shortcuts for InfraWorks check out this Autodesk Knowledge Network article. https://tinyurl.com/ybmus26u

 

I’d like to hear from you. What are some of your favorite InfraWorks tips and tricks?

Posted in Drone, Infraworks, Point Cloud | Leave a comment

Photogrammetric Mapping

Repost from SkyViz.io

So you’re probably asking yourself “What exactly is ‘photogrammetric mapping’?“, “Why should I use it?” and “Why should I care?

What photogrammetric mapping is

Simply put, photogrammetry is the use of photography in surveying and mapping to measure distances between objects. In other words, the photos that are collected from a drone can be stitched together to create a 3-dimensional mesh, point cloud or orthomosaic top-down image of a geographic location. Think of Google Maps and it’s 3D view capability, but unlike Google Maps, aerial photogrammetry provides up-to-date information about an area which can be measured, utilized in design programs, and shared with stakeholders.

SkyViz.io aerial drone photo video photogrammetry reality capture mapping modeling Connecticut

Why you should use photogrammetric mapping

To answer the question of why YOU should use photorgrammetry, let’s first discuss who uses it.

Photogrammetry is used by architects, landscape designers, commercial property owners & real estate agents, and construction professionals to name a few, as a way to quickly gather up-to-date information about a project site in order to make informed decisions. You can’t expect to make good decisions with bad, outdated information.

Architects can utilize photogrammetry by generating a 3-dimensional mesh or point cloud of existing buildings which can then be incorporated into design software to begin preliminary sun/shadow and massing studies for a new building.

SkyViz.io aerial drone photo video photogrammetry reality capture mapping modeling Connecticut

Landscape designers utilize the orthomosaic image to get an accurate bird’s eye view of project location to determine where things such as walkways, paths, water features and plantings can go.

SkyViz.io aerial drone photo video photogrammetry reality capture mapping modeling Connecticut

Commercial property owners & real estate agents can leverage the power of the orthomosaic image to see an overall top-down view of their properties to quickly locate problem areas on building rooftops that may be in need of repair.

SkyViz.io aerial drone photo video photogrammetry reality capture mapping modeling Connecticut

Construction professionals use photogrammetry to measure stockpile volumes (using multiple meshes, stockpile volumes can be calculated and compared) to get a better understanding of how much material is on site or has been hauled away, and building progression (how far along is construction and how does it compare to the actual project schedule), in addition to getting an overall view of the job site to mitigate or remove any potential safety hazards.

Hopefully the examples outlined above have given you a better understanding of some of the use cases and clients that incorporate this technology into their everyday workflows. Now ask yourself… why should I use photogrammetry & 3D mapping? What benefits could I gain by using this technology? How can I augment my workflow and become more efficient using photogrammetry and 3D mapping & modeling?

Why you should care about photogrammetric mapping

So now you know what photogrammetry is, who uses it and how, let’s answer the “why should I care” question. Let me answer the question with a question… What do you stand to lose by using outdated information? Time? Money? Reputation?? Clients?? Unlike Google and Bing Maps, which updates their aerial imagery every couple of years (typically between 1-3 years), photogrammetry via a drone can give you up-to-date information the same day the mission is flown.

Misinformed decisions can lead to lost time and profitability due to having to make multiple trips to a project site to collect data either by traditional ground-based photography and/or hand-written notes and sketches. Using drones to perform photogrammetric mapping will produce up-to-date, measurable and actionable data that you can comfortably rely on. And the various output formats of photogrammetric mapping means the data – whether it’s a point cloud, orthomosaic tif, or a 3D object – can be used in many of today’s design applications such as AutoCAD, Revit, InfraWorks, Microstation, ArchiCAD and more.

Share the results and design with stakeholders

When it comes time to share a design idea or iteration, that can easily be done using an online service such as SketchFab. Simply upload the design model and send the secure link to owners, property managers, contractors, etc and they can view the model from their web browser or mobile device, eliminating the need install software and download the model data.

 

Still have questions? Please contact SkyViz.io to learn how they can help augment your current workflow by incorporating up-to-date aerial imagery, mapping and 3D modeling.

Posted in Drone, Infraworks, Point Cloud, Revit, SkyViz.io, Technology | Tagged , , , , , , , , , , , , | Leave a comment

Sometimes change isn’t just good…

…it’s necessary to grow as an individual, as a team member and progress as a professional.

Back in September 2017 I left a multi-discipline engineering firm after working there for nearly 17 years as a drafter then proving myself as a CADD Manager and then ultimately becoming the BIM Manager. I needed a change of scenery. A change of responsibilities. A change of challenges. But sometimes that change can end up not being what you thought it would be or hoped for.

So with that being said, I’m making yet another change, but this time I’ll be entrenched in an environment in which I’m most comfortable with – Revit.

I’ve been at Svigals + Partners for less that 2 days but I’m already feeling the love of my fellow team members. But best of all is that I’m once again doing what I know and love.

Thanks to everyone at S+P for making me feel welcome!!

Posted in Revit, Uncategorized | Leave a comment

MORE work with BETTER graphics created in LESS time

Andrew Anagnost’s opening keynote address at Autodesk University 2017 about making more, better and with less was the inspiration behind this blog posting. Here at AI Engineers I’ve been up to my neck in InfraWorks, building models to help us win MORE work by creating BETTER presentation graphics in LESS time.

2563-No Logo-Underside of Bridge

Winning MORE work…

In this day and age of technology and software it’s almost expected of you to create some sort of 3-dimensional model to help tell your story. And here at AI Engineers, that’s exactly what I’ve been doing.

2563-No Logo-Bridge 02

…by creating BETTER presentation graphics…

Using InfraWorks to generate the base model conditions – roadways, water areas, trees, buildings, etc – and a combination of Revit and FormIt to generate additional content, we’re able to create BETTER presentation graphics for proposals and job interviews. These graphics have definitely given us an advantage over our competition. When the client/owner can see their project in 3D, it removes a lot of the “What are those?” questions, and helps put the focus on what’s really important – the final product.

2563-No Logo-Bridge 04

…in LESS time.

And by continuously developing content for models, I’ve been able to create a large library of content that can be quickly imported into a new project model and be up and running on a design-intent model in no time at all.

2563-No Logo-PPT Image 01

Posted in Infraworks, Revit | Tagged , , , , , | 1 Comment

Batch Create Snapshots from InfraWorks Bookmarks using Javascript

Using a few lines of Javascript code you can automate the process of creating snapshots for each bookmark in your model.

To run the code simply open the SCRIPTING editor and copy/paste the code below into the main window then click the START SCRIPT button and the code will iterate through the bookmarks of the current model and create a snapshot for each one. You can modify the length, width and location of the snapshot by modifying the variables in the code below. The snapshots that are created have the same name as their corresponding bookmarks.

// Some global vars...
var doc = app.ActiveDocument(); // the Active Document
var bmList =  app.ActiveDocument().Bookmarks; // a variable to hold the list of bookmarks
var imgWidth = 1920; // snapshot width in pixels. change to your preference
var imgHeight = 1080; // snapshot height in pixels. change to your preference

// Loop through the bookmarks within the model
for (var i=0; i<bmList.length; i++) {
    var bm = bmList[i]; // list of bookmarks
    var strFilePath = "C:\\temp\\";  // Change this path to where you want your snapshots saved
    var bName = (bm.name);  //gets the bookmark name
    var bmName = (bm.name+".jpg");  // appends .JPG to the bookmark name
    strFilePath = strFilePath + bmName;  // concatenate the string of the path (from above) and the bookmark name with .JPG
    CreateBookmarkSnapshot (bName, strFilePath);  // pass the bookmark's name and concatenated file path/name to the CreateBookmarkSnapshot function
}

// Create a snapshot of the active bookmark
function CreateBookmarkSnapshot (strBookMarkName, strJPGPath) {
    doc.MoveToBookmark(strBookMarkName);  // activate the bookmark
    app.CreateSnapshot(strJPGPath, imgWidth, imgHeight);  // create the snapshot using the defined path/name and width & height variables
}

And there you have it. A short, simple script to automate the sometimes tedious process of creating snapshots from multiple bookmarks.

Posted in Infraworks | Leave a comment

Update Infraworks 360 data using JavaScript and a CSV file

You can add or update data for any object within Infraworks 360 using a simple CSV file saved from Excel and a little bit of Javascript coding. Here’s how….

In this simple example, I have a CSV file which has four (4) columns and six (6) rows. The first row doesn’t really count because it’s the header information for the columns. Everything below that is where the magic happens.

IW_JS_001

You can copy/paste the code below to the Scripting dialog. To open the Scripting dialog box click on CREATE AND MANAGE YOURMODEL then click SCRIPTS.IW_JS_002

IW_JS_003

My Javascript code looks like this.

function UpdateBldgData() {
  var db = app.ActiveModelDb;
  var sset = app.ActiveSelectionSet;
  if (sset.QueryCount() < 1) {
    alert("Please select one or more buildings and try again.");
    return;
  }
  var tableName = "BUILDINGS";
  var filter = sset.GetFilter(db.TableIndex("BUILDINGS"));
  var table = db.Table("BUILDINGS");
  var extent = table.QueryExtent(filter);

  table.StartQuery(filter);
  table.BeginWriteBatch();
  
  var read;
  var write = table.GetWriteRow();
  while (read = table.Next()) {
    var coords = file.ReadFile("e:/temp/AU 2016.csv");
    var coordsa = coords.split("\n");
    for (var i = 0; i < coordsa.length; i++) {
      var txta = coordsa[i].split(",");
      if (txta.length < 4) // Number of columns in the CSV file
        continue;
      // If the name of the building is euqal to the record
      // found in the CSV file then...
      if (read.NAME == (txta[0])) { // 0 is the first column - A
        write.USER_DATA = (txta[1]); // Owner - Description
        // (2nd column - B)
        write.DESCRIPTION = (txta[2]); // Update the description
        // (3rd column - C)
        write.ROOF_HEIGHT = (txta[3] * 3.6576); // Update the roof
        // height based on number of floors
        // (4th column - D)
        table.UpdateFeature(write, read.ID); // Update the model
        write.Invalidate();
      }
    }
  }
  table.CommitWriteBatch();
  table.EndQuery();
  app.InvalidateTileCache(db.TableIndex(tableName), extent);
  return true;
}

UpdateBldgData();

And works like this…

  • You must have (in this case) one or more buildings selected to update properties about the buildings
  • There must be a unique identifier for each building that corresponds to the values in the first column. In this case I’m using the building names as a way to check against the information in the CSV file.
  • If one of the selected building’s name is equal to one of the values in the building name column in the CSV file (cells A2 thru A6), then the code proceeds to update the following information
    • The building usage type (the USER DATA property in this example) from cells B2 thru B6
    • The owner (the DESCRIPTION property for this example) from cells C2 thru C6 and finally
    • The roof height (based on the number of floors in the CSV file) from cells D2 thru D6

If you have more data (I.E. more columns) you’ll need to adjust the code accordingly to either include or exclude certain data that pertains to your model.

To run the code, with the SCRIPTING dialog box open, select the buildings you want to update then click the START SCRIPT button. After a few seconds or less (depending on how much data you have to update) the model will be updated. My code took just 0.169 seconds to complete.

IW_JS_004

The final result looks something like this…

IW_JS_005

The highlighted row below is the data that was pulled from the CSV file for this particular building.

IW_JS_006

If you have more data that you’d like to populate your model with but you don’t have enough space in the properties palette well, there’s a solution for that – create a custom im.schema.json file.

Posted in Infraworks | 4 Comments

Create Custom Properties in Infraworks

At the end of my previous article (Update Infraworks 360 data using JavaScript and a CSV file) I mentioned you could create your own custom categories in the Properties Palette. This article will walk you through the different parts that make up the im.schema.json file – the file that tells InfraWorks 360 what to display for each category in the properties palette, the different categories you can expand upon, the different data types allowed for each category, and there is also a sample file you can download to use as a starting point for your own models.

NOTE: I strongly recommend you create a test model that you can work on to test your im.schema.json file before loading up in a working project because if you mess up or decide to remove an entry from the json file, your model will contain some leftovers that cannot be removed.

Now that we’ve gotten the disclaimer out of the way, let’s start creating our custom im.schema.json file. The categories within Infraworks 360 that you can create custom properties for are as follows:

  • BARRIERS
  • BUILDINGS
  • CITY_FURNITURE
  • COVERAGES
  • LAND_AREAS
  • PIPELINES
  • PIPE_CONNECTORS
  • POIS
  • RAILWAYS
  • ROADS
  • TREES
  • WATER_AREAS
  • BRIDGES
  • TRAFFIC_STUDY_AREAS
  • INTERSECTIONS
  • PARCELS (2017)
  • RIGHT_OF_WAYS (2017)
  • EASEMENTS (2017)

The im.schema.json file consists ot two main parts: CLASSES (user-defined categories that are based upon the base categories listed above) and DISPLAY (defines how you see the custom attributes in the properties palette). In addition to the CLASSES and DISPLAY, there are four types of data formats available:

  • STRING – Can contain numbers, letters or special characters
  • INTEGER – A whole number that can be positive, negative, or zero
  • BOOLEAN – A Yes/No or True/False value represented by a checkbox
  • DOUBLE – A decimal number

The following example will be based on the COVERAGES category. Let’s assume for this example that coverage areas will be used to help identify parcels and they will have the following custom attributes defined:

  • Lot Name (string)
  • Lot Number (integer)
  • Private Lot? (boolean)
  • % Impervious (double)

The properties palette will look something like this with our custom attributes when we’re done.

Create Custom 01

So what does the code look like that creates this? Remember the first part is CLASSES so we have to tell Infraworks 360 which class(es) we want to add attributes to.

Create Custom 02.png

And the second part is DISPLAY.

Create Custom 03.png

So when you put it all together, it looks like this.

NOTE: You can use a simple text editor such as NOTEPAD to create your file.

{  
 "Classes": [{  
 "name": "COVERAGES",
   "base": "COVERAGES",
   "Attributes": [{
 "name": "LOT_NAME",
 "type": "String"
 },
 {  
 "name": "LOT_NUMBER",
   "type": "Integer"
 },
 {  
 "name": "PRIVATE_LOT",
   "type": "Boolean"
 },
 {  
 "name": "PERCENT_IMPERVIOUS",
   "type": "Double"
 }
 ]
 }],
 "Display": {
 "en": [{  
 "name": "LOT_NAME",
   "displayName": "Lot Name",
   "category": "Lot Name and Number",
   "priority": "1007"
 },
 {  
 "name": "LOT_NUMBER",
   "displayName": "Lot Number",
   "category": "Lot Name and Number",
   "priority": "1002"
 },
 {  
 "name": "PRIVATE_LOT",
   "displayName": "Private Lot?",
   "category": "My Custom Lot Data",
   "priority": "801"
 },
 {  
 "name": "PERCENT_IMPERVIOUS",
   "displayName": "Percent Impervious",
   "category": "My Custom Lot Data",
   "priority": "802"
 }
 ]
 }
}

For a copy of an im.schema.json file that includes all data types for each of the categories, you can download it from my A360 Drive.

Now that you’ve got your im.schema.json file created with all of the attributes you want, you’ll need to test it out to make sure everything is working correctly. Again, I HIGHLY RECOMMEND you try this out on a test model – one that you won’t mind deleting if things don’t work out quite like you expect. With that being said, the file needs a place to reside and that location will be the same sub-folder located in each model directory structure. Browse to Documents/Autodesk Infraworks Models/Autodesk 360. In this folder will be a series of numbered sub-folders. Each of these folders is the root folder of an Infraworks 360 model. From here it’s a matter of opening a folder, checking the contents and moving on to the next folder until you find the one that contains the .sqlite file for the model you want to apply your custom properties to.

Create Custom 04

NOTE: The .sqlite file name and the model name that you see in the tiles on the Infraworks 360 Home screen are the same.

Create Custom 05

Once you find the correct folder you need to dig a little bit deeper. Double-click on the [model name].files folder and then double-click the UNVER folder to open it. This is where the im.schema.json file needs to reside in order to be read by Infraworks 360 for each project.

Create Custom 06

After you get your im.schema.json file set up with the categories and attributes you want, copy it to the UNVER folder of each project where you would like these attributes. And that’s it.

NOTE: You must close then reopen Infraworks 360 for it to recognize any changes to your .json file.

From here you can create custom themes based on the various custom attributes so whether it’s a broad overview of building usage type, the types or diameter of trees, or the age of certain structures. The possibilities are endless.

Posted in Infraworks | 3 Comments

Adjust building height using image date

Infraworks’ Model Builder is great for giving you a starting point for your model but the building heights aren’t always accurate when the data is imported. Sometimes the building heights aren’t even close to what they are in the real world, but there’s a relatively easy way of adjusting them so they’re shown closer to their actual height. The key is to use the shadows of the satellite imagery along with the approximate date of the image to set the building height.

Start off by creating a model in Infraworks either manually or by using Model Builder. We’ll need the help of the OpenStreetMap’s Bing Imagery Analyzer tool (direct link). Zoom into your project area by entering the address of your project site in the search box in the upper-right hand corner. It will show you a series of tiles with the date the image was taken (month/year). As you zoom in/out there may be more or less tiles available and at different dates.

BLDG_HEIGHT_01.png

Set the date in your Infraworks model to be close to the OSM Imagery Analyzer date. You may need to adjust the time as well to get the shadows of the buildings to line up.

TIP: To make the imagery in the Infraworks model easier to see turn off the following surface layers; roads, railways, watermultis, waterareas, waterways, landuse

BLDG_HEIGHT_02

Because Bing Maps’ Birds Eye view is limited to just four views (North, South, East & West) you can’t always get a good look at a building. And sometimes the stitched images don’t always come together nicely.

BLDG_HEIGHT_03.png

BLDG_HEIGHT_04.png

BONUS TIP: Use Google Maps’ 3D view to verify building shape and roof heights.

To view Google Maps in a 3D view simply switch to the Earth view, hold SHIFT+LEFT MOUSE BUTTON and move the mouse. The view will automatically change to a 3D view so you can get a better look at the buildings and surrounding areas.

BLDG_HEIGHT_05.png

Posted in Infraworks | Leave a comment

What’s new in InfraWorks 2018.1

So what’s new in InfraWorks 2018.1? Here’s a little teaser…. parametric components for bridge rails, barriers and more, linear feature extraction from point clouds, and a Parts Editor.

Click this link for more information!

Posted in Infraworks, Point Cloud | Leave a comment

AU2017 Class Presentation (teaser)

I am excited to say that once again I’m heading back to Autodesk University in Las Vegas to present and co-present two awesome classes. My main class is focused on InfraWorks and how easy it is to use for architects to perform various analysis and create image, video and VR presentations.

InfraWorks for Architects

InfraWorks for Architects – AS120173

The other course, however, is probably my favorite. It’s a demonstration course that will teach the participants how to diagnose, troubleshoot and repair (most) corrupt Revit models.

Code Blue

Code Blue, Dr. Revit! – How to Resuscitate Corrupt Revit Models – BLD125158

Be on the lookout for these courses when class selection opens up August 9, 2017.

InfraWorks for Architects – AS120173

Code Blue, Dr. Revit! – How to Resuscitate Corrupt Revit Models – BLD125158

See you all in Vegas!!

Vegas

Posted in Uncategorized | Leave a comment