@Charly wrote:
Hello all,
I write because I need help with a script that I'm making for Rhino. The script calculates de area of the elements of each layer and print them into an excel file. It is necesary to have openned an Excel file previously. It works without problems, but I want to improve it making the following actions:
-The script must open an Excel file automatically, and must ask where we want to save it (the excel file).
-The script prints the x,y,z coordinates ot the centroid of each surface in an only column, but it should printe each coordinate in a differente column (a column for the "x" coordinate, another for the "y" and another for the "z").The script is the following. Please, could you help me with the two improvements that I need to make? Thank you a lot
Option Explicit 'Script written by <insert name> 'Script copyrighted by <insert company name> 'Script version sábado, 26 de mayo de 2012 12:16:58 Call Main() Sub Main() Dim capas,numcapas,strlayer,arrobj,strobject,arrarea,strarea,arrcoord,strcoord,j,xlapp,xlsheet,xlbook,arrlobjects,centroidlayer,layercoord capas = rhino.LayerNames numcapas = rhino.LayerCount j = 0 For Each strlayer In capas Rhino.CurrentLayer strLayer '------------------------------------- 'FALTA INVESTIGAR-CONSEGUIR CENTROIDE DE VARIAS SURF A LA VEZ 'arrlobjects=rhino.ObjectsByLayer(strlayer,False) 'h=rhino.SelectObjects(arrlobjects) 'centroidlayer=rhino.SurfaceAreaCentroid(h) ' If Not isnull (centroidlayer) Then ' layercoord=rhino.Pt2Str(centroidlayer(0)) ' End If '-------------------------------------- 'RHINO.Print strLayer If Not Rhino.IsLayerEmpty(strLayer) Then arrobj = rhino.objectsbylayer(strlayer, False) For Each strobject In arrobj arrarea = rhino.SurfaceArea(strobject) If Not IsNull(arrarea) Then strarea = rhino.Pt2Str(arrarea) Else Rhino.DeleteObject(strObject) End If 'rhino.print(strarea) arrcoord = rhino.SurfaceAreaCentroid(strobject) If Not isnull(arrcoord) Then strcoord = rhino.Pt2Str(arrcoord(0)) End If ' rhino.print(strcoord) '------------------------------------------------------------------- ' Open Excel object On Error Resume Next Set xlApp = GetObject(, "excel.application") If err Then Rhino.print "Excel not found. Operation aborted!" Exit Sub End If On Error GoTo 0 xlApp.Visible = True Set xlBook = xlApp.ActiveWorkbook Set xlSheet = xlBook.ActiveSheet 'Place titles on sheet xlApp.Cells(1, 1).Value = "CAPA" xlApp.Cells(1, 2).Value = "Surface Area" xlApp.Cells(1, 3).Value = "X centroide" xlApp.Cells(1, 4).value = "Y centroide" xlApp.Cells(1, 5).value = "Z centroide" xlApp.Cells(1, 6).Value = "Centroide Global por Capa" '------------------------------------------------------------------ '------------------------------------------------------------- 'Extract Properties of Surfaces xlApp.Cells(j + 2, 1).Value = strlayer xlApp.Cells(j + 2, 2).Value = arrarea xlApp.Cells(j + 2, 3).value = strcoord xlApp.Cells(j + 2, 4).value = strcoord xlApp.Cells(j + 2, 5).Value = strcoord j = j + 1 'xlApp.Quit ' If closing excel is required Set xlApp = Nothing ' the application, then release the reference. '--------------------------------------------------------------- Next End If Next rhino.Print("FINISH!!!") End Sub
Posts: 2
Participants: 2