def exportAllPlansToCAD(): if rs.IsLayer("6_DRAWINGS"): children = rs.LayerChildren("6_DRAWINGS") items = [] for child in children: items.append(rs.LayerName(child, False)) #level = rs.ComboListBox(items) print rs.DocumentPath() pathParts = rs.DocumentPath().split("\\") if pathParts[0] == "P:": defaultPath = pathParts[0] + "\\" + pathParts[ 1] + "\\" + pathParts[2] + "\\" + pathParts[3] folder = rs.BrowseForFolder( folder=defaultPath, message="Select Folder to export plans.", title="Export Plans") else: folder = rs.BrowseForFolder() RhinoFile = rs.DocumentName() rhinoName = RhinoFile.split(".")[0] + "_P_" for item in items: levelNum = item.split("_")[-1] fileName = "\\" + rhinoName + levelNum + ".dwg" savePath = folder + fileName #savePath = rs.SaveFileName("Save", "Autocad (*.dwg)|*.dwg||") if savePath is not None: exportPlanToCAD(item, savePath) else: print "No plans currently cut. Use CutPlans." return
def Export(Object): folder = rs.BrowseForFolder("Questo PC", "seleziona dove vuoi salvare i tuoi file") folder = folder + "\\" + "parafango" print str(folder) CSVwrite(Object[0], folder) exportBrep(Object[1], folder)
def GetExportPath(is_interactive): if sc.doc.ActiveDoc.Path is None or sc.doc.ActiveDoc.Name is None: print("Save document before exporting") return # NOTE: [:-4] removes ActiveDoc.Name suffix ".3dm" name = sc.doc.ActiveDoc.Name[:-4] path = sc.doc.ActiveDoc.Path[:-4] if is_interactive: path = rs.BrowseForFolder( folder=os.path.dirname(path), title="RePort", message="Choose root folder for exported files...") # Known safe if path is None: # User cancelled out of location selection return name = os.path.split(path)[1] else: shutil.rmtree(path, True) os.mkdir(path) # BUG: If directory already exists os.mkdir may raise error. # NOTE: Directory deletion still succeedes, and subsequent run # will not raise an error. return path, name
def ChooseFolderPath(): """ pick a folder to save the renderings to return the folder """ folder = rs.BrowseForFolder(rs.DocumentPath, "Browse for folder", "Batch Render") return folder
def objBatchExport(): selection = rs.GetObjects(preselect=True) folder = rs.BrowseForFolder(rs.WorkingFolder()) rs.EnableRedraw(False) for i, obj in enumerate(selection): e_file_name = "{}-{}.obj".format("habibi", i) rs.UnselectAllObjects() rs.SelectObject(obj) rs.Command('-_Export "{}" _Enter'.format(e_file_name), True) rs.EnableRedraw(True)
def main(): path = rs.BrowseForFolder() if path is None: return newFolderName = rs.StringBox(default_value='180710_TEST_01') newFolder = os.path.join(path,newFolderName) if not os.path.exists(newFolder): os.mkdir(newFolder) objs = rs.VisibleObjects() #ExportEachLayerAsSat(objs, newFolder, newFolderName) #ExportEachLayerAs3DS(objs, newFolder, newFolderName) #ExportEachLayerAsDAE(objs, newFolder, newFolderName) #ExportEachLayerAsIGES(objs, newFolder, newFolderName) #ExportEachLayerAsOBJ(objs, newFolder, newFolderName) ExportAsSKP(objs, newFolder, newFolderName)
def viewCaptureToFile(): namedViews = rs.NamedViews() items = [] for view in namedViews: items.append([view, False]) returnedVals = rs.CheckListBox(items, "Select Views to Export", "Extract Views") if returnedVals is None: return chosenViews = [] for val in returnedVals: if val[1]: chosenViews.append(val[0]) if len(chosenViews) < 1: return path = rs.BrowseForFolder(message = "Choose Folder to export to") if path is None: return width = rs.GetInteger("Image Width in Pixels", number = 1920, minimum = 600, maximum = 10000) if width is None: return height = .625 * width rs.AddNamedView("temp") now = datetime.date.today() dateList = [] if len(str(now.month))>1: month = str(now.month) else: month = "0"+str(now.month) if len(str(now.day))>1: day = str(now.day) else: day = "0"+str(now.day) time = str(now.year)+month+day for x in chosenViews: rs.RestoreNamedView(x) fileName = "\\" + str(time) + "_" + x + ".jpg" filePath = path + fileName rs.Command("_-ViewCaptureToFile " + str(filePath) + " w " + str(width) + " h " + str(height) + " _Enter") rs.RestoreNamedView("temp") rs.DeleteNamedView("temp")
def RunCommand(is_interactive, distance_to_piece=10): # Top part hole = cumread.get_polyline('/Users/itq/rhinoscript/hole.nc') piece_top = cumread.get_polyline() bl = get_bottom_left(piece_top) rs.MoveObject(piece_top, [-bl.X+distance_to_piece, -bl.Y+distance_to_piece, 0]) new_hole = rs.CopyObject(hole) tr = get_top_right(piece_top) new_hole_x = round_to_next_hole(tr.X+distance_to_piece) new_hole_y = round_to_next_hole(tr.Y+distance_to_piece) rs.MoveObject(new_hole, [new_hole_x, new_hole_y, 0]) connected = connect_polylines([hole,new_hole,piece_top]) dirname = rs.BrowseForFolder("/Users/itq/Dropbox/cam/v2/") top_filename = 'shapeoko_top_holeX0_holeY0_holeX{}_holeY{}.nc'.format(hole_index(new_hole_x), hole_index(new_hole_y)) bottom_filename = 'shapeoko_bottom_holeX0_holeY20_holeX{}_holeY{}.nc'.format(hole_index(new_hole_x), 20-hole_index(new_hole_y)) cumsave.save(connected, 0, 0, os.path.join(dirname,top_filename)) # Bottom part piece_bottom = cumread.get_polyline() rs.MoveObject(piece_bottom, [-bl.X+distance_to_piece, bl.Y-distance_to_piece, 0]) cumsave.save(piece_bottom, 0, 20, os.path.join(dirname, bottom_filename)) """ obj = rs.GetObject("Select a polyline") if not rs.IsPolyline(obj): return filename = rs.SaveFileName ("Save", "CarbideMotion (*.nc)|*.nc||") with open(filename,'w') as f: program_start(f.write) points = rs.PolylineVertices(obj) for point in points: f.write("X{:.3f}Y{:.3f}Z{:.3f}\n".format(point.X, point.Y, point.Z)) program_end(f.write) """ print('file sucessfully saved')
def main (): #snapshots = sc.doc.Snapshots.Names layerstates = sc.doc.NamedLayerStates.Names namedviews = sc.doc.NamedViews view_count = 0 PIXwidth = rs.GetInteger("Width [px] = ",1600) PIXheight = rs.GetInteger("Height [px] = ",900) folder = rs.BrowseForFolder(message="Select destination folder") for view in namedviews: namedviews.Restore(view_count,sc.doc.Views.ActiveView.ActiveViewport) view_count += 1 for state in layerstates: imagename = (str(state) + "_" + view.Name + ".png") imagepath = folder + "\\" + imagename Rhino.RhinoApp.RunScript("-_Layerstatemanager _Restore \"" + state + "\" _Enter _Enter", False) Capture (imagepath,PIXwidth,PIXheight) rs.MessageBox("All images were added to " + folder,0,"Congrats")
def Export(Object): folder = rs.BrowseForFolder( "Questo PC", "seleziona dove vuoi salvare i tuoi file") CSVwrite(Object[0], folder) exportBrep(Object[1], folder)
#Automating A Tower Massing and Exporting it to separate files import rhinoscriptsyntax as rs import Rhino #Load Grasshopper Plugin as gh gh = Rhino.RhinoApp.GetPlugInObject("Grasshopper") #SetSliderValue("GUID",Number) #BakeDateInObject("GUID") rs.EnableRedraw(True) #set working directory workingDir = rs.BrowseForFolder(None, "Pick a foler to save your files in") rs.WorkingFolder(workingDir) #create variable for file naming num = 0 for i in range(1, 3, 1): #BaseSize Slider gh.SetSliderValue("GUID_FOR_SLIDER_1", i) for j in range(0, 4, 1): #Rotation Slider gh.SetSliderValue("GUID_FOR_SLIDER_2", j) for k in range(3, 5, 1): #NumberOfSides Slider gh.SetSliderValue("GUID_FOR_SLIDER_3", k) gh.RunSolver("FILENAME.gh")
def setup(): cfg = {} cfg['do_capture_fill'] = True delete_residual_display_modes() ## properties dialog # props = [("view_count", DEFAULT_VIEW_COUNT), ("image_size", 512), ("zoom_padding_percent", "-10,10,75"), ("iso (NE, NW, SE, or SW)", "SE"), ("do_scale_1d", "y"), ("do_scale_2d", "y"), ("do_shear", "n"), ("render_or_capture", "capture"), ("worms_eye?", "n")] prop_box_results = False if DEBUG: prop_box_results = [p[1] for p in props] if not prop_box_results: itms, vals = [p[0] for p in props], [p[1] for p in props] prop_box_results = rs.PropertyListBox( itms, vals, "Please set the following properties.", "Rhino Batch Render") if prop_box_results is None: exit() try: cfg['view_count'] = int(prop_box_results[0]) cfg['size'] = int(prop_box_results[1]) cfg['obj_bbox_pads'] = [ int(s) * 0.01 for s in prop_box_results[2].split(',') ] cfg['iso_select'] = str(prop_box_results[3]).lower() cfg["do_scale_1d"] = str(prop_box_results[4]).lower() in ("y", "yes", "true", "t", "1") cfg["do_scale_2d"] = str(prop_box_results[5]).lower() in ("y", "yes", "true", "t", "1") cfg["do_shear"] = str(prop_box_results[6]).lower() in ("y", "yes", "true", "t", "1") cfg["do_render_via_view_cap"] = str( prop_box_results[7]).lower().startswith("c") cfg["do_worms_eye"] = str(prop_box_results[8]).lower() in ("y", "yes", "true", "t", "1") except Exception as e: big_problem( "There was a problem parsing the values given in the properties dialog.\n{}" .format(e)) ## groups to draw # setup_groups(cfg) ## layers # setup_layers(cfg) ## xforms # fake_xf = xforms_to_apply(cfg['groups_info'][0]['bbox'], cfg, DEBUG) cfg['xform_count'] = len(fake_xf) ## root path # pth_root = False if DEBUG: pth_root = DEFAULT_SAVE_PATH if not pth_root: pth_root = rs.BrowseForFolder(message="where should we save this?", title="Where to Save?") dir_cfg = initialize_directory(pth_root, cfg['do_capture_fill']) cfg.update(dir_cfg) ## view # cam_height = 0.75 if cfg["do_worms_eye"]: cam_height *= -1 poss = { "ne": (1, 1, cam_height), "nw": (-1, 1, cam_height), "se": (1, -1, cam_height), "sw": (-1, -1, cam_height) } if cfg["iso_select"] not in poss: big_problem( "There was a problem with the selected isometric view.\n'{}' is not a valid selection." .format(cfg["iso_select"])) cfg["iso_cam_pos"] = poss[cfg["iso_select"]] ## tidy up and save settings JSON # cfg['total_image_count'] = cfg['view_count'] * len( cfg['obj_bbox_pads']) * cfg['xform_count'] * len(cfg['groups_info']) with open(os.path.join(cfg['pth_save'], 'settings.json'), 'w') as json_file: json.dump( { k: "{}".format(str(v)) for k, v in cfg.items() if k != "groups_info" }, json_file, sort_keys=True, indent=4) ## SETUP RHINO # rs.UnselectAllObjects() setup_display_modes(cfg) setup_floating_viewport(cfg) setup_render_settings(cfg) # padding objects wbbox = False for gp in cfg['groups_info']: if not wbbox: wbbox = gp['bbox'] else: wbbox.Union(gp['bbox']) wbbox = pad_bbox(wbbox, 10) cfg['pad_obj_ids'] = [] cfg['pad_obj_ids'].append(rs.AddPoint(wbbox.Min)) cfg['pad_obj_ids'].append(rs.AddPoint(wbbox.Max)) return cfg
def browse_for_folder(message=None, default=None): return rs.BrowseForFolder(folder=default, message=message, title='compas')
What it does is exporting drawings uniformly arranged on the plan to each .dwg file ''' #This part defines start position of drawings X_ST = 0 Y_ST = 0 #Change the girdsize based on your project X_Step = 9000 Y_Step = 10000 #Define the prefix of each file Sail_Name = rs.GetString("Input Sail Number") x = rs.GetInteger("Number of Drawings in X direction") y = rs.GetInteger("Number of Drawings in Y direction") direct = rs.BrowseForFolder(None, "Choose a folder", None) #Define color to exort geometry to DWG cause cannot see black in DWG Black = Color.Black White = Color.White #Change black color to white layers = rs.LayerIds() for layer in layers: print rs.LayerColor(layer) if rs.LayerColor(layer) == Black: rs.LayerColor(layer, White) #Select the drawings which are in grid and export. for j in range(y): for i in range(x):
import rhinoscriptsyntax as rs import createBox import exportObjs xNum = rs.GetInteger("X number", 5, 1) yNum = rs.GetInteger("Y number", 5, 1) boxes = createBox.Run(xNum, yNum) if boxes is None or len(boxes) == 0: rs.MessageBox("No objects to export") else: dir = rs.BrowseForFolder(None, "Select a folder to save files") exportObjs.Run(boxes, dir, "3dm")
###################################################################### # # DO NOT CANCEL THIS PART # Author: Paolo Cappelletto # e-mail: [email protected] # skype: flecheria # Date: 191014 # Version: 1.0 # # Copyright: MIT License # ###################################################################### import rhinoscriptsyntax as rs if __name__ == "__main__": objs = rs.GetObjects("Select objects for exporting", select = True, preselect = True) folder_path = rs.BrowseForFolder(message = "Select folder for the export:", title = "Multiple SAT exporting") file_name = rs.GetString("Write the file name:", "file") print(folder_path) for i, obj in enumerate(objs): print( "{} {}".format(i, obj) ) path = "-_Export {}\{}_{}.sat Type Default".format(folder_path, file_name, i) rs.Command(path)
import rhinoscriptsyntax as rs import importObjs import exportObjs dir = rs.BrowseForFolder(None, "Select folder which contains objects you want to import") objs = importObjs.Run(dir, "3dm") exportObjs.Run(objs, dir, "obj") rs.DeleteObjects(objs)
importTEN_CAD() elif (type == 2): #Export All plans if rs.IsLayer("6_DRAWINGS"): children = rs.LayerChildren("6_DRAWINGS") items = [] for child in children: items.append(rs.LayerName(child, False)) level = rs.ComboListBox(items) print rs.DocumentPath() pathParts = rs.DocumentPath().split("\\") if pathParts[0] == "P:": defaultPath = pathParts[0] + "\\" + pathParts[ 1] + "\\" + pathParts[2] + "\\" + pathParts[3] folder = rs.BrowseForFolder( folder=defaultPath, message="Select Folder to export plan.", title="Export Plan") else: folder = rs.BrowseForFolder() RhinoFile = rs.DocumentName() rhinoName = RhinoFile.split(".")[0] + "_P_" levelNum = level.split("_")[-1] fileName = "\\" + rhinoName + levelNum + ".dwg" savePath = folder + fileName #savePath = rs.SaveFileName("Save", "Autocad (*.dwg)|*.dwg||") if savePath is not None: exportPlanToCAD(level, savePath) else: print "No plans currently cut. Use CutPlans." elif (type == 3): exportAllPlansToCAD()