def Main():
    try:
        data_name = "Rect2DogBone"
        curves = rs.GetObjects("Rectangle curve", rs.filter.curve, True, True)
        diam = rs.GetInteger(
            "DogBone circle diameter",
            16 if not rs.GetDocumentData(data_name, "diam_external") else
            float(rs.GetDocumentData(data_name, "diam_external")))
        diam_barrenos = rs.GetInteger(
            "Circle at centroid (0=None -1=Point n=Diameter)",
            0 if not rs.GetDocumentData(data_name, "diam_barrenos") else float(
                rs.GetDocumentData(data_name, "diam_barrenos")))
        tol = float(
            rs.GetReal(
                "External offset",
                0 if not rs.GetDocumentData(data_name, "tolerance") else float(
                    rs.GetDocumentData(data_name, "tolerance"))))
        if curves and diam:
            rs.EnableRedraw(False)
            dogbone(curves, diam, diam_barrenos, tol)
            rs.SetDocumentData(data_name, "diam_external", str(diam))
            rs.SetDocumentData(data_name, "diam_barrenos", str(diam_barrenos))
            rs.SetDocumentData(data_name, "tolerance", str(tol))
            rs.EnableRedraw(True)
        print("%s DogBones created" % len(curves))

    except Exception as e:
        print("Error: %s" % e)
 def test_IsDocumentUserTextIgnoresDocumentData(self):
   s,e,v = sec_ent_val()
   rs.SetDocumentData(s,e,v)
   s,e,v = sec_ent_val()
   rs.SetDocumentData(s,e,v)
   self.assertEqual(0, rs.DocumentUserTextCount())
   self.assertTrue(rs.IsDocumentUserText() == False)
Exemple #3
0
def set_document_data_with_section():
    """Assume that a section is like a dictionary. Set:
        dict1 = {'key1a': 'value1a', 'key1b', 'value1b'}
        dict2 = {'key2a': 'value2a', 'key2b', 'value2b'}
    """
    rs.SetDocumentData('dict1', 'key1a', 'value1a')
    rs.SetDocumentData('dict1', 'key1b', 'value1b')
    rs.SetDocumentData('dict2', 'key2a', 'value2a')
    rs.SetDocumentData('dict2', 'key2b', 'value2b')
 def test_DocumentDataCountIgnoresUserText(self):
   _,k,v = sec_ent_val()
   rs.SetDocumentUserText(k,v)
   self.assertEqual(0, rs.DocumentDataCount())
   s,e,v = sec_ent_val()
   rs.SetDocumentData(s,e,v)
   s,e,v = sec_ent_val()
   rs.SetDocumentData(s,e,v)
   self.assertEqual(2, rs.DocumentDataCount())
Exemple #5
0
def storeDefaultValues(convert_for_biesse, export_clamex_txt,
                       open_after_export):
    convert_for_biesse = rs.SetDocumentData("CheckAndExport",
                                            "convert_for_biesse",
                                            str(convert_for_biesse))
    export_clamex_txt = rs.SetDocumentData("CheckAndExport",
                                           "export_clamex_txt",
                                           str(export_clamex_txt))
    open_after_export = rs.SetDocumentData("CheckAndExport",
                                           "open_after_export",
                                           str(open_after_export))
Exemple #6
0
def __undo_usertext(sender, e):
    """custom undo event - may be removed if bug in Rhino is fixed"""
    actuel = (rs.GetDocumentData("ScaleModel", "scale"),
              rs.GetDocumentData("ScaleModel", "state"))
    e.Document.AddCustomUndoEvent("Undo ScaleModel", __undo_usertext, actuel)
    old = e.Tag
    print(old)
    print("returning to %s scale" % (old[1]))
    rs.SetDocumentData("ScaleModel", "scale", old[0])
    rs.SetDocumentData("ScaleModel", "state", old[1])
    rs.ZoomExtents()
 def test_DeleteDocumentData_not_delete_DocumentUserText(self):
     s, e, v = sec_ent_val()
     rs.SetDocumentData(s, e, v)
     _, k, v = sec_ent_val()
     rs.SetDocumentUserText(k, v)
     rs.DeleteDocumentData()
     self.assertEqual(v, rs.GetDocumentUserText(k))
def setFloorLevels(numFloors):
    """
    sets the floor levels in document data
    input: int: the number of floors
    returns: None
    """
    levelName = []
    levels = []

    for i in range(0, numFloors):
        levelName.append("L" + str(i + 1))
    levelName.append("Roof")

    #if existing data, get
    for i in range(0, numFloors):
        if (rs.GetDocumentData("Levels", levelName[i]) is not None):
            levels.append(rs.GetDocumentData("Levels", levelName[i]))
        else:
            levels.append(None)
    if (rs.GetDocumentData("Levels", levelName[-1]) is not None):
        levels.append(rs.GetDocumentData("Levels", levelName[-1]))
    else:
        levels.append(None)
    #rs.DeleteDocumentData("Levels")
    newLevels = []
    newLevels = rs.PropertyListBox(levelName, levels, "LEVELS",
                                   "Update the Levels below")

    if newLevels is None:
        return

    for i in range(0, numFloors + 1):
        rs.SetDocumentData("Levels", levelName[i], str(newLevels[i]))
    return None
def LoadLevelsToRhinoDoc(databaseFile):
    print "Loading levels to rhino doc"
    bldgNum = 0
    data = GetProjectLevelData(databaseFile, bldgNum)
    print data
    rs.SetDocumentData('PCPA', 'Levels', str(data))
    return 1
def _add_frames_layer():
    layer_name = f.Frame.layer_name
    dark_gray = Color.FromArgb(105, 105, 105)
    rs.AddLayer(layer_name, dark_gray)
    layer_name_list_name = l.Layer.layer_name_list_name
    layer_name = f.Frame.layer_name
    layer_value = ll.Llist.dummy_value
    rs.SetDocumentData(layer_name_list_name, layer_name, layer_value)
 def test_GetDocumentUserTextWithNoArgsIgnoresDocumentData(self):
     s,k,v = sec_ent_val()
     rs.SetDocumentData(s,k,v)
     rs.SetDocumentUserText(k,v)
     _,k,v = sec_ent_val()
     rs.SetDocumentUserText(k,v)
     self.assertTrue(not any("\\" in k for k in rs.GetDocumentUserText()))
     self.assertEqual(2, rs.GetDocumentUserText().Count)
Exemple #12
0
 def OnApplyPressed(self, sender, e):
     proj_Folder = self.drpDwnProjNum.SelectedValue
     #proj_Name = self.drpDwnProjNum.SelectedValue.split("_")[1]
     #proj_Number = self.drpDwnProjNum.SelectedValue.split("_")[0]
     rs.SetDocumentData('PCPA', 'Project_Folder', self.drpDwnProjNum.SelectedValue)
     #rs.SetDocumentData('PCPA', 'Project_Number', proj_Number)
     #rs.SetDocumentData('PCPA', 'Project_Name', proj_Name)
     #rs.SetDocumentData('PCPA', 'Project_City', self.tBoxProjCity.Text)
     self.Close()
def setNumFloors():
    try:
        curNum = int(rs.GetDocumentData("NumLevels", "NumLevels"))
    except:
        curNum = 1
    a = rs.GetInteger("Number of Levels in the building",
                      minimum=1,
                      number=curNum)
    rs.SetDocumentData("NumLevels", "NumLevels", str(a))
    return None
Exemple #14
0
def command_line_menu(interface):
    """Create a Rhino-style command line menu.

    Parameters:
        interface (dict) : A (nested) dictionary with interface options.
            The structure of the dictionary is as follows:

                interface['options'] := [...]
                interface['message'] := '...'
                interface['default'] := '...'
                interface['show']    := '...'
                interface['ID']      := '...'

    Return:
        str : The selected option.
        None : If the command is interrupted, for example by pressing ``ESC``

    Examples:

        .. code-block:: python

            # ...

    """
    if rs.GetDocumentData(interface["ID"], interface["ID"]):
        interface["default"] = rs.GetDocumentData(interface["ID"],
                                                  interface["ID"])
    new_options = []
    sub_menus = {}
    for option in interface["options"]:
        if isinstance(option, basestring):
            new_options.append(option)
        else:
            new_options.append(option["show"])
            sub_menus[option["show"]] = option
    result = rs.GetString(interface["message"], interface["default"],
                          new_options)
    interface["default"] = result
    rs.SetDocumentData(interface["ID"], interface["ID"], result)
    if result in sub_menus:
        result = command_line_menu(sub_menus[result])
    return result
