Example #1
0
 def OnFormClosed(self, sender, e):
     generatedStair = rs.ObjectsByName(
         "GdC9V&^a^rGZZNgiWFH&aTRQLLscu*9AZCmhk8t2!a")
     generatedHandrail = rs.ObjectsByName(
         "qe7g&G5LzXEvbudtPT8xCxQbisusFVqCPqMsiHK2jc")
     rs.DeleteObjects(rs.ObjectsByName(
         "xAbJgNV6^bz6azN&6E$Q^WeX$Dd^vygCz5z7Hmynb5"))
     rs.DeleteObjects(rs.ObjectsByName("BC6#DT5LCQX*#8r97Tquf5gNF"))
     if generatedStair:
         rs.DeleteObject(generatedStair)
     if generatedHandrail:
         rs.DeleteObjects(generatedHandrail)
     self.Close(False)
Example #2
0
        def OnOKButtonClick(self, sender, e):
            # remove object name to avoid deletion
            generatedStair = rs.ObjectsByName(
                "GdC9V&^a^rGZZNgiWFH&aTRQLLscu*9AZCmhk8t2!a")
            generatedHandrail = rs.ObjectsByName(
                "qe7g&G5LzXEvbudtPT8xCxQbisusFVqCPqMsiHK2jc")
            rs.DeleteObjects(rs.ObjectsByName(
                "xAbJgNV6^bz6azN&6E$Q^WeX$Dd^vygCz5z7Hmynb5"))
            rs.DeleteObjects(rs.ObjectsByName("BC6#DT5LCQX*#8r97Tquf5gNF"))
            if generatedStair:
                rs.ObjectName(generatedStair, name="www.landarchtools.com")
            if generatedHandrail:
                rs.ObjectName(generatedHandrail, name="www.landarchtools.com")

            self.Close(True)
Example #3
0
def get_objects(name=None, color=None, layer=None):
    guids = rs.AllObjects()
    if name:
        guids = list(set(guids) & set(rs.ObjectsByName(name)))
    if color:
        guids = list(set(guids) & set(rs.ObjectsByColor(color)))
    if layer:
        guids = list(set(guids) & set(rs.ObjectsByLayer(layer)))
    return guids
def RestoreWorldCoordinate():
    try:

        rs.EnableRedraw(False)

        # retreive northing and easting from text object
        obj = rs.ObjectsByName("_ORIGIN_TEXT_")
        if obj:
            text = rs.TextObjectText(obj)
            textList = text.split()
            easting = float(textList[1])
            northing = float(textList[3])

            # create reference coordinates to make vector
            orPoint = (easting, northing, 0)
            point = rs.PointCoordinates(rs.ObjectsByName("_ORIGIN_POINT_"))
            vector = rs.VectorCreate(orPoint, point)

            # move all objects back to original origin point
            allObj = rs.AllObjects()
            rs.MoveObjects(allObj, vector)

            # delete coordinate geometry
            isCurrent = rs.IsLayerCurrent("_ORIGIN_")
            if isCurrent == False:
                rs.PurgeLayer("_ORIGIN_")
            if isCurrent == True:
                defaultCheck = rs.IsLayer("Default")
                if defaultCheck == True:
                    rs.CurrentLayer("Default")
                    rs.PurgeLayer("_ORIGIN_")
                if defaultCheck == False:
                    rs.AddLayer("Default")
                    rs.CurrentLayer("Default")
                    rs.PurgeLayer("_ORIGIN_")

            rs.EnableRedraw(True)

    except:
        print("Failed to execute")
        rs.EnableRedraw(True)
        return
Example #5
0
def get_num_layer():
    count = 0
    objID = []
    while 1:
        count += 1
        zero_str = '000000'
        objName = 'Layer: ' + zero_str[:-len(str(count))] + str(count) + ' Wall1'
        objID.append(rs.ObjectsByName(objName))
        if objID[-1] == []:
            # rs.HideObjects(objID[:])
            return count - 1
