Batch Import/ insert 3dm or gf file objects


#1

I plan to import around 100 3dm objects. I have an csv file that contains all the names of the objects and the coordinates that I want to insert of the files. Is there a way to batch import? Thanks


(Dale Fugier) #2

Hi Yang,

It is certainly possible to read a comma-delimited file with either RhinoScript or Rhino.Python. And with the file read and the data parsed, you can then script the Insert or Import command, whichever is required.

So to answer your question, yes there is a way to batch import.

– Dale


#3

Hi, Dale, thanks. But how can I do it? With which command? I tried to search insert or import in the rhinoPython documentary, it didn’t seem to have the corresponding function…


(Dale Fugier) #4

Hi Yang,

Here is a quick sample in RhinoScript. I’m sure you can do the same with Rhino.Python. This should get you started.

Sub TestYang

  ' Declare local variables
  Dim strName, arrData, row
  Dim strFile, arrPoint, arrObjects

  ' Have the user select a csv file
  strName = Rhino.OpenFileName("Open", "Comma Delimited (*.csv)|*.csv||")
  If IsNull(strName) Then Exit Sub

  ' Read the csv file
  arrData = Rhino.ReadDelimitedFile(strName)
  If IsNull(arrData) Then Exit Sub

  ' Verify the array has four columns
  If UBound(arrData, 2) <> 3 Then Exit Sub

  ' Process each row
  If IsArray(arrData) Then
    For row = 0 To UBound(arrData, 1)
      ' Get the filename and surround in double quote characters
      strFile = Chr(34) & arrData(row, 0) & Chr(34)
      ' Get the base point
      arrPoint = Array(arrData(row, 1), arrData(row, 2), arrData(row, 3))
      ' Script the Import command
      Call Rhino.Command("_-Import " & strFile & " _Enter")
      ' Get the imported objects
      arrObjects = Rhino.LastCreatedObjects
      ' If successful, move the objects to the base point
      If IsArray(arrObjects) Then
        Call Rhino.MoveObjects(arrObjects, Array(0, 0, 0), arrPoint)
      End If
    Next
  End If

  ' Unselect everything
  Call Rhino.UnselectAllObjects

End Sub

TestYang.zip (917 Bytes)

– Dale


#5

Thank you very much Dale, right now I need to dig into the corresponding command in python, Call Rhino.Command("_-Import " & strFile & " _Enter"). Or actually I can just try to use Rhinoscript.


#6

I’m not sure about the format. For example, the file I want to import is “A.3dm”. path:D:\10_PROJECTS\

I tried
import rhinoscriptsyntax as rs
rs.Command("-Import “&“D:\10PROJECTS\A.3dm”&” _Enter")

Always returns file not found.


#7

I answered this in your other thread… --Mitch


(Dale Fugier) #8

Hi Yang,

In Python, the backslash “” path separator is also a python escape character. Double them, or better yet, use “r” raw python literals instead:

r'D:\PROJECTS\A.3dm'
'D:\\PROJECTS\\A.3dm'

For example:

import rhinoscriptsyntax as rs
file = 'C:\\Users\\Dale\\Desktop\\A.3dm'
rs.Command('_-Import ' + file + ' _Enter')

– Dale


#9

Thanks a lot Dale!