def main():
    items = [
        "Project Name", "Project Number", "Project Location", "Plot Ratio",
        "Min Green Coverage", "Max Site Coverage", "CAD coordinate (X,Y,Z)"
    ]
    values = []
    if rs.GetDocumentData("Project Info", items[0]) is not None:
        for i in range(0, len(items)):
            values.append(rs.GetDocumentData("Project Info", items[i]))
    else:
        values = [None, None]
    values = rs.PropertyListBox(items, values, "Project Info", "Project Info")

    #if rs.ObjectsByLayer("SITE::BNDY") is not None:
    #    siteArea = rs.Area(rs.ObjectsByLayer("SITE::BNDY"))
    #else:
    #    siteArea = "No Site Boundary Layer"
    for i in range(0, len(items)):
        rs.SetDocumentData("Project Info", items[i], values[i])
    rs.Command("_Show ")
Exemple #16
0
def rescale():
    # get current state and scale from DocumentData, if present or from user, if not
    print("Current Scale: 1:", rs.GetDocumentData("ScaleModel", "scale"))
    print("Current State: ", rs.GetDocumentData("ScaleModel", "state"))

    if rs.GetDocumentData("ScaleModel", "scale") and rs.GetDocumentData(
            "ScaleModel", "state"):
        scale = float(rs.GetDocumentData("ScaleModel", "scale"))
        oldechelle = scale
        state = rs.GetDocumentData("ScaleModel", "state")
        oldetat = state
    else:
        state = ""
        state = rs.ListBox(items=("Full-Scale", "Model Scale"),
                           message="Currently at what scale ?",
                           title="Scale Model",
                           default=state)
        if state is None:  # cancelled
            return
        oldetat = state
        if state == "Model Scale":
            scale = 250.
            scale = rs.GetReal("Current Scale 1:", scale, 0)
            oldechelle = scale
            if scale is None:  # cancelled
                return
        else:
            if state == "Full-Scale":
                scale = 1.
    previous_params = (str(scale), state)
    # get desired state and scale
    state = rs.ListBox(("Full-Scale", "Model Scale"),
                       "Currently %s. Choose new state" % (state), "Rescale",
                       state)
    if state == None:  # cancelled
        return

    if state == "Model Scale":
        if not scale: scale = 250.
        scale = rs.GetReal("New Scale 1:", scale, 0)
        if scale == None: return

    rs.SetDocumentData("ScaleModel", "scale", str(scale))
    rs.SetDocumentData("ScaleModel", "state", state)

    # scale geometry and dimensions
    dimstyles = rs.DimStyleNames()

    rs.EnableRedraw(False)

    if not oldetat == state:
        if state == "Full-Scale":
            rs.ScaleObjects(rs.AllObjects(), [0, 0, 0], [(scale), (scale),
                                                         (scale)])
            for dimstyle in dimstyles:
                rs.Command('_-ScaleDimstyle "' + dimstyle + '" ' + str(scale))

        else:
            rs.ScaleObjects(rs.AllObjects(), [0, 0, 0], [(1 / scale),
                                                         (1 / scale),
                                                         (1 / scale)])
            for dimstyle in dimstyles:
                rs.Command('_-ScaleDimstyle "' + dimstyle + '" ' +
                           str(1 / scale))

    else:
        if state == "Model Scale":
            rs.ScaleObjects(rs.AllObjects(), [0, 0, 0], \
                            [(oldechelle / scale), (oldechelle / scale), (oldechelle / scale)])
            for dimstyle in dimstyles:
                rs.Command('_-ScaleDimstyle "' + dimstyle + '" ' +
                           str(oldechelle / scale))
    sc.doc.AddCustomUndoEvent("Undo ScaleModel", __undo_usertext,
                              previous_params)
    print("New Scale: 1:", rs.GetDocumentData("ScaleModel", "scale"))
    print("New State: ", rs.GetDocumentData("ScaleModel", "state"))
    rs.EnableRedraw(True)

    rs.ZoomExtents(all=True)