Example #6
0
def get_objects(name=None, color=None, layer=None, type=None):
    """Get identifiers of Rhino objects, potentially filtered by name, color, layer, or type.

    Parameters
    ----------
    name : str, optional
    color : tuple or list, optional
        RGB color components in integer format (0-255).
    layer : str, optional
    type : Rhino.DocObjects.ObjectType, optional
        The object type.

    Returns
    -------
    list
        The GUIDs of the objects matching the filter parameters.

    Examples
    --------
    .. code-block:: python

        import compas_rhino

        guids_all = compas_rhino.get_objects()
        guids_compas = compas_rhino.get_objects(name='COMPAS.*')
        guids_red = compas_rhino.get_objects(color=(255, 0, 0))
        guids_points = compas_rhino.get_objects(type=compas_rhino.rs.filter.point)
        guids_redpoints = compas_rhino.get_objects(color=(255, 0, 0), type=compas_rhino.rs.filter.point)

    .. code-block:: python

        guids_all = set(compas_rhino.get_objects())
        guids_compas = set(compas_rhino.get_objects(name='COMPAS.*'))
        guids_red = set(compas_rhino.get_objects(color=(255, 0, 0)))
        guids_points = set(compas_rhino.get_objects(type=compas_rhino.rs.filter.point))
        guids_redpoints = set(compas_rhino.get_objects(color=(255, 0, 0), type=compas_rhino.rs.filter.point))

        print guids_compas.issubset(guids_all)
        print guids_all.issubset(guids_compas)

        # True, False

        print guids_red.issubset(guids_all)
        print guids_points.issubset(guids_all)
        print guids_redpoints.issubset(guids_all)

        # True, True, True

        print guids_redpoints.issubset(guids_points)
        print guids_redpoints.issubset(guids_red)
        print guids_points.issubset(guids_red)

        # True, True, False

    """
    guids = rs.AllObjects()
    if name:
        guids = list(set(guids) & set(rs.ObjectsByName(name)))
    if color:
        guids = list(set(guids) & set(rs.ObjectsByColor(color)))
    if layer:
        guids = list(set(guids) & set(rs.ObjectsByLayer(layer)))
    if type:
        guids = list(set(guids) & set(rs.ObjectsByType(type)))
    return guids
Example #7
0
        elevation = rs.GetReal("what's the elevation angle?") # ask for an elevation angle, just like up top
        azimuth = rs.GetReal("what's the azimuth angle?") # ask for an azimuth angle
    
        azimuth *= -1 # flip the azimuth - because by default, rhino rotates things CCW, and compasses go CW
        # rotate that first point to the elevation angle
        # rotate works like this: RotateObject( object_to_rotate, center_point, angle_to_rotate, rotation_axis, copy_yes/no )
        rs.RotateObject(starterPt, [0,0,0], elevation, axis=[1,0,0], copy=True)
        rs.RotateObject(rs.FirstObject(), [0,0,0], azimuth, axis=[0,0,1], copy=False) # do the same thing for the azimuth
        listOfPoints.append(rs.FirstObject()) # once we have the final location, add that point to our listOfPoints list

        rs.CurrentLayer("sun rays") # switch to the sun rays layer
        sunRay = rs.AddLine([0,0,0],rs.FirstObject()) # on that layer, draw a line for the ray
        rs.CurrentLayer(dayName) # switch back to the current day (for the next loop)
        
        #this is the end of the "for loop" - note how the next "if" statement isn't indented as much
            
    if(listOfPoints): # check whether listOfPoints has anything in it
         sunpath = rs.AddInterpCurve(listOfPoints) # add an interpolated curve (one that goes THROUGH the points)
         newsunpath = rs.PullCurve(sunSphere, sunpath, False) # pull that curve to the sphere
         rs.ObjectName(newsunpath, dayName) # name it using the 'dayName' variable from earlier - fyi, object names show up if you type 'properties' in rhino
         rs.DeleteObject(sunpath) # delete the old (non-pulled) curve
         crvstojoin = rs.ObjectsByName(dayName, True) # sometimes pulling breaks up a curve, so we have to gather all those pieces
         if (len(crvstojoin) > 1): # if, in fact, there are multiple curves
             crvstojoin = rs.JoinCurves(crvstojoin, True) # join them
         rs.ObjectName(crvstojoin, dayName) # for some reason joining things kills their names - so if you want, rename the final curve
         
         rs.DeleteObject(starterPt) # finally, delete that original point that we copied and rotated around
         rs.DeleteObject(sunSphere) # and delete the sphere.
         
