====== Sampling Example ====== The following short example demonstrates sampling a Scan&Solve solution on a uniform grid of points and writing the values to a text file. * setup (lines 6-23) * iteration over bounding box (lines 28-41) * querying solution (line 33) For conciseness, this example contains minimal error checking. Option Explicit Call Main() Sub Main() Dim objSnSPlugIn, strObject, arrBox, dblSpacing, queryPt, dblValue Dim objFSO, objFile, strFileLocation Dim x, y, z On Error Resume Next Set objSnSPlugIn = Rhino.GetPluginObject("SnSScript") objSnSPlugIn.SetOutputOnOff False 'Prompt for the output filename strFileLocation = Rhino.SaveFileName("Output Filename", "*.txt", "", "RS_Output.txt", "txt") Set objFSO = CreateObject("Scripting.FileSystemObject") If Not IsNull(strFileLocation) Then Set objFile = objFSO.CreateTextFile(strFileLocation, True) End If 'Prompt for the solid and the sample spacing strObject = Rhino.GetObject("Select a solid") dblSpacing = Rhino.RealBox("Sample spacing", 0.1, "Enter sample spacing") If Not IsNull(strObject) Then arrBox = Rhino.BoundingBox(strObject) If IsArray(arrBox) Then For z = arrBox(0)(2) To arrBox(6)(2) Step dblSpacing For y = arrBox(0)(1) To arrBox(6)(1) Step dblSpacing For x = arrBox(0)(0) To arrBox(6)(0) Step dblSpacing queryPt = Array(x, y, z) 'Sample the solution at the specified point and write to a file dblValue = objSnSPlugIn.QuerySolutionValue(strObject, "DSPT", queryPt) If Not isNull(objFile) Then objFile.WriteLine x & "," & y & "," & z & ":" & dblValue Else Rhino.Print x & "," & y & "," & z & ":" & dblValue End If Next Next Next End If End If End Sub ^Line #^Description| |1|Only scripts with Option Explicit specified can be debugged in the RhinoScript editor (Monkey).| |4-8|Declare variables before use.| |11|Obtain a reference to the SnSScript plug-in, exit if an error occurs.| |12|Turn off SnSScript command line output.| |22|Prompt the user to select a solid from the Rhino document. The solid is identified by its GUID stored in strObject.| |23|Prompt the user for a sample spacing.| |26|Obtain the bounding box for the object.| |28-30|Three nested loops to cover the bounding box.| |31|Construct the query point.| |32|Query the solution value at the point.| |34-38|Write the value to a file or the command line if the file is not open.|