Exemple #17
0
def AddTitleBlock(size):
    filelocations = config.GetDict()
    rs.EnableRedraw(False)
    if size == 11:
        offset = .354
        row1 = offset
        row2 = row1 * 2
        row3 = row1 * 3
        row4 = row1 * 4
        leftEdge = offset
        middle = 17 / 2
        rightEdge = 17 - offset

        pt1 = [leftEdge, row4]
        pt2 = [rightEdge, 11 - row1]
        txtBase1 = [middle, row2]
        txtBase2 = [leftEdge, row2]
        txtBase3 = [rightEdge, row2]
        txtBase4 = [leftEdge, row1]
        txtBase5 = [rightEdge, row1]

        lineSt = [leftEdge, row3]
        lineEnd = [rightEdge, row3]

        txtSizeL = .125
        txtSizeM = .094

        logoPlane = [13.834, .247, 0]
        logoWidth = 2.823
        logoHeight = .116

    elif size == 8:
        offset = .229
        row1 = offset
        row2 = row1 * 2
        row3 = row1 * 3
        row4 = row1 * 4
        leftEdge = offset
        middle = 11 / 2
        rightEdge = 11 - offset

        pt1 = [leftEdge, row4]
        pt2 = [rightEdge, 8.5 - row1]
        txtBase1 = [middle, row2]
        txtBase2 = [leftEdge, row2]
        txtBase3 = [rightEdge, row2]
        txtBase4 = [leftEdge, row1]
        txtBase5 = [rightEdge, row1]

        lineSt = [leftEdge, row3]
        lineEnd = [rightEdge, row3]

        txtSizeL = .125
        txtSizeM = .063

        logoPlane = [8.347, .157, 0]
        logoWidth = 2.434
        logoHeight = .100

    elif size == 18:
        offset = .5
        row1 = offset
        row2 = row1 * 2
        row3 = row1 * 3
        row4 = row1 * 4
        leftEdge = offset
        middle = 24 / 2
        rightEdge = 24 - offset

        pt1 = [leftEdge, row4]
        pt2 = [rightEdge, 18 - row1]
        txtBase1 = [middle, row2]
        txtBase2 = [leftEdge, row2]
        txtBase3 = [rightEdge, row2]
        txtBase4 = [leftEdge, row1]
        txtBase5 = [rightEdge, row1]

        lineSt = [leftEdge, row3]
        lineEnd = [rightEdge, row3]

        txtSizeL = .250
        txtSizeM = .125

        logoPlane = [19.627, .367, 0]
        logoWidth = 3.885
        logoHeight = .160

    layout = sc.doc.Views.GetPageViews()[-1]
    if layout is None: return

    sc.doc.Views.ActiveView = layout

    if rs.GetDocumentData(section="PCPA", entry="Project_Name") is None:
        rs.SetDocumentData(section="PCPA",
                           entry="Project_Name",
                           value="PROJECT TITLE")
    projectTitle = '%<DocumentText("PCPA\Project_Name")>%'

    if rs.GetDocumentData(section="PCPA", entry="Client_Name") is None:
        rs.SetDocumentData(section="PCPA",
                           entry="Client_Name",
                           value="Client Name")
    clientName = '%<DocumentText("PCPA\Client_Name")>%'

    #Add text
    textList = []
    textList.append(rs.AddText("Title", txtBase1, txtSizeL, justification=2))
    textList.append(
        rs.AddText(projectTitle, txtBase2, txtSizeL, justification=1))
    textList.append(
        rs.AddText('%<Date("MMMM d, yyyy")>%',
                   txtBase3,
                   txtSizeM,
                   justification=4))

    textList.append(rs.AddText(clientName, txtBase4, txtSizeM,
                               justification=1))

    #ADD Copyright
    copyright = 'COPYRIGHT ' + u"\u00a9" + ' %<Date("yyyy")>%'
    copyrightText = rs.AddText(copyright, txtBase5, txtSizeM, justification=4)

    #ADD Pelli Clarke Pelli
    pcp = 'Pelli Clarke Pelli'
    pcpText = rs.AddText(pcp, txtBase5, txtSizeM, justification=4)
    if rs.IsDimStyle('PCPA_10'):
        dimstyleID = sc.doc.DimStyles.FindName('PCPA_14')

    ##############
    #Just trying to change the dim style here
    #pcpRhobj = rs.coercerhinoobject(pcpText)
    #test = pcpRhobj.Attributes
    #pcpRhobj.CommitChanges()
    ##############

    #ADD Architects
    architects = 'Architects'
    architectsText = rs.AddText(architects,
                                txtBase5,
                                txtSizeM,
                                justification=4)

    #Horizontal line
    line = rs.AddLine(lineSt, lineEnd)

    #Add detail
    detail = rs.AddDetail(layout.ActiveViewportID, pt1, pt2,
                          "PCPA " + str(layout.PageName), 7)

    #Change layers AddLayerByNumber
    try:
        rs.ObjectLayer(line, layers.GetLayerNameByNumber(8204))
    except:
        pass
    try:
        rs.ObjectLayer(detail, layers.GetLayerNameByNumber(8106))
    except:
        pass
    try:
        for eachText in textList:
            rs.ObjectLayer(eachText, layers.GetLayerNameByNumber(8105))
    except:
        pass
    try:
        rs.ObjectLayer(copyrightText, layers.GetLayerNameByNumber(8211))
    except:
        pass
    try:
        rs.ObjectLayer(pcpText, layers.GetLayerNameByNumber(8210))
    except:
        pass
    try:
        rs.ObjectLayer(architectsText, layers.GetLayerNameByNumber(8211))
    except:
        pass
    rs.EnableRedraw(True)
 def test_SetDocumentDataReturnsNoneForNew(self):
   section, entry, value = sec_ent_val()
   self.assertTrue(rs.SetDocumentData(section, entry, value) == None)
Exemple #19
0
def Main():

    input_curves = rs.GetObjects("Curves", rs.filter.curve, True, True)
    input_points = rs.GetObjects("Points for dogboone placement",
                                 rs.filter.point)
    if not input_curves or not input_points: return

    #Reads, asks and writes settings to document
    data_name = "dogbone2"
    values = rs.GetDocumentData(data_name, "settings")
    values = json.loads(values)["data"] if values else [
        "35.0", "15.0", "9.525", "1"
    ]
    settings = ["Length:", "With:", "Diameter:", "Tolerance Offset:"]
    length, width, diam, aperture = [
        float(i.replace(" ", "")) for i in rs.PropertyListBox(
            settings, values, "DogBone by dfmd", "Settings:")
    ]
    rs.SetDocumentData(data_name, "settings",
                       json.dumps({"data": [length, width, diam, aperture]}))

    sorted_points = []
    clean_curves = []
    rs.EnableRedraw(False)
    for curve in input_curves:

        point_list = []
        for point in input_points:
            if rs.PointInPlanarClosedCurve(point, curve,
                                           rs.CurvePlane(curve)) == 2:
                point_list.append(point)

        if point_list:
            sorted_points.append(rs.SortPointList(point_list))
            #Clean curve
            #             circle = rs.AddCircle(rs.CurveAreaCentroid(curve)[0],10000)
            #             planar_surface = rs.AddPlanarSrf(circle)
            #             projected_curve = rs.ProjectCurveToSurface(curve,planar_surface,(0,0,-1))
            #             clean_curves.append(projected_curve)
            #             rs.DeleteObjects([circle,planar_surface,curve])

            clean_curves.append(curve)

    #main_curve = rs.GetCurveObject("Selecciona curva",True)[0]
    #main_points = rs.SortPointList(rs.GetObjects("Selecciona puntos de referencia",rs.filter.point))
    #input_curves = rebuild_curves(input_curves)

    for main_curve in clean_curves:

        main_points = sorted_points[clean_curves.index(main_curve)]
        bone_curves = [
            create_bone(point, main_curve, length, width, diam / 2, aperture)
            for point in main_points
        ]
        #new_main_curve = rs.CopyObject(rs.ConvertCurveToPolyline(main_curve,False,False,True))
        new_main_curve = rs.CopyObject(main_curve)
        completed = True
        for bone_curve in bone_curves:

            buffer_curve = rs.CurveBooleanDifference(new_main_curve,
                                                     bone_curve)

            if len(buffer_curve) > 1:
                rs.DeleteObjects(buffer_curve)
                rs.DeleteObject(new_main_curve)
                completed = False
                break

            rs.DeleteObject(new_main_curve)
            new_main_curve = buffer_curve

        if not completed:
            super_curve = rs.CurveBooleanUnion(bone_curves)
            rare_curves = rs.CurveBooleanDifference(main_curve, super_curve)
            if len(rare_curves) > 1:
                areas = [rs.CurveArea(i) for i in rare_curves]
                sorted_curves = [
                    x for (y, x) in sorted(zip(areas, rare_curves))
                ]
                rs.DeleteObjects(sorted_curves[:-1])

            rs.DeleteObject(super_curve)

        rs.DeleteObjects(bone_curves + [main_curve])
 def test_GetDocumentDataSectionNameReturnsEntryNames(self):
   s,e1,v = sec_ent_val()
   rs.SetDocumentData(s, e1, v)
   _,e2,v = sec_ent_val()
   rs.SetDocumentData(s, e2, v)
   self.assertEqual([e1,e2], rs.GetDocumentData(s))
 def test_GetDocumentData_Typical(self):
   s,e,v = sec_ent_val()
   rs.SetDocumentData(s,e,v)
   self.assertEqual(v, rs.GetDocumentData(s,e))
 def test_GetDocumentDataNoArgsReturnsSectionNames(self):
   s,e,v = sec_ent_val()
   rs.SetDocumentData(s, e, v)
   _,e,v = sec_ent_val()
   rs.SetDocumentData(s, e, v)
   self.assertEqual([s], rs.GetDocumentData())
 def test_GetDocumentDataReturnsNoneForBadSectionOrEntry(self):
   s, e, v = sec_ent_val()
   self.assertTrue(rs.GetDocumentData(s) == None)
   rs.SetDocumentData(s, e, v)
   self.assertTrue(rs.GetDocumentData(s, uniquestr()) == None)
