3d Reviewing


We currently review our models intern with (numbered) dots and corresponding notes (1. remark A, 2. remark B, etc) in the notes panel.

To register and track the history of the reviewing, we have to work with copy/past to excel.

Is there a way to either work with UserText on the dots or maybe a panel with listed dot info?
I can imagine someone already implement this function or created a workaround for this important process.


Hi Thomas,

Instead of using the notes you might try this plugin: http://www.rhinopiping.com/_table-plugin-for-rhinoceros/

Alternatively or in combination with this table-plugin you can export your dots as Objects Properties (*.csv). That way you can for example use the dot’s layer name as a time stamp and the object name as the comment title. You can add any text information with _SetUserText. Make sure to enable User Text in the CSV Export Options then you’ll get something like this in Excel:

I’ve developed tools for reviewing our architectural projects. It’s pretty complex and based on our project file-naming, directory structure and versioning. So I doubt that you want to adopt this. However, with some scripting it is pretty comfortable to create comments with all required properties and also directly link these with Excel.

Since you did not tell anything about your projects I’ll give some more general hints:

Project Setup:
It is a good idea to have all major parts of your model in separate files. Good file and directory naming conventions will help to keep things organized further down the road. Same with Layer names, especially if you are working with assemblies. Versioning is a special topic which we may discuss later…

Review Files:
I prefer to make separate review files which contain all the comments. There are two basic ways to make a review file:

  1. An “Assembly” where you _Insert the geometry files you want to review as blocks. You can choose to embed and/or link the files. What’s best depends on how you intend to use the review files later on. If you embed the inserted geometry, then you can view the file on any computer but it bloats the size of the review-file. If you link the geometry then the files must be in the same locations (paths) and accessible from the computer you are looking at the review file (relative paths are also possible). If you embed and link the files, then you have the geometry with the state when you made the review but you can also update the linked files from the block manager.

  2. Review Worksession
    You can make a Worksession and _Attach the files you want to review. This is what I prefer, cause then the files are nicely separated in the Layers pane.

Inside such a separate review file you can do anything you want without modifying the geometry files. You can make named views per comment or even layouts with more detailed explanations and so on.

Hope this helps a bit. Sure there is much more to discuss…

Hi Jess!

Thanks for the comprehensive explanation!

We started to work with worksession reviewing for our last project and it works very well.
The next step is to register the reviewing proces.

I´am going to get back on this topic next week!


Hi Jess!

I downloaded the plugin and it looks very promising.
As for the basic ways you described, we use worksession reviewing.
For now we only reviewing one model, so a revision file/folder setup isn’t necessary.

What I basically want to achieve is to create a script that does the following.
To create a review note:

  1. Select an object
  2. User input, such as Note
  3. Automatic input, such as CurrentDate, ObjectName, Createdby (logged in user)
  4. Add a Dot with the note number
  5. Write the user texts to the objects or the Dots

Than export with *.csv.
In combination with the plugin this should work great!

My scripting is not very well… but here’s a start:

import rhinoscriptsyntax as rs

def UserDataInput():
obj = rs.GetObject(“Select Object”)
note = rs.StringBox (“Enter review note”, None, “Review note” )
name = rs.StringBox (“Enter Name”, None, “Name” )
if note: rs.SetUserText(obj, “Note”, note)
if name: rs.SetUserText(obj, “Name”, name)



Got the first steps working now!

Adding a dot with review info:

import rhinoscriptsyntax as rs

def AddReview():
nr = rs.StringBox (“Enter review number”, None, “Review number” )
note = rs.StringBox (“Enter review note”, None, “Review note” )
point = rs.GetPoint (“Select dot location”)
obj = rs.AddTextDot (nr, point)
if nr: rs.SetUserText(obj, “Nr”, nr)
if note: rs.SetUserText(obj, “Note”, note)


Change review info + dot number:

import rhinoscriptsyntax as rs

def ChangeReview():

obj = rs.GetObject("Select Object", 8192)
Keylist = rs.GetUserText(obj,)
if not Keylist:
    rs.MessageBox('No review data')
    UserDataList = []
    for n in Keylist:
        b = rs.GetUserText(obj,n)
        newlist = rs.PropertyListBox(Keylist,UserDataList,"Review information", "Dot information")
        if newlist:
            for c in range(len(Keylist)):
                dotnr = rs.GetUserText(obj, "Nr")
                rs.TextDotText(obj, dotnr)


The next steps are:
-Export the dots as *.CSV
-Create the connection with rhino and add a table in a layout view (table-plugin)

What’s not implemented jet is the direct connection with the dots and the table in rhino.
Any idea’s?


Hi Thomas, good job so far!

I think the best way to achieve that would be to use an explicit csv file structure. For example if the csv will always look like this:
CommentNumber ; CommentText ; CommentDate ; CommentLocation ; CommentLayer ; …

Then you can easily read out the file and analyze its content. You can update the dots and as well the table representation (if you are using the mentioned plugin). Or you can update the CSV-file from rhino with you custom CSV export. There is a sample in the Python-Editor Help menu about how to write text files (10 ExportPoints). This should get you going, if you have further questions I’ll try to help.

BTW. You can get the current user with this:

import getpass
print getpass.getuser()

Thanks! With a little help from all the generous people here, this is the result:

AddReviewNewDots.py (1.5 KB)

Change review:
ChangeReview.py (756 Bytes)

Export review:
ReviewExport.rvb (5.1 KB)

I created an excel file an used “Insert external data” to connect the export file of rhino. Set the settings to update every 1 min :slight_smile: and it works perfect!
I even connected the autocad 2d output in the same excel file to combine the review notes.

This is what is looks like in excel:

Cool :slight_smile: