Point distribution,csv export

Hello,

I would like to export a number of existing points from rhino as csv file and then reuse it as a scatter csv file to distribute objects in octane.
Unfortunately I was unable to export the points with the correct syntax using the normal csv format option, octane csv files must contain 12 values in this format:
https://docs.otoy.com/Standalone_2_0/?page_id=495

is there a way to do this in RHino?

thank you for any feedback

Andreas

Hi Andreas,

Did you get it to work already?

I think the script below should do an export with the coordinates of the point as translation:

import rhinoscriptsyntax as rs


def ExportNodes():
    
    
    points = rs.GetObjects('Get points to export as nodes',filter = 1)
    if not points: return
    file_name = rs.SaveFileName('save nodes',filter = 'node csv|*.csv')
    if not file_name: return
    
    file = open(file_name, 'w')
    node_base = '1 0 0 {0.X} 0 1 0 {0.Y} 0 0 1 {0.Z}\n'
    
    for point in points:
        file.write(node_base.format(rs.PointCoordinates(point)))

    file.close()


ExportNodes()

export_points_to_octane_csv.py (501 Bytes)

HTH
-Willem

Hello Willem,

thank you very much for your effort! I just tried your script but sadly, as it turned out it does not work for octane.

I created a simple setup with 4 points, 2x2 matrix , 2m apart ( see attached pic A) I looked at the csv file your script created (see picB)

Octane needs a format of a 12 comma separated values, pic C shows the first rows of a working csv file which created the instances in pic d.

A script which would be able to export a large number of points with scale and rotation values as an octane compatible csv file would make my life a lot easier …
I would be happy to pay for such a thing …

best

Andreas

Pic A

Pic B

Pic C

Pic D

Hi Andreas,

I took the info from the site you linked and assumes a space being the separator.
Try to change this line:

node_base = '1 0 0 {0.X} 0 1 0 {0.Y} 0 0 1 {0.Z}\n'

to this:

node_base = '1,0,0,{0.X},0,1,0,{0.Y},0,0,1,{0.Z}\n'

Where would the scale and rotation values come from?
Currently you talk about points, but how would rotation and scale be defined?

I don’t have experience deep enough to know for sure, but I can only assume the 12 values are defining the transformation matrix. Can you provide an example csv file for me to test, I can write ?

If so it would be straighforward to write an importer/exporter for those files.
Import: Import transformations and assign to a block in Rhino
Export: Get blocks in Rhino and export csv file with the transformationdata.

If this get more complicated that a few lines and no-one over at scripting would like to pick it up, I can surely can help you out. Might be a good excuse for me to drive to Aachen. :car: it’s only a 30 min drive anyway.

-Willem

Thank you for your answer Willem,
I will try out your suggestions on monday,
Meanwhile I managed to do an export by using the rhino grow plugin, however the necessary work flow is not ideal and a bit cumbersome so I am still looking for another solution…
I will send you a working csv file on monday.
If you like, just give me a call and we can meet in Aachen, I invite you to a business lunch☺
I attached a picture I did today with octane using a csv file, this stuff is really great!


Best

Andreas

Great. I’ll keep an eye out for the example file.
Maybe it’s wise to make a new topic at the scripting discourse, as your need is a script.

I’ll take you up on the lunch!
Probably not very soon but somewhere in the near future so to say.

-Willem

Nice script Willem - thanks for posting.

Paul

1 Like