else: # if we didn't successfully get points or radius
    print "please enter positive values!" # explain why nothing happened
Example #8
0
        def handrailGen(self, sender, e):

            flip = self.flipC.Checked
            hType = self.handrailTypeC.SelectedIndex
            handrailOffset = int(self.handrailOffsetC.Value) * scale
            tread = int(self.treadC.Value) * scale
            riser = int(self.riserC.Value) * scale
            numSteps = int(self.numStepsC.Value)
            hEndLength = int(self.handrailExtensionC.Value) * scale
            pipeDiameter = int(self.handrailDiameterC.Value) * scale
            hHeight = int(self.handrailHeightC.Value) * scale
            topLine = rs.AddLine(line[0], line[1])
            rs.ObjectName(topLine, "BC6#DT5LCQX*#8r97Tquf5gNF")
            topPoint = line[0]
            genHandrail = self.genHandrailBool.Checked

            rs.EnableRedraw(False)
            if genHandrail == False:
                iteration = rs.ObjectsByName(
                    "qe7g&G5LzXEvbudtPT8xCxQbisusFVqCPqMsiHK2jc")
                if iteration:
                    rs.DeleteObjects(iteration)
                    rs.EnableRedraw(True)

            if genHandrail == True:
                # Delete any existing iteration
                iteration = rs.ObjectsByName(
                    "qe7g&G5LzXEvbudtPT8xCxQbisusFVqCPqMsiHK2jc")
                if iteration:
                    rs.DeleteObjects(iteration)

                # get perp line - length of stair
                t = rs.CurveClosestPoint(topLine, topPoint)
                planeNormal = rs.CurveNormal(topLine)
                tangent = rs.CurveTangent(topLine, t)

                if flip == False:
                    curveNormal = rs.VectorCrossProduct(planeNormal, tangent)
                else:
                    curveNormal = rs.VectorReverse(
                        rs.VectorCrossProduct(planeNormal, tangent))

                # Get guide curve
                scaledV = rs.VectorReverse(
                    rs.VectorScale(curveNormal, tread*numSteps))
                ptGuide1 = rs.AddPoint(line[0])
                ptGuide2 = rs.CopyObject(ptGuide1, scaledV)
                rs.MoveObjects([ptGuide1, ptGuide2], [
                               0, 0, (riser*numSteps)*-1])
                curve = rs.AddCurve([ptGuide1, ptGuide2])

                # Get vector for step run
                vectorRun = rs.VectorCreate(
                    topPoint, topPoint + curveNormal * tread)

                # Setup curves for handrail
                curve1 = curve
                curve2 = rs.MoveObject(rs.CopyObject(curve1, rs.VectorCreate(line[1],
                                                                             rs.CurveStartPoint(curve1))), [0, 0, (riser * numSteps)*-1])
                midPoint = rs.CurveMidPoint(userCurve)

                # Main slanted handrail curve
                pt1 = rs.MoveObject(rs.MoveObject(rs.CurveStartPoint(curve1), vectorRun), [
                                    0, 0, hHeight + (riser*numSteps)])
                pt2 = rs.MoveObject(rs.MoveObject(
                    rs.CurveEndPoint(curve1), vectorRun), [0, 0, hHeight])
                mainCurve = rs.AddCurve([pt1, pt2])

                # Top leveled handrail curve at 300mm standard DDA
                pt3 = rs.CopyObject(pt1, rs.VectorReverse(
                    rs.VectorScale(rs.VectorUnitize(vectorRun), hEndLength)))
                topCurve = rs.AddCurve([pt1, pt3])

                # Bottom leveled handrail curve at 300mm standard DDA
                pt4 = rs.CopyObject(pt2, rs.VectorScale(
                    rs.VectorUnitize(vectorRun), hEndLength))
                bottomCurve = rs.AddCurve([pt2, pt4])

                # Start list of construction geometry for later cleanup
                hGeoList = [curve1, curve2, pt1, pt2, mainCurve, pt3, topCurve,
                            pt4, bottomCurve, ptGuide1, ptGuide2, curve, topLine]

                # IF STATEMENTS FOR HANDRAIL TYPE

                # 1 180 degree, no return
                if hType == 0:

                    # Lower Handrail return
                    hpt1 = rs.CopyObject(pt4, [0, 0, (pipeDiameter * 2) * -1])
                    hpt2 = rs.MoveObject(rs.CopyObject(
                        pt4, [0, 0, pipeDiameter * -1]), rs.VectorScale(rs.VectorUnitize(vectorRun), pipeDiameter))
                    lowerH = rs.AddArc3Pt(pt4, hpt1, hpt2)

                    # Upper Handrail return
                    hpt3 = rs.CopyObject(pt3, [0, 0, (pipeDiameter * 2) * -1])
                    hpt4 = rs.MoveObject(rs.CopyObject(pt3, [0, 0, pipeDiameter * -1]), rs.VectorReverse(
                        rs.VectorScale(rs.VectorUnitize(vectorRun), pipeDiameter)))
                    upperH = rs.AddArc3Pt(pt3, hpt3, hpt4)

                    # Draw leg upper
                    lpt1 = rs.CurveMidPoint(topCurve)
                    lpt2 = rs.CopyObject(lpt1, [0, 0, hHeight*-1])
                    lCurveUpper = rs.AddCurve([lpt1, lpt2])

                    # Draw leg lower
                    lpt3 = rs.CopyObject(pt2, [0, 0, hHeight*-1])
                    lCurveLower = rs.AddCurve([pt2, lpt3])

                    # Make vectors to move handrails into place
                    moveShort = rs.VectorScale(userVector, handrailOffset)
                    moveLong = rs.VectorScale(
                        userVector, rs.CurveLength(userCurve) - (handrailOffset*2))

                    # Join, offset skeleton
                    hCurve = rs.JoinCurves(
                        [mainCurve, topCurve, bottomCurve, lowerH, upperH])
                    hCurve1 = rs.CopyObject(hCurve, moveShort)
                    lCurveUpper1 = rs.CopyObject(lCurveUpper, moveShort)
                    lCurveLower1 = rs.CopyObject(lCurveLower, moveShort)

                    # Pipe skeleton
                    pipe1 = rs.AddPipe(
                        hCurve1, 0, pipeDiameter/2, blend_type=0, cap=1)
                    pipe2 = rs.AddPipe(
                        lCurveUpper1, 0, pipeDiameter/2, blend_type=0, cap=1)
                    pipe3 = rs.AddPipe(
                        lCurveLower1, 0, pipeDiameter/2, blend_type=0, cap=1)

                    # form list of generated geo
                    handrailGeo1 = [pipe1, pipe2, pipe3]

                    # Name geo for deletion
                    for i in handrailGeo1:
                        rs.ObjectName(
                            i, "qe7g&G5LzXEvbudtPT8xCxQbisusFVqCPqMsiHK2jc")
                    # copy
                    handrailGeo2 = rs.CopyObjects(handrailGeo1, moveLong)

                    # Cleanup construction linework
                    hGeoList.extend([hpt1, hpt2, lowerH, hpt3, hpt4, upperH, lpt2, lpt3, lCurveLower, hCurve, hCurve1,
                                    lCurveUpper1, lCurveLower1, lCurveUpper])
                    rs.DeleteObjects(hGeoList)

                    rs.EnableRedraw(True)

                # 2 180 degree, full return
                if hType == 1:

                    rs.EnableRedraw(False)

                    # Lower handrail return
                    hpt1 = rs.CopyObject(pt4, [0, 0, (hEndLength/3)*-2])
                    hpt2 = rs.CopyObject(pt2, [0, 0, (hEndLength/3)*-2])
                    hCurve11 = rs.AddPolyline([pt4, hpt1, hpt2])
                    lowerH = rs.JoinCurves([bottomCurve, hCurve11])

                    # Upper handrail return
                    hpt3 = rs.CopyObject(pt3, [0, 0, (hEndLength/3)*-2])
                    hpt4 = rs.CopyObject(rs.CurveMidPoint(
                        topCurve), [0, 0, (hEndLength/3)*-2])
                    hCurve2 = rs.AddPolyline([pt3, hpt3, hpt4])
                    upperH = rs.JoinCurves([topCurve, hCurve2])

                    # Draw leg upper
                    lpt1 = rs.CurveMidPoint(topCurve)
                    lpt2 = rs.CopyObject(lpt1, [0, 0, hHeight*-1])
                    lCurveUpper = rs.AddCurve([lpt1, lpt2])

                    # Draw leg lower
                    lpt3 = rs.CopyObject(pt2, [0, 0, hHeight*-1])
                    lCurveLower = rs.AddCurve([pt2, lpt3])

                    # Make vectors to move handrails into place
                    moveShort = rs.VectorScale(userVector, handrailOffset)
                    moveLong = rs.VectorScale(
                        userVector, rs.CurveLength(userCurve) - (handrailOffset*2))

                    # Pipe skeleton move
                    hCurve1 = rs.JoinCurves([lowerH, upperH, mainCurve])
                    rs.MoveObjects(
                        [hCurve1, lCurveUpper, lCurveLower], moveShort)

                    # Pipe
                    pipe1 = rs.AddPipe(
                        hCurve1, 0, pipeDiameter/2, blend_type=0, cap=1)
                    pipe2 = rs.AddPipe(
                        lCurveUpper, 0, pipeDiameter/2, blend_type=0, cap=1)
                    pipe3 = rs.AddPipe(
                        lCurveLower, 0, pipeDiameter/2, blend_type=0, cap=1)

                    handrailGeo1 = [pipe1, pipe2, pipe3]

                    # Name geo for deletion
                    for i in handrailGeo1:
                        rs.ObjectName(
                            i, "qe7g&G5LzXEvbudtPT8xCxQbisusFVqCPqMsiHK2jc")

                    # Move and copy into position
                    handrailGeo2 = rs.CopyObjects(handrailGeo1, moveLong)

                    # Cleanup
                    hGeoList.extend([hpt1, hpt2, hCurve11, lowerH, hpt3, hpt4, hCurve2, upperH, lpt2, lCurveUpper, lpt3,
                                    lCurveLower, hCurve1])
                    rs.DeleteObjects(hGeoList)

                    rs.EnableRedraw(True)

                # 3 Ground triangle return
                if hType == 2:

                    rs.EnableRedraw(False)

                    # Draw leg upper
                    lpt1 = rs.CurveMidPoint(topCurve)
                    lpt2 = rs.CopyObject(lpt1, [0, 0, hHeight*-1])
                    lCurveUpper = rs.AddCurve([lpt1, lpt2])

                    # Draw leg lower
                    lpt3 = rs.CopyObject(pt2, [0, 0, hHeight*-1])
                    lCurveLower = rs.AddCurve([pt2, lpt3])

                    # Lower Return
                    lowerH = rs.AddCurve([pt4, lpt3])

                    # Upper Return
                    upperH = rs.AddCurve([pt3, lpt2])

                    # Make vectors to move handrails into place
                    moveShort = rs.VectorScale(userVector, handrailOffset)
                    moveLong = rs.VectorScale(
                        userVector, rs.CurveLength(userCurve) - (handrailOffset*2))

                    # Join Curves and move
                    hCurve = rs.JoinCurves(
                        [mainCurve, topCurve, bottomCurve, lowerH, upperH])
                    rs.MoveObjects(
                        [hCurve, lCurveUpper, lCurveLower], moveShort)

                    # pipe
                    pipe1 = rs.AddPipe(hCurve, 0, pipeDiameter /
                                       2, blend_type=0, cap=1)
                    pipe2 = rs.AddPipe(
                        lCurveUpper, 0, pipeDiameter/2, blend_type=0, cap=1)
                    pipe3 = rs.AddPipe(
                        lCurveLower, 0, pipeDiameter/2, blend_type=0, cap=1)

                    handrailGeo1 = [pipe1, pipe2, pipe3]

                    # Name geo for deletion
                    for i in handrailGeo1:
                        rs.ObjectName(
                            i, "qe7g&G5LzXEvbudtPT8xCxQbisusFVqCPqMsiHK2jc")

                    # move and copy into place
                    handrailGeo2 = rs.CopyObjects(handrailGeo1, moveLong)

                    # Cleanup
                    hGeoList.extend(
                        [lpt2, lCurveUpper, lpt3, lCurveLower, lowerH, upperH, hCurve, topLine])
                    rs.DeleteObjects(hGeoList)

                    rs.EnableRedraw(True)

                # 4 Ground return

                if hType == 3:

                    rs.EnableRedraw(False)

                    # Draw leg upper
                    lpt1 = rs.CurveMidPoint(topCurve)
                    lpt2 = rs.CopyObject(lpt1, [0, 0, hHeight*-1])
                    lCurveUpper = rs.AddCurve([lpt1, lpt2])

                    # Draw leg lower
                    lpt3 = rs.CopyObject(pt2, [0, 0, hHeight*-1])
                    lCurveLower = rs.AddCurve([pt2, lpt3])

                    # Lower Return
                    hpt1 = rs.CopyObject(pt4, [0, 0, hHeight*-1])
                    hCurve1 = rs.AddCurve([pt4, hpt1])

                    # Upper Return
                    hpt2 = rs.CopyObject(pt3, [0, 0, hHeight*-1])
                    hCurve2 = rs.AddCurve([pt3, hpt2])

                    # Join curves
                    hCurve = rs.JoinCurves(
                        [mainCurve, topCurve, bottomCurve, hCurve1, hCurve2])

                    # Get Vectors
                    moveShort = rs.VectorScale(userVector, handrailOffset)
                    moveLong = rs.VectorScale(
                        userVector, rs.CurveLength(userCurve) - (handrailOffset*2))

                    # move
                    rs.MoveObjects(
                        [hCurve, lCurveUpper, lCurveLower], moveShort)

                    # Pipe
                    pipe1 = rs.AddPipe(hCurve, 0, pipeDiameter /
                                       2, blend_type=0, cap=1)
                    pipe2 = rs.AddPipe(
                        lCurveUpper, 0, pipeDiameter/2, blend_type=0, cap=1)
                    pipe3 = rs.AddPipe(
                        lCurveLower, 0, pipeDiameter/2, blend_type=0, cap=1)

                    handrailGeo1 = [pipe1, pipe2, pipe3]

                    # Name geo for deletion
                    for i in handrailGeo1:
                        rs.ObjectName(
                            i, "qe7g&G5LzXEvbudtPT8xCxQbisusFVqCPqMsiHK2jc")

                    # move and copy into place
                    handrailGeo2 = rs.CopyObjects(handrailGeo1, moveLong)

                    # Clean up
                    hGeoList.extend([lpt2, lCurveUpper, lpt3, lCurveLower,
                                    hpt1, hCurve1, hpt2, hCurve2, hCurve, topLine])
                    rs.DeleteObjects(hGeoList)

                    rs.EnableRedraw(True)

                # 5 Wall return
                if hType == 4:

                    rs.EnableRedraw(False)

                    # Draw leg upper
                    lpt1 = rs.CurveMidPoint(topCurve)
                    lpt2 = rs.CopyObject(lpt1, [0, 0, hHeight*-1])
                    lCurveUpper = rs.AddCurve([lpt1, lpt2])

                    # Draw leg lower
                    lpt3 = rs.CopyObject(pt2, [0, 0, hHeight*-1])
                    lCurveLower = rs.AddCurve([pt2, lpt3])

                    # get vectors
                    vector1 = rs.VectorScale(rs.VectorUnitize(
                        rs.VectorReverse(userVector)), handrailOffset)
                    vector2 = rs.VectorScale(
                        userVector, rs.CurveLength(userCurve))

                    # Lower Return
                    hpt1 = rs.CopyObject(pt4, vector1)
                    hCurve1 = rs.AddCurve([pt4, hpt1])

                    # Upper Return
                    hpt2 = rs.CopyObject(pt3, vector1)
                    hCurve2 = rs.AddCurve([pt3, hpt2])

                    # Join main curves
                    hCurveMain1 = rs.JoinCurves(
                        [mainCurve, topCurve, bottomCurve])

                    # Get Vectors
                    moveShort = rs.VectorScale(userVector, handrailOffset)
                    moveLong = rs.VectorScale(
                        userVector, rs.CurveLength(userCurve) - handrailOffset)

                    # Copy hanrail 2
                    hCurveMain2 = rs.CopyObject(hCurveMain1, moveLong)
                    hCurve3 = rs.CopyObject(hCurve1, vector2)
                    hCurve4 = rs.CopyObject(hCurve2, vector2)
                    lCurveUpper2 = rs.CopyObject(lCurveUpper, moveLong)
                    lCurveLower2 = rs.CopyObject(lCurveLower, moveLong)

                    # Join curves
                    hCurveJoined1 = rs.JoinCurves(
                        [hCurve1, hCurve2, hCurveMain1])
                    hCurveJoined2 = rs.JoinCurves(
                        [hCurveMain2, hCurve3, hCurve4, ])

                    # Pipe
                    pipe1 = rs.AddPipe(
                        hCurveJoined1, 0, pipeDiameter/2, blend_type=0, cap=1)
                    pipe2 = rs.AddPipe(
                        lCurveLower, 0, pipeDiameter/2, blend_type=0, cap=1)
                    pipe3 = rs.AddPipe(
                        lCurveUpper, 0, pipeDiameter/2, blend_type=0, cap=1)
                    pipe4 = rs.AddPipe(
                        hCurveJoined2, 0, pipeDiameter/2, blend_type=0, cap=1)
                    pipe5 = rs.AddPipe(
                        lCurveUpper2, 0, pipeDiameter/2, blend_type=0, cap=1)
                    pipe6 = rs.AddPipe(
                        lCurveLower2, 0, pipeDiameter/2, blend_type=0, cap=1)

                    handrailGeo1 = [pipe1, pipe2, pipe3,
                                    pipe3, pipe4, pipe5, pipe6]

                    # Name geo for deletion
                    for i in handrailGeo1:
                        rs.ObjectName(
                            i, "qe7g&G5LzXEvbudtPT8xCxQbisusFVqCPqMsiHK2jc")

                    # Move handrail 1 into place
                    rs.MoveObjects([pipe1, pipe2, pipe3], moveShort)

                    # Cleanup
                    hGeoList.extend([lpt2, lCurveUpper, lpt3, lCurveLower, hpt1, hCurve1, hpt2, hCurve2, hCurveMain1, hCurveMain2, hCurve3,
                                    hCurve4, lCurveUpper2, lCurveLower2, hCurveJoined1, hCurveJoined2])
                    rs.DeleteObjects(hGeoList)

                    rs.EnableRedraw(True)