def _set_entries():
    rs.SetDocumentData(dict_name_1, key_1a, value_1a)
    rs.SetDocumentData(dict_name_1, key_1b, value_1b)
    rs.SetDocumentData(dict_name_2, key_2a, value_2a)
    rs.SetDocumentData(dict_name_2, key_2b, value_2b)
Exemple #25
0
def storeDefaultValues( section, dict):
    for key in dict:
        value = dict[key]
        rs.SetDocumentData(section, key, str(value))
Exemple #26
0
 def OnFileCloseClick(self, sender, e):
     self.grid.DataStore = []
     self.comboBuildingNum.DataStore = []
     self.databaseFile = None
     self.UpdateFileLabel()
     rs.SetDocumentData('PCPA', 'Project_Database', "")
Exemple #27
0
def Main():
    
    if not LANG: return
        
    if not rs.IsLayer(OFFSET_LAYER):
        rs.AddLayer(OFFSET_LAYER)
    else:
        rs.DeleteObjects(rs.ObjectsByLayer(OFFSET_LAYER))
    if not rs.IsLayer(TRASH_LAYER):
        rs.AddLayer(TRASH_LAYER)
    else:
        rs.DeleteObjects(rs.ObjectsByLayer(TRASH_LAYER))

    original_layer = rs.CurrentLayer()
    
    machining_settings = False
    general_settings = False
    user_data = False
    

