Beispiel #1
0
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])
Beispiel #2
0
    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
Beispiel #4
0
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()]
Beispiel #6
0
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)
Beispiel #10
0
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()
Beispiel #12
0
    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)
Beispiel #13
0
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)