Example #9
0
        def stairGen(self, sender, e):

            # Variables and defaults
            tread = int(self.treadC.Value) * scale
            riser = int(self.riserC.Value) * scale
            numSteps = int(self.numStepsC.Value)
            flip = self.flipC.Checked
            stairLength = tread * numSteps
            genStair = self.genStairBool.Checked
            curveList = []
            junkList = []

            # get user line for top width of stair

            rs.EnableRedraw(False)

            if genStair == False:
                iteration = rs.ObjectsByName(
                    "GdC9V&^a^rGZZNgiWFH&aTRQLLscu*9AZCmhk8t2!a")
                if iteration:
                    rs.DeleteObject(iteration)
                    rs.EnableRedraw(True)

            if genStair == True:
                # Delete any existing iteration
                iteration = rs.ObjectsByName(
                    "GdC9V&^a^rGZZNgiWFH&aTRQLLscu*9AZCmhk8t2!a")
                if iteration:
                    rs.DeleteObject(iteration)

                topLine = rs.AddLine(line[0], line[1])
                topPoint = line[0]
                stepPoint = topPoint

                # get perp line - length of stair
                t = rs.CurveClosestPoint(topLine, topPoint)
                planeNormal = rs.CurveNormal(topLine)
                tangent = rs.CurveTangent(topLine, t)
                curveNormal = rs.VectorCrossProduct(planeNormal, tangent)

                # Get vector
                vectorRun = rs.VectorCreate(
                    topPoint, topPoint + curveNormal * tread)

                # Bool flip direction of stair (add bool option in GUI)
                if flip == True:
                    vector = rs.VectorReverse(vectorRun)
                else:
                    vector = vectorRun

                # loop through number of steps to gen step curve
                for i in range(numSteps):
                    pt01 = rs.AddPoint(stepPoint)
                    pt02 = rs.CopyObject(pt01, vector)
                    pt03 = rs.CopyObject(pt02, [0, 0, riser*-1])
                    curve = rs.AddPolyline([pt01, pt02, pt03])
                    curveList.append(curve)
                    stepPoint = rs.CurveEndPoint(curve)
                    rs.DeleteObjects([pt01, pt02, pt03])

                # Extrude stair curve to full width
                joinedCurve = rs.JoinCurves(curveList)
                bottomPoint = rs.CopyObject(
                    line[0], [0, 0, (riser*numSteps)*-1])
                stairBottom = rs.CurveEndPoint(joinedCurve)
                curve = rs.AddPolyline([line[0], bottomPoint, stairBottom])
                # createhandrail curve and return it
                handRailCurve = rs.AddCurve([bottomPoint, stairBottom])
                curveList.append(curve)
                joinedCurves = rs.JoinCurves(curveList)
                stair = rs.ExtrudeCurveStraight(joinedCurves, line[0], line[1])
                rs.CapPlanarHoles(stair)
                # this identifies the generated stair geometry
                rs.ObjectName(
                    stair, "GdC9V&^a^rGZZNgiWFH&aTRQLLscu*9AZCmhk8t2!a")

                # clean up leftover geometry
                junkList.extend([bottomPoint, joinedCurve,
                                joinedCurves, topLine, handRailCurve])
                junkList = junkList + curveList
                rs.DeleteObjects(junkList)

                rs.EnableRedraw(True)