#     if rs.IsAlias(alias_name):
#         if rs.AliasMacro(alias_name) != "-_RunPythonScript (\"%s\")" % os.path.realpath(__file__):
#             if rs.MessageBox("Rhino tiene registrado esta ubicacion en el comando de %s:\n\n%s\n\nDeseas cambiarla por esta?\n\n%s\n" % (alias_name,rs.AliasMacro(alias_name),os.path.realpath(__file__)) , 4 | 32) == 6:
#                 rs.DeleteAlias(alias_name)
#                 rs.AddAlias(alias_name,"-_RunPythonScript (\"%s\")" % os.path.realpath(__file__))
#             else:
#                 pass
#     else:
#         if rs.MessageBox("Vincular el comando \"%s\" a este archivo?\n\n%s\n\nPodras ejecutar directamente el plugin escribiendo \"%s\" en la consola." %  (alias_name,os.path.realpath(__file__),alias_name) , 4 | 32) == 6:
#             rs.AddAlias(alias_name,"-_RunPythonScript (\"%s\")" % os.path.realpath(__file__))
#         else:
#             pass

    try:
        machining_settings =  eval(rs.GetDocumentData(REGISTRY_SECTION,"machining_settings"))
   
    except:
        pass
    try:
        general_settings =  eval(rs.GetDocumentData(REGISTRY_SECTION,"general_settings"))
    except:
        pass
    try:
        
        f = open(SETTINGS_FILE,"r")
        r = f.read()
        f.close()
        persistant = eval(r)        
        
        if machining_settings != False:
            machining_settings.update(persistant)
        else:
            machining_settings = persistant
    except:
        pass
    try:
        user_data =  eval(rs.GetDocumentData(REGISTRY_SECTION,"user_data"))
        if not user_data["save_path"]:
            user_data["save_path"] = rs.DocumentPath().replace(".3dm","_gcode.txt") if rs.DocumentPath() else False
    except:
        pass
    
    if user_data and user_data["selected_preset"] not in machining_settings:
        user_data["selected_preset"] = False
   
    print TXT["init"]
    
    ui = SettingsControl(general_settings,machining_settings,user_data)
    Rhino.UI.Dialogs.ShowSemiModal(ui.form)

    temporal = {}
    persistant = {}
    
    for name in ui.machining_settings:

        if ui.machining_settings[name]["persistant"]:
            temporal[name] = ui.machining_settings[name]
        else:
            persistant[name] = ui.machining_settings[name]
    
    f = open(SETTINGS_FILE,"w")
    f.write(str(persistant))
    f.close()
    
    rs.SetDocumentData(REGISTRY_SECTION,"machining_settings",str(temporal))
    rs.SetDocumentData(REGISTRY_SECTION,"general_settings",str(ui.general_settings))
    rs.SetDocumentData(REGISTRY_SECTION,"user_data",str(ui.user_data))

#     print "to registry...."
#     print "machining_settings",str(ui.machining_settings)
#     print "general_settings",str(ui.general_settings)
#     print "user_data",str(ui.user_data)
#     print "temp",str([i for i in temporal])
#     print "persistant",str([i for i in persistant])
    
    ui.code_thread = False
    rs.CurrentLayer(original_layer)
    rs.DeleteObjects(rs.ObjectsByLayer(OFFSET_LAYER))
    rs.DeleteObjects(rs.ObjectsByLayer(TRASH_LAYER))
    rs.DeleteLayer(OFFSET_LAYER)
    rs.DeleteLayer(TRASH_LAYER)
    
    print TXT["bye"]
 def test_DeleteDocumentDataFailsOnEntryWithNoneSection(self):
     s, e, v = sec_ent_val()
     rs.SetDocumentData(s, e, v)
     self.assertRaises(TypeError, rs.DeleteDocumentData, None, e)
import rhinoscriptsyntax as rs

data_name = "OffsetAndClose"

curve = rs.GetObject("Select curve", rs.filter.curve, True, True)
dir = rs.GetPoint("Offset direction")
dist = rs.GetReal(
    "Offset distance",
    5 if not rs.GetDocumentData(data_name, "dist") else float(
        rs.GetDocumentData(data_name, "dist")))


def offset():
    curves = [curve]
    offset_curve = rs.OffsetCurve(curve, dir, dist)
    curves.append(offset_curve)
    curves.append(
        rs.AddLine(rs.CurveEndPoint(offset_curve), rs.CurveEndPoint(curve)))
    curves.append(
        rs.AddLine(rs.CurveStartPoint(offset_curve),
                   rs.CurveStartPoint(curve)))
    rs.JoinCurves(curves, True)
    print "Offset created."


if curve and dir and dist:
    try:
        offset()
        rs.SetDocumentData(data_name, "dist", str(dist))
    except Exception as e:
        print('Error: %s' % e)
Exemple #30
0
 def OnFileSaveClick(self, sender, e):
     data = self.grid.DataStore
     reversed(data)
     rs.SetDocumentData('PCPA', 'Levels', str(data))
     self.Close()