def offsetext(): def RepresentsInt(s): try: int(s) return True except ValueError: return False viste = rs.ViewNames() for viewport in viste: rs.ViewDisplayMode(viewport,"Shaded") diametro = rs.StringBox("dimensione della punta","10","scontornatura") if RepresentsInt(diametro): diametro = int(diametro) else: diametro = 10 brep = rs.GetObjects("dammi un solido",16) brepexp = rs.ExplodePolysurfaces(brep) get_val = rs.GetEdgeCurves("dammi le curve") surf_edge = [] for i in get_val: surf_edge.append(i[0]) surf_edge = rs.coerceguidlist(surf_edge) if len(surf_edge)>1: surf_edge = rs.JoinCurves(surf_edge,True) surface = rs.GetObjects("conferma la selezione",8,False,True,1,1) print surf_edge uv= [] temp_edge = rs.ExplodeCurves(surf_edge,False) new_surface = rs.CopyObject(surface,(0,0,0)) list_evpt =[] for i in temp_edge: evpt =rs.CurveMidPoint(i) print evpt list_evpt.append(evpt) for i in list_evpt: bord= rs.SurfaceClosestPoint(new_surface,i) uv.append(bord) for i in uv: rs.ExtendSurface(new_surface,i,diametro*10) edge = rs.OffsetCurveOnSurface(surf_edge,new_surface,-diametro) print edge if rs.CurveLength(edge)<rs.CurveLength(surf_edge): rs.DeleteObject(edge) edge = rs.OffsetCurveOnSurface(surf_edge,new_surface,diametro) surf_edge = rs.ExplodeCurves(surf_edge,True) print edge rs.ObjectColor(edge,(0,0,255)) for i in brepexp: rs.DeleteObject(i) for i in temp_edge: rs.DeleteObject(i) for i in surf_edge: rs.DeleteObject(i) rs.DeleteObjects([new_surface,surface])
def save_image(self): save_path = SNAPSHOT_FOLDER + "_SnapShot2.png" save_path_2 = SNAPSHOT_FOLDER + "_SnapShot1.png" persp_view = "Perspective" top_view = "Top" desire_width = 1800 views = rs.ViewNames() try: if views: persp_view = views[0] top_view = views[1] width,height = rs.ViewSize(persp_view) scale = int(desire_width/width) image_size = (width*scale,height*scale) #rs.CurrentView(persp_view) rs.CreatePreviewImage(save_path, view=persp_view, size=image_size, flags=2, wireframe=False) #rs.Command("-_ViewCaptureToFile %s Width=%s Height=%s Scale=%s DrawGrid=%s DrawWorldAxes=%s DrawCPlaneAxes=%s TransparentBackground=%s _Enter" %(save_path,width,height,scale,"No","Yes","Yes","Yes")) width,height = rs.ViewSize(top_view) scale = int(desire_width/width) #rs.CurrentView(top_view) rs.CreatePreviewImage(save_path_2, view=top_view, size=image_size, flags=2, wireframe=False) #rs.Command("-_ViewCaptureToFile %s Width=%s Height=%s Scale=%s DrawGrid=%s DrawWorldAxes=%s DrawCPlaneAxes=%s TransparentBackground=%s _Enter" %(save_path_2,width,height,scale,"No","Yes","Yes","Yes")) return save_path,save_path_2 except: return False
def viewCapture(fileName, directory, viewNames, image_width, image_height, dispModeStr, keepAspectRatio): for viewName in viewNames: if viewName in rs.ViewNames(): rs.CurrentView(viewName, True) else: # change to RhinoDoc to get access to NamedViews sc.doc = rc.RhinoDoc.ActiveDoc namedViews = rs.NamedViews() if viewName in namedViews: viewName = rs.RestoreNamedView(viewName) else: viewName = None # change back to Grasshopper sc.doc = ghdoc viewName = rs.CurrentView(viewName, True) rs.CurrentView(viewName) sc.doc.Views.Find(viewName, False) viewtoCapture = sc.doc.Views.ActiveView try: dispMode = rc.Display.DisplayModeDescription.FindByName(dispModeStr) sc.doc.Views.ActiveView.ActiveViewport.DisplayMode = dispMode except: pass if image_height == None: image_h = viewtoCapture.ActiveViewport.Size.Height else: image_h = image_height if image_width == None: image_w = viewtoCapture.ActiveViewport.Size.Width else: image_w = image_width # aspectRatio if keepAspectRatio: if image_height == None and image_width != None: image_h = image_h * (image_w/viewtoCapture.ActiveViewport.Size.Width) elif image_height != None and image_width == None: image_w = image_w * (image_h/viewtoCapture.ActiveViewport.Size.Height) viewSize = System.Drawing.Size(int(image_w), int(image_h)) pic = rc.Display.RhinoView.CaptureToBitmap(viewtoCapture , viewSize) fullPath = os.path.join(directory, fileName +'_'+ viewName + '.png') try: System.Drawing.Bitmap.Save(pic , fullPath) except: try: fullPath = os.path.join(directory, fileName +'_'+ viewName + '_1.png') System.Drawing.Bitmap.Save(pic , fullPath) except: print "Failed!" return pass return fullPath
def SetToRendered(): views = rs.ViewNames() modes = rs.ViewDisplayModes() viewtype = "Rendered" rs.EnableRedraw(False) if viewtype in modes: for view in views: rs.ViewDisplayMode(view, viewtype)
def final_view(): """Applies rendering and redraws all objects.""" sc.doc.Views.Redraw() layer('OBS') for l in [ 'Default', 'TOP', 'BOTTOM', 'LEFT', 'RIGHT', 'FRONT', 'BACK', 'INTS', 'INTS_BOX' ]: rs.LayerVisible(l, False) [rs.ViewDisplayMode(view, 'Ghosted') for view in rs.ViewNames()]
import rhinoscriptsyntax as rs import utils reload(utils) import config reload(config) conf = config.conf # docpath = rs.DocumentPath() # docdir, docname = os.path.split(docpath) thislocation = os.path.dirname(os.path.realpath(__file__)) outputdir = os.path.join(conf['outputdir'], 'img') views = rs.ViewNames() # ['Left', 'Front', 'Top', 'Perspective'] def clear_img_dir(): print "clearing: %s" % (outputdir) if os.path.exists(outputdir): shutil.rmtree(outputdir) def create_view_image(name, w=1600, h=900): imgfile = os.path.join(outputdir, name) if not os.path.exists(outputdir): os.makedirs(outputdir) rs.Command( "_-ViewCaptureToFile " + imgfile + " Width=" + str(w) + " Height=" + str(h) +
def viewCapture(fileName, directory, viewNames, image_width, image_height, dispModeStr, keepAspectRatio, transparent): fullPaths = [] for viewName in viewNames: if viewName in rs.ViewNames(): rs.CurrentView(viewName, True) else: # change to RhinoDoc to get access to NamedViews sc.doc = rc.RhinoDoc.ActiveDoc namedViews = rs.NamedViews() if viewName in namedViews: viewName = rs.RestoreNamedView(viewName) else: viewName = None # change back to Grasshopper sc.doc = ghdoc viewName = rs.CurrentView(viewName, True) rs.CurrentView(viewName) sc.doc.Views.Find(viewName, False) viewtoCapture = sc.doc.Views.ActiveView try: dispMode = rc.Display.DisplayModeDescription.FindByName( dispModeStr) sc.doc.Views.ActiveView.ActiveViewport.DisplayMode = dispMode except: pass if image_height == None: image_h = viewtoCapture.ActiveViewport.Size.Height else: image_h = image_height if image_width == None: image_w = viewtoCapture.ActiveViewport.Size.Width else: image_w = image_width # aspectRatio if keepAspectRatio: if image_height == None and image_width != None: image_h = image_h * (image_w / viewtoCapture.ActiveViewport.Size.Width) elif image_height != None and image_width == None: image_w = image_w * (image_h / viewtoCapture.ActiveViewport.Size.Height) viewSize = System.Drawing.Size(int(image_w), int(image_h)) pic = rc.Display.RhinoView.CaptureToBitmap(viewtoCapture, viewSize) if transparent == True: if sc.doc.Views.ActiveView.ActiveViewport.DisplayMode.EnglishName == 'Rendered': rhBackColor = sc.doc.Views.Document.RenderSettings.BackgroundColorTop else: rhBackColor = rc.ApplicationSettings.AppearanceSettings.ViewportBackgroundColor pic.MakeTransparent(rhBackColor) fullPath = os.path.join(directory, fileName + '_' + viewName + '.png') try: System.Drawing.Bitmap.Save(pic, fullPath) except: try: fullPath = os.path.join(directory, fileName + '_' + viewName + '_1.png') System.Drawing.Bitmap.Save(pic, fullPath) except: print "Failed!" return pass fullPaths.append(fullPath) return fullPaths
def viewCapture(fileName, directory, viewNames, image_width, image_height, keepAspectRatio, saveAlpha): fullPathList = [] if saveAlpha == None: saveAlpha = False for viewName in viewNames: if viewName in rs.ViewNames(): rs.CurrentView(viewName, True) else: # change to RhinoDoc to get access to NamedViews sc.doc = rc.RhinoDoc.ActiveDoc namedViews = rs.NamedViews() if viewName in namedViews: viewName = rs.RestoreNamedView(viewName) else: viewName = None # change back to Grasshopper sc.doc = ghdoc viewName = rs.CurrentView(viewName, True) rs.CurrentView(viewName) sc.doc.Views.Find(viewName, False) viewtoCapture = sc.doc.Views.ActiveView try: dispMode = rc.Display.DisplayModeDescription.FindByName( dispModeStr) sc.doc.Views.ActiveView.ActiveViewport.DisplayMode = dispMode except: pass if image_height == None: image_h = viewtoCapture.ActiveViewport.Size.Height else: image_h = image_height if image_width == None: image_w = viewtoCapture.ActiveViewport.Size.Width else: image_w = image_width # aspectRatio if keepAspectRatio: if image_height == None and image_width != None: image_h = image_h * (image_w / viewtoCapture.ActiveViewport.Size.Width) elif image_height != None and image_width == None: image_w = image_w * (image_h / viewtoCapture.ActiveViewport.Size.Height) fullPath = os.path.join(directory, fileName + '_' + viewName + '.png') fullPathList.append(fullPath) # Set the image size rc.RhinoDoc.ActiveDoc.RenderSettings.UseViewportSize = False viewSize = System.Drawing.Size(int(image_w), int(image_h)) rc.RhinoDoc.ActiveDoc.RenderSettings.ImageSize = viewSize try: VRayForRhinoNETInterface.VRayInterface.SetRenderOutputSize( int(image_w), int(image_h)) except: pass print "Image dimensions set to (" + str(int(image_w)) + "x" + str( int(image_h)) + ")" # Render the image and save it. try: # V-Ray is the renderer. VRayForRhinoNETInterface.VRayInterface.HasRenderFinished() rs.Command("!_Render", echo=False) print "Rendering " + viewName + "..." while not VRayForRhinoNETInterface.VRayInterface.HasRenderFinished( ): if sc.escape_test(False): print("Rendering cancelled") rs.Command("_CloseRenderWindow", echo=False) rs.GetPlugInObject("V-Ray for Rhino").SetBatchRenderOn( True) vray.CancelRender() rs.GetPlugInObject("V-Ray for Rhino").SetBatchRenderOn( False) esc = True break rs.Sleep(10) rs.Command("_-SaveRenderWindowAs \"" + directory + "\\" + fileName + '_' + viewName + ".png\"") rs.Command( "_-CloseRenderWindow" ) #close the rendered window when in saving mode to avoid stacking a series of renderWindows when running on Rhino renderer. if saveAlpha == False: try: alphaPath = os.path.join( directory, fileName + '_' + viewName + '.Alpha.png') os.remove(alphaPath) except: pass except: if renderTime_ != None: # V-Ray is probably the renderer. start = time.clock() rs.Command("!_Render", echo=False) print "Rendering " + viewName + "..." while float(time.clock() - start) < renderTime_: rs.Sleep(10) rs.Command("_-SaveRenderWindowAs \"" + directory + "\\" + fileName + '_' + viewName + ".jpeg\"") rs.Command( "_-CloseRenderWindow" ) #close the rendered window when in saving mode to avoid stacking a series of renderWindows when running on Rhino renderer. if saveAlpha == False: try: alphaPath = os.path.join( directory, fileName + '_' + viewName + '.Alpha.jpeg') os.remove(alphaPath) except: pass else: # Hopefully Rhino is the renderer. print "Rendering " + viewName + "..." rs.Command("!_render") rs.Command("_-SaveRenderWindowAs \"" + directory + "\\" + fileName + '_' + viewName + ".png\"") rs.Command( "_-CloseRenderWindow" ) #close the rendered window when in saving mode to avoid stacking a series of renderWindows when running on Rhino renderer. return fullPathList
def __init__(self, outputUnits, dynamicSHDGroup_1, dynamicSHDGroup_2, RhinoViewsName, adaptiveZone, dgp_imageSize, onlyRunGlareAnalysis): if len(outputUnits) != 0 and outputUnits[0] != None: self.outputUnits = outputUnits else: self.outputUnits = [2] self.onlyAnnualGlare = onlyRunGlareAnalysis self.runAnnualGlare = False validViews = [] if RhinoViewsName != []: for viewName in RhinoViewsName: # check viewes if viewName in rs.ViewNames(): validViews.append(rs.CurrentView(viewName, True)) else: # change to RhinoDoc to get access to NamedViews sc.doc = rc.RhinoDoc.ActiveDoc namedViews = rs.NamedViews() if viewName in namedViews: validViews.append(rs.RestoreNamedView(viewName)) else: warning = viewName + " is not a valid Rhino view name in this document." ghenv.Component.AddRuntimeMessage( gh.GH_RuntimeMessageLevel.Warning, warning) # change back to Grasshopper sc.doc = ghdoc viewName = rs.CurrentView(viewName, True) self.RhinoViewsName = validViews if self.RhinoViewsName != []: self.runAnnualGlare = True if adaptiveZone == None: adaptiveZone = False self.adaptiveZone = adaptiveZone if not dgp_imageSize: dgp_imageSize = 250 self.dgp_imageSize = dgp_imageSize if dynamicSHDGroup_1 == None and dynamicSHDGroup_2 == None: class dynamicSHDRecipe(object): def __init__(self, type=1, name="no_blind"): self.type = type self.name = name self.DShdR = [dynamicSHDRecipe(type=1, name="no_blind")] else: self.DShdR = [] shadingGroupNames = [] if dynamicSHDGroup_1 != None: self.DShdR.append(dynamicSHDGroup_1) shadingGroupNames.append(dynamicSHDGroup_1.name) if dynamicSHDGroup_2 != None: self.DShdR.append(dynamicSHDGroup_2) shadingGroupNames.append(dynamicSHDGroup_2.name) if len(shadingGroupNames ) == 2 and shadingGroupNames[0] == shadingGroupNames[1]: msg = "Shading group names cannot be the same. Change the names and try again." # Number of ill files self.numOfIll = 1 for shadingRecipe in self.DShdR: if shadingRecipe.name == "no_blind": pass elif shadingRecipe.name == "conceptual_dynamic_shading": self.numOfIll += 1 else: # advanced dynamic shading self.numOfIll += len(shadingRecipe.shadingStates) - 1 print "number of ill files = " + str(self.numOfIll)
import rhinoscriptsyntax as rs import scriptcontext as sc import Rhino as rh viste = rs.ViewNames() for viewport in viste: rs.ViewDisplayMode(viewport, "Shaded") diametro = 1 brep = rs.GetObjects("dammi un solido", 16) brepexp = rs.ExplodePolysurfaces(brep) surface = rs.GetObject("dammi la superficie", 8) surf_edge = rs.DuplicateSurfaceBorder(surface, 1) new_surface = rs.CopyObject(surface, (0, 0, 0)) uv = [] temp_edge = rs.ExplodeCurves(surf_edge, False) list_evpt = [] for i in temp_edge: evpt = rs.CurveMidPoint(i) print evpt list_evpt.append(evpt) for i in list_evpt: bord = rs.SurfaceClosestPoint(new_surface, i) uv.append(bord) for i in uv: rs.ExtendSurface(new_surface, i, diametro * 10) edge = rs.OffsetCurveOnSurface(surf_edge, new_surface, -diametro) print edge if rs.CurveLength(edge) < rs.CurveLength(surf_edge): rs.DeleteObject(edge)
def update_views(): [rs.ViewDisplayMode(view, 'Ghosted') for view in rs.ViewNames()] sc.doc.Views.Redraw()
def LanciaBotton(self, sender, e): self.Close(True) #codice point extractor viste = rs.ViewNames() for viewport in viste: rs.ViewDisplayMode(viewport, "Ghosted") def FromEdgetoPlane(): PointPlane = [] CurveIdList = [] Brep = [] edges = rs.GetEdgeCurves() if edges: for edgeinfo in edges: Brep.append(edgeinfo[1]) CurveIdList.append(edgeinfo[0]) for CurveId in CurveIdList: if rs.IsCircle(CurveId): Pt = rs.CircleCenterPoint(CurveId) Normal = rs.CurveNormal(CurveId) LenghtNormal = rs.VectorLength(Normal) LenghNormal = self.m_foronumero.Text LenghNormal = int(LenghNormal) Normal = (LenghNormal * Normal[0], LenghNormal * Normal[1], LenghNormal * Normal[2]) PtStill = rs.AddPoint(Pt) Ptmoved = rs.MoveObject(Pt, Normal) Ptmoved = rs.coerce3dpoint(Ptmoved) PtStill = rs.coerce3dpoint(PtStill) PointPlane.append([ PtStill[0], PtStill[1], PtStill[2], Normal[0], Normal[1], Normal[2] ]) #PointPlane.append([Ptmoved[0],Ptmoved[1],Ptmoved[2],Normal[0],Normal[1],Normal[2]]) return (PointPlane, Brep) def CSVwrite(list, folder): #Get the filename to create filename = folder + "\\" + self.m_textbox.Text + "punti" + ".csv" print filename with open(filename, "wb") as csvfile: csvwriter = csv.writer(csvfile, delimiter=',') for item in list: csvwriter.writerow(item) print "Points written sucessfully to file" def exportBrep(Brep, folder): Brep = Brep[0] rs.SelectObject(Brep) file = folder + "\\" + self.m_textbox.Text + "solido" + ".step" extension = ".step" export = rs.Command("_-Export " + file + " _Enter") def Export(Object): folder = rs.BrowseForFolder( "Questo PC", "seleziona dove vuoi salvare i tuoi file") CSVwrite(Object[0], folder) exportBrep(Object[1], folder) PtNormBrep = FromEdgetoPlane() Export(PtNormBrep) rs.Command("_SelNone") rs.Command("_SelPt") rs.Command("_SelCrv") rs.Command("_Delete") for viewport in viste: rs.ViewDisplayMode(viewport, "Shaded") self.Close(True)
class TestViewportsDialog(): #codice point extractor viste = rs.ViewNames() for viewport in viste: rs.ViewDisplayMode(viewport, "Ghosted") def FromEdgetoPlane(): PointPlane = [] CurveIdList = [] Brep = [] edges = rs.GetEdgeCurves() if edges: for edgeinfo in edges: Brep.append(edgeinfo[1]) CurveIdList.append(edgeinfo[0]) print CurveIdList for CurveId in CurveIdList: if rs.IsCircle(CurveId): # print "Sono un cerchio" Pt = rs.CircleCenterPoint(CurveId) Normal = rs.CurveNormal(CurveId) LenghtNormal = rs.VectorLength(Normal) LenghNormal = self.m_foronumero.Text LenghNormal = int(LenghNormal) Normal = (LenghNormal * Normal[0], LenghNormal * Normal[1], LenghNormal * Normal[2]) print Normal PtStill = rs.AddPoint(Pt) Ptmoved = rs.MoveObject(Pt, Normal) Ptmoved = rs.coerce3dpoint(Ptmoved) PtStill = rs.coerce3dpoint(PtStill) # print Ptmoved # print PtStill PointPlane.append([ PtStill[0], PtStill[1], PtStill[2], Normal[0], Normal[1], Normal[2] ]) #PointPlane.append([Ptmoved[0],Ptmoved[1],Ptmoved[2],Normal[0],Normal[1],Normal[2]]) return (PointPlane, Brep) PtNormBrep = FromEdgetoPlane() def CSVwrite(list, folder): #Get the filename to create filename = folder + "punti" + ".csv" print filename with open(filename, "wb") as csvfile: csvwriter = csv.writer(csvfile, delimiter=',') for item in list: csvwriter.writerow(item) print "Points written sucessfully to file" def exportBrep(Brep, folder): Brep = Brep[0] rs.SelectObject(Brep) rs.Command("_-Export " + str(folder) + "solido" + ".step" + " _Enter") 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) Export(PtNormBrep) rs.Command("_SelNone") rs.Command("_SelPt") rs.Command("_SelCrv") rs.Command("_Delete") for viewport in viste: rs.ViewDisplayMode(viewport, "Shaded") ################################################### fine definizione point extractor def Colorreturner(self): return self.m_slider.Value def CloseButton(self): # Create the default button self.DefaultButton = forms.Button(Text='Close') self.DefaultButton.Click += self.OnCloseButtonClick return self.DefaultButton ################################################################################ # Function to test the viewport dialog ################################################################################ def TestViewportsDialog(): dlg = ViewportsDialog() rc = dlg.ShowModal(Rhino.UI.RhinoEtoApp.MainWindow)