Back

Tips for Increasing Efficiency

One of the most common questions I get when talking about InfraWorks® 360 is, “How can I do [blank] easier/faster/more efficiently?” I’m going to share a few tips and tricks I’ve learned through trial and error, brainstorming with other users, or after getting fed up with doing the same repetitive task over and over.

Adjust Building Heights with Image Date

InfraWorks 360's 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. 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 360 with Model Builder. We'll need the help of the OpenStreetMap's Bing Imagery Analyzer (Figure 1). 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 then 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  tiles available and at different dates.

Figure 1

Set the date in your InfraWorks 360 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.

Figure 2

BONUS TIP #1: To make the imagery in the InfraWorks model easier to see, turn off the following surface layers: roads, railways, watermultis, waterareas, waterways, and landuse.

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

Figure 3

BONUS TIP #2: 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.

Figure 4

Create Snapshots from Bookmarks with Javascript

With 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 and width of the image and the location of the snapshot to be saved by modifying the variables in the code below. The snapshots that are created have the same name as their corresponding bookmarks.

// Some global vars...

// the Active Document

var doc = app.ActiveDocument(); [M1] 

// a variable to hold the list of bookmarks

var bmList =  app.ActiveDocument().Bookmarks; 

// snapshot width in pixels. change to your preference

var imgWidth = 1920;

// snapshot height in pixels. change to your preference

var imgHeight = 1080; 

// Loop through the bookmarks within the model

for (var i=0; i<bmList.length; i++) {

    var bm = bmList[i]; // list of bookmarks

    // Change this path to where you want your snapshots saved

    var strFilePath = "C:\\temp\\";

    //gets the bookmark name  

    var bName = (bm.name);  

    // appends .JPG to the bookmark name

    var bmName = (bm.name+".jpg");  

    // concatenate the string of the path

    // (from above) and the bookmark name with .JPG

    strFilePath = strFilePath + bmName; 

    // pass the bookmark's name and concatenated

    // file path/name to the CreateBookmarkSnapshot function

    CreateBookmarkSnapshot (bName, strFilePath); 

}

// Create a snapshot of the active bookmark

function CreateBookmarkSnapshot (strBookMarkName, strJPGPath) {

    // activate the bookmark

    doc.MoveToBookmark(strBookMarkName);  

    app.CreateSnapshot(strJPGPath, imgWidth, imgHeight);

    // create the snapshot using the defined path and

    // 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.

Create Your Own Custom Properties

Objects within InfraWorks 360 give you plenty of properties you can use such as NAME, DESCRIPTION, CREATION DATE, FUNCTION, TOOLTIPS, and more. But what if you wanted to add data for a building such as the year it was renovated, the type of construction, lot numbers, and percent of impervious area? InfraWorks 360 doesn’t have properties for that type of data, but with a custom im.schema.json file you can create your own properties.

DISCLAIMER: I strongly recommend you create a test model that you can work on to test your im.schema.json file before loading it 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 easily be removed.

The categories within InfraWorks 360 for which you can create custom properties 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 (added in the 2017 release)
  • RIGHT_OF_WAYS (added in the 2017 release)
  • EASEMENTS (added in the 2017 release)

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 Figure 5 with our custom attributes when we're done.

Figure 5

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

Figure 6

And the second part is DISPLAY.

Figure 7

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"
      }
    ]
  }
}

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 subfolder located in each model directory structure. Browse to Documents > Autodesk InfraWorks Models > Autodesk 360 (Figure 8). In this folder will be a series of numbered subfolders. 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 to which you want to apply your custom properties.

Figure 8

NOTE: The .sqlite file name and the model name you see in the tiles on the InfraWorks 360 Home screen are the same, so a simple search will find the appropriate folder quickly.

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 (Figure 9).

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.

Figure 9

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.

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.

Reuse, Resize, Repurpose

InfraWorks 360 comes loaded with lots of great 3D content, but sometimes you just can't find what you need. What if you took an existing 3D model and resized it and used it for a different purpose? The following tip will show you how to create a parking lot road style with stalls on either side, pavement striping, and islands with trees.

Reuse, resize, repurpose Tip #1 – Duplicate and resize the Yellow Solid 1M Cube and use it as parking lot striping in a road style.

  1. Duplicate the 3D Model > Shapes > Yellow Solid 1M Cube and rename it Striping
  2. Modify the following scale factors as indicated below:

          X: 5.48640, Y: 0.15240, Z: 0.0100

Reuse, resize, repurpose Tip #2 – Duplicate and resize the Square Tree Base w_Grass model and use it as a parking lot island.

  1. Duplicate the 3D Model > Vegetation > Square Tree Base w_Grass and rename it Parking Island
  2. Modify the following scale factors as indicated below:

          X: 1.37160, Y: 2.74320, Z: 1.0000

Now we need to pull it all together into a custom road style. Start by duplicating the Asphalt Road style and renaming it Parking Lot. Next, edit the style and make the following adjustments to the Track Settings (Figure 10).

Figure 10

We then need to add decorations—the parking lot islands, pavement striping, and trees. To do that, click on the Decorations icon and select Right Bucket > Parking from the Decoration Target drop-down list.

Click the green plus icon and add the Striping model. Make the following changes:

Spacing: 9.0 ft

Translation Y: -9.0 ft

Rotation Z: 90.0°

Click the green plus icon and add the Parking Island model. Make the following changes:

Spacing: 90.0 ft

Spacing Offset: 4.5 ft

Translation Y: -9.0 ft

Click the green plus icon and add any Tree Style you wish. Make the following changes:

Spacing: 90.0 ft

Spacing Offset: 4.5 ft

Translation Y: -9.0 ft

And Figure 11 is what it looks like when it’s all done (with a little extra content to make it look more realistic). If you’d like a copy of the Parking Lot road style, you can download it from my A360 Drive by following this link: http://a360.co/2kuqlbc

Figure 11

When you import the style, it will create an AUGIWORLD catalog in the Road Style palette. You’ll then be able to create a parking lot layout with furniture and striping in a fraction of the time it would normally take if you were to place the objects individually.

Conclusion

Hopefully these tips and tricks have inspired you and got your creative juices flowing to implement increased efficiencies on your next InfraWorks 360 project, whether it’s dabbling in coding to automate some repetitive tasks, creating new road styles to speed up design modeling, or whatever you can imagine.

Appears in these Categories

Back