I’m very excited to report that the Deep Space platform continues to rapidly evolve, bringing exciting updates that empower civil and infrastructure projects. In a recent release, Deep Space introduced new and enhanced existing synchronization plugins and tools, revolutionizing data acquisition, analysis, and compliance checking. This blog post delves into the key new features of the Deep Space Sync add-in, focusing on its IFC integration and LOI (Level of Information) Report capabilities. Jump straight to the video here.

Simplifying Data Acquisition and Storage

Deep Space now offers a user-friendly IFC Sync plugin, enabling users to effortlessly load data from IFC (Industry Foundation Classes) files into the platform. By selecting the desired IFC file, workspace, and project, users can seamlessly upload the information to Deep Space. This streamlined process ensures that different data and model formats, such as IFC and Revit files, are easily accessible and integrated within the platform.

IFC Sync

Exploring Data and Parameter Analysis

Once the data is uploaded, users can navigate to the Deep Space Explorer platform to explore various applications. The Data app provides a comprehensive overview of the acquired information from the IFC file. Users can visualize the data, including the element count, parameter summaries, and individual parameter values. By clicking on specific objects, users can access detailed parameter data, facilitating a deeper understanding of the model.

Efficient Compliance Checking with LOI Reports

Deep Space’s LOI Report app is a powerful tool for compliance checking, particularly for projects adhering to government requirements like the Transport for NSW Digital Engineering Standards. The app automates the verification process, comparing the required parameters against the actual data within the IFC and Revit-based models. By unifying both types of data, Deep Space provides a single platform for comprehensive checking, streamlining the compliance process.

Advanced Analysis and Customization

The LOI Report offers an array of functionalities for in-depth analysis. Users can check the existence of parameters and validate the presence of data within those fields. Deep Space also supports the verification of shared parameter GUIDs and duplicates, ensuring the uniqueness of asset IDs. Through drill-down capabilities, users can access specific files, view available information, and explore the requirements tied to each parameter set.

Configuration and Automation

Deep Space provides a robust configuration engine (we call it DS Command), allowing users to modify templates, load parameter standards, and create a master parameter set for consistent use across projects. Additionally, the platform offers scheduling capabilities, enabling users to automate the export of models at predefined times. By simplifying configuration and scheduling tasks, Deep Space optimizes efficiency and reduces manual effort.

Conclusion

The latest Deep Space release showcases its commitment to overcoming industry challenges related to diverse data formats, data acquisition, and analysis. With the IFC Sync add-in and updated LOI Report app, Deep Space provides a comprehensive solution for integrating IFC files, performing compliance checks, and ensuring predictable outcomes. By leveraging Deep Space’s powerful features, Digital Engineers and Design and Construction teams can accelerate project delivery, reduce risks, and enhance overall quality.

Watch the release video here

I was recently working on a multi-vector dataset comparison in Deep Space. We had received Revit, Navisworks and tabular data, and I was comparing 3 different data drops of that information, particularly for changes in the quantities of specific types of elements. A ‘data drop’ is a set of data or files that you receive at a given point in time.

In the course of exporting the Navisworks data through to CSV, I came across a specific problem – the number of rows in imported CSV did not match the number of elements processed. Why?

As you may know, you can store line breaks inside parameters in Revit. There are very few good reasons to do this, but it still does happen. Once this happens, those line breaks need to be processed by tools down stream. I spent a lot of time in the early days of Deep Space figuring out how to ‘clean’ bad Revit data so we could still bring it into the platform for analysis. Usually, if the CSV writer or reader are smart enough, they should be able to deal with this problem. However, I discovered a bit of a gap in the available tools this time. What was the problem?

It turns out that the CSV was malformed, it was actually dirty or bad data. While it did have the line breaks, it did not consistently use double quotes to contain fields. So we had the situations where there would be line breaks that were inside the CSV fields or columns, but not inside double quotes. I tried a lot of different CSV readers, including Excel, LibreOffice, Google Sheets and PowerBI / PowerQuery, but they all tripped up at this data. Because they were using the rule ‘new line = new row of data’, the imported CSV information was coming in mangled.

How can we clean this data? We generally know there should be 17 fields or 16 commas per row of data. But we also know there can be line breaks inside fields… so it is a challenge to map a data row to CSV lines. In some cases 2 or 3 lines of CSV data might still just be one row of actual data.

After trying to use various out of the box solutions, I decided to build some Python code to try and solve this. I used Dynamo Sandbox 1.3 to do this, primarily out of habit, not because it is the best Python IDE out there 🙂 I ended up with a kind of line-merging iterator, here is some of the Python code below:

biglist = IN[0]

commact=[]
for ctr in range(len(biglist)):
    astr=biglist[ctr]
    strct=astr.count(',')
    commact.append(strct)

counted=range(len(biglist))
fixedstr=[]
bad=[]
skips=[]
incr=0

for ctrx in range(len(biglist)):
    if ctrx==skips:
        pass
    elif commact[ctrx]==16:
        fixedstr.append(biglist[ctrx])
    elif commact[ctrx]>16:
        fixedstr.append(biglist[ctrx])
    elif commact[ctrx]+commact[ctrx+1]==16:
        jnr=[]
        jns=biglist[ctrx]+biglist[ctrx+1]
        fixedstr.append(jns)
        skips=ctrx+1
    else:
        bad.append(ctrx) 
        
OUT = bad, fixedstr, commact, counted

What does it do? Essentially, it counts the number of delimeters (commas) on one line, then it processes or merges lines based on that information.

This actually got me around 90% of the way there. Then I still had to do some manual fixes of things like ‘double double quotes’ that were also tripping up the CSV readers.

Above is a snapshot of the Dynamo script. And here is the script for download:

CSV Line Merge for Malformed CSV

What the the lessons here?

  1. Try and fix the source or native data if you can. Dealing with messy data downstream can be a real pain.
  2. If you need to solve this problem, you can pick up my code or work above and advance it a bit further to build a more robust ‘malformed CSV reader’
  3. Don’t let problems like this distract you during the holidays 🙂

Over the past few years we have been building and refining a data platform for AEC and Infrastructure projects – we call it Deep Space. It has allowed us to manage huge projects, develop powerful analytics, and increase productivity and efficiency with automations.

We just released a brand new version of our Revit addin, check out the first demonstration video here:

Feel free to check out the website at https://www.deepspacesync.com/

We hope to meet you in Deep Space soon!