Example #10
0
points = data['OBJECT GEOMETRY - POINT COORDINATES']
lines = data['OBJECT GEOMETRY - LINES 01 - GENERAL']
areas = data['OBJECT GEOMETRY - AREAS 01 - GENERAL']
design_strips = data['OBJECT GEOMETRY - DESIGN STRIPS']

# Add structural points
for key, attr in points.iteritems():
    rs.CurrentLayer('s_points')
    obj = rs.AddPoint([attr['GlobalX'], attr['GlobalY'], attr['GlobalZ']])
    if obj:
        rs.ObjectName(obj, str(key))

# Add structural lines
for key, attr in lines.iteritems():
    rs.CurrentLayer('s_lines')
    start = rs.coerce3dpoint(rs.ObjectsByName('Point ' + attr['PointI'])[0])
    end = rs.coerce3dpoint(rs.ObjectsByName('Point ' + attr['PointJ'])[0])
    if start and end:
        rs.AddLine(start, end)

# Add structural areas
for key, attr in areas.iteritems():
    rs.CurrentLayer('s_areas')
    numPoints = int(attr['NumPoints'])
    point_list = []
    for i in xrange(numPoints):
        point_list.append(
            rs.coerce3dpoint(
                rs.ObjectsByName('Point ' + attr['Point' + str(i + 1)])[0]))
    point_list.append(point_list[0])
    outline = rs.AddPolyline(point_list)
Example #11
0
def get_shape_named(name):
    return shape_from_ref(rh.ObjectsByName(name, False, False, False)[0])
def get_name_for_retrieval():
    name = rs.GetString("Enter 'h' or 'v'")
    select = True
    guids = rs.ObjectsByName(name, select)
    rs.SelectObjects(guids)