def InsulationPanel(left_edge, right_edge):

    points = []
    #insulation_left = ver_line_split_even[i]
    point_1 = rs.CurveStartPoint(left_edge)
    point_2 = rs.CurveEndPoint(left_edge)
    #insulation_right = ver_line_split_even[i + next_even_Cource]
    point_3 = rs.CurveEndPoint(right_edge)
    point_4 = rs.CurveStartPoint(right_edge)

    trans = rs.XformTranslation((0, 0, ipThick))
    point_5 = rs.PointTransform(point_1, trans)
    point_6 = rs.PointTransform(point_2, trans)
    point_7 = rs.PointTransform(point_3, trans)
    point_8 = rs.PointTransform(point_4, trans)

    points.append(point_1)
    points.append(point_2)
    points.append(point_3)
    points.append(point_4)
    points.append(point_5)
    points.append(point_6)
    points.append(point_7)
    points.append(point_8)

    insulation = rs.AddBox(points)

    return insulation
Exemple #2
0
def Run(xNum, yNum):
    if xNum is None:
        rs.MessageBox("No number provided for x")
        return
    if yNum is None:
        rs.MessageBox("No number provided for y")
        return

    rs.EnableRedraw(False)
    boxes = []
    for i in range(xNum):
        for n in range(yNum):
            points = []
            for s in range(2):
                for t in range(4):
                    x = math.cos(math.radians(45 + 90 * t)) * math.sqrt(2)
                    y = math.sin(math.radians(45 + 90 * t)) * math.sqrt(2)
                    z = -1 + 2 * s
                    point = geo.Point3d(x, y, z)
                    points.append(point)
            box = rs.AddBox(points)

            box = rs.RotateObject(box, geo.Point3d(0, 0, 0),
                                  90 / (xNum - 1) * i, geo.Vector3d.ZAxis)
            box = rs.RotateObject(box, geo.Point3d(0, 0, 0),
                                  90 / (yNum - 1) * n, geo.Vector3d.XAxis)

            box = rs.MoveObject(box, geo.Vector3d(4 * i, 4 * n, 0))
            boxes.append(box)
    rs.EnableRedraw(True)

    return boxes


#Run()
Exemple #3
0
def createBox():
    l, b, h = [float(n) for n in raw_input('Of what dimensions?: "length breadth height"').split()]
    x, y, z = [float(n) for n in raw_input('where?: "x y z"').split()]
    id = rs.AddBox([(x,y,z),(x,y+b,z),(x+l,y+b,z),(x+l,y,z),(x,y,z+h),(x,y+b,z+h),(x+l,y+b,z+h),(x+l,y,z+h)])
    boxes.append(id)
    rs.SetUserText(id, key="Box", value=str(len(boxes)))
    print('Done.')
Exemple #4
0
 def draw_box(self):
     # boxを構成する点群
     pts = [
         [self.origin[0], self.origin[1], self.origin[2]],
         [self.origin[0] + self.width, self.origin[1], self.origin[2]],
         [
             self.origin[0] + self.width, self.origin[1] + self.depth,
             self.origin[2]
         ],
         [self.origin[0], self.origin[1] + self.depth, self.origin[2]],
         [self.origin[0], self.origin[1], self.origin[2] + self.height],
         [
             self.origin[0] + self.width, self.origin[1],
             self.origin[2] + self.height
         ],
         [
             self.origin[0] + self.width, self.origin[1] + self.depth,
             self.origin[2] + self.height
         ],
         [
             self.origin[0], self.origin[1] + self.depth,
             self.origin[2] + self.height
         ],
     ]
     # ptsを元にboxを描画する
     rs.AddBox(pts)
Exemple #5
0
def drawBox( side, location, angle_degrees1, angle_degrees2):
    """画一个2D方块
    参数:
      side(double): 方块的长度, double 
      locaiton(tuple(double, double,double)): 方块中心的位置
      angle_degrees1(double): xy平面旋转角度degree1
      angle_degrees2(double): 到达位置后继续朝z轴方向旋转角度degree2
    Returns:
      guid
    """
    corners = []
    corners.append((-side/2,-side/2,0))
    corners.append(( side/2,-side/2,0))
    corners.append((side/2,side/2,0))
    corners.append((-side/2,side/2,0)) 
    corners.append((-side/2,-side/2,side))
    corners.append((side/2,-side/2,side))
    corners.append((side/2,side/2,side))
    corners.append((-side/2,side/2,side))
    obj = rs.AddBox(corners)

    xform = rs.XformRotation2(angle_degrees1, (0,0,1), (0,0,0))
    obj = rs.TransformObject( obj, xform, False )
    vectorR1 = rs.VectorRotate( (1,0,0), angle_degrees1, (0,0,0))
    vectorR2 = rs.VectorCrossProduct(vectorR1, (0,0,1))
    xform = rs.XformRotation2(angle_degrees1, vectorR2, (0,0,0))
    obj = rs.TransformObject( obj, xform, False )
    xform = rs.XformTranslation( location)
    obj = rs.TransformObject( obj, xform, False )

    return obj 
    def draw_box(self):
        pts = [
            [self.origin[0], self.origin[1], self.origin[2]],
            [self.origin[0] + self.width, self.origin[1], self.origin[2]],
            [
                self.origin[0] + self.width, self.origin[1] + self.depth,
                self.origin[2]
            ],
            [self.origin[0], self.origin[1] + self.depth, self.origin[2]],
            [self.origin[0], self.origin[1], self.origin[2] + self.height],
            [
                self.origin[0] + self.width, self.origin[1],
                self.origin[2] + self.height
            ],
            [
                self.origin[0] + self.width, self.origin[1] + self.depth,
                self.origin[2] + self.height
            ],
            [
                self.origin[0], self.origin[1] + self.depth,
                self.origin[2] + self.height
            ],
        ]

        # drawing a box based on pts
        rs.AddBox(pts)
Exemple #7
0
def add_box(vx1, vy1, vz1, vx2, vy2, vz2):
    vA = [vx1, vy1, vz1]
    vB = [vx1, vy2, vz1]
    vC = [vx2, vy2, vz1]
    vD = [vx2, vy1, vz1]
    vE = [vx1, vy1, vz2]
    vF = [vx1, vy2, vz2]
    vG = [vx2, vy2, vz2]
    vH = [vx2, vy1, vz2]
    allGeometry.append(rs.AddBox([vA, vB, vC, vD, vE, vF, vG, vH]))
 def display(self):
     pt_1 = self.cp.Origin - self.cp.XAxis * self.xs * 0.5 - self.cp.YAxis * self.ys * 0.5
     pt_2 = self.cp.Origin - self.cp.XAxis * self.xs * 0.5 + self.cp.YAxis * self.ys * 0.5
     pt_3 = self.cp.Origin + self.cp.XAxis * self.xs * 0.5 + self.cp.YAxis * self.ys * 0.5
     pt_4 = self.cp.Origin + self.cp.XAxis * self.xs * 0.5 - self.cp.YAxis * self.ys * 0.5
     pt_5 = self.cp.Origin - self.cp.XAxis * self.xs * 0.5 - self.cp.YAxis * self.ys * 0.5 + self.cp.ZAxis * self.zs
     pt_6 = self.cp.Origin - self.cp.XAxis * self.xs * 0.5 + self.cp.YAxis * self.ys * 0.5 + self.cp.ZAxis * self.zs
     pt_7 = self.cp.Origin + self.cp.XAxis * self.xs * 0.5 + self.cp.YAxis * self.ys * 0.5 + self.cp.ZAxis * self.zs
     pt_8 = self.cp.Origin + self.cp.XAxis * self.xs * 0.5 - self.cp.YAxis * self.ys * 0.5 + self.cp.ZAxis * self.zs
     rs.AddBox([pt_1,pt_2,pt_3,pt_4,pt_5,pt_6,pt_7,pt_8])
Exemple #9
0
def createSectionBox(obj):
    box = rs.BoundingBox(obj)
    bb = rs.AddBox(box)
    faces = rs.ExplodePolysurfaces(bb)
    faces = [rs.FlipSurface(x) for x in faces]
    planes = [getSrfFrame(x) for x in faces]
    clips = [rs.AddClippingPlane(x, 1000, 1000) for x in planes]
    group = rs.AddGroup()
    rs.AddObjectsToGroup(clips, group)
    return clips
Exemple #10
0
def addBox(node):
    box = []
    for indx in node.indxList:
        box.append(ptsList[indx])
    boxBody = rs.AddBox(box)
    if (node.state == 1):
        rs.ObjectColor(boxBody, [255, 0, 0])
    elif (node.state == 3):
        rs.ObjectColor(boxBody, [0, 255, 0])
    elif (node.state == 4):
        rs.ObjectColor(boxBody, [0, 0, 0])
 def cube(self, l, w, h):
     #        a = rs.AddPoint(self.point)
     p = rs.rs.PointCoordinates(self.point)
     a = rs.AddPoint(p)
     b = rs.CopyObject(a, [l, 0, 0])
     c = rs.CopyObject(a, [l, w, 0])
     d = rs.CopyObject(a, [0, w, 0])
     e = rs.CopyObject(a, [0, 0, h])
     f = rs.CopyObject(a, [l, 0, h])
     g = rs.CopyObject(a, [l, w, h])
     h = rs.CopyObject(a, [0, w, h])
     box = rs.AddBox([a, b, c, d, e, f, g, h])
def SetUp(offset,h):

    sheet = rs.AddBox([[-10,-10,h],[10,-10,h],[10,10,h],[-10,10,h],[-10,-10,0],[10,-10,0],[10,10,0],[-10,10,0]])
    bigSheet = sheet

    box2 = rs.AddBox([[-5.25,-5.25,1],[5.25,-5.25,1],[5.25,5.25,1],[-5.25,5.25,1],[-5.25,-5.25,-2],[5.25,-5.25,-2],[5.25,5.25,-2],[-5.25,5.25,-2]])

    rs.MoveObject(box2, move_it)

    ribc = rs.BooleanIntersection([box2],[bigSheet],True)



    rs.SelectObject(ribc)
    rs.Command("_-Export C:\\" + dirsname + "\\protoslant_walk.igs ENTER")
    rs.Command("_SelNone")
    Rhino.FileIO.File3dm.Polish
    
    #fileName = Rhino.FileIO.File3dm
    
    #Rhino.FileIO.File3dm.Write(fileName,"C:\\"+dirsname+"\\protoslant_walk.3dm",5)
    rs.Command("_-Save C:\\" + dirsname + "\\protoslant_walk.3dm ENTER")
def RectangleCentered(plane,height,length,width):
    x = height/2
    y = length/2
    z = width/2
    p0 = plane.PointAt(x,y,-z)
    p1 = plane.PointAt(-x,y,-z)
    p2 = plane.PointAt(-x,-y,-z)
    p3 = plane.PointAt(x,-y,-z)
    p4 = plane.PointAt(x,y,z)
    p5 = plane.PointAt(-x,y,z)
    p6 = plane.PointAt(-x,-y,z)
    p7 = plane.PointAt(x,-y,z)
    bricks.append(rs.AddBox([p0,p1,p2,p3,p4,p5,p6,p7]))
    def Show(self):
        """
        displays the domain on the Rhino user interface.

        Parameters
        ----------
        None
        """
        corners = ([(0, 0, 0), (self.length, 0, 0),
                    (self.length, self.length, 0), (0, self.length, 0),
                    (0, 0, self.length), (self.length, 0, self.length),
                    (self.length, self.length, self.length),
                    (0, self.length, self.length)])
        return rs.AddBox(corners)
Exemple #15
0
def right_cuboid(base=u0(), width=1, height=1, length=1, top=None):
    base, dz = base_and_height(base, top or length)
    c, dx, dy = add_xy(base, width / -2, height / -2), width, height
    return rh.AddBox(
        map(Pt, [
            c,
            add_x(c, dx),
            add_xy(c, dx, dy),
            add_y(c, dy),
            add_z(c, dz),
            add_xz(c, dx, dz),
            add_xyz(c, dx, dy, dz),
            add_yz(c, dy, dz)
        ]))
def output_frame (filename):

    join_string = str(input_directory + filename)
    combined_string = '!_Import ' + '"' + join_string + '"'
    rs.Command(combined_string)

    # Get all objects imported 
    objs = rs.LastCreatedObjects(select=False)[0]
    
    # Close curve
    closed_curve = rs.CloseCurve(objs, 0.5)
    rs.DeleteObject(objs)
    
    # Rebuild curve to create smoother shape
    rs.RebuildCurve(closed_curve, 3, 100)

    # Pipe figure with radius of 0.25
    piped = rs.AddPipe(closed_curve,0,pipe_diameter)[0]

    rs.MoveObject(piped, [0,0,0])

    bounding_pts = rs.BoundingBox([piped], view_or_plane=rs.WorldXYPlane())

    maxX = 0
    minX = 0
    minY = 0
    minZ = 0
    for pt in bounding_pts:
        if pt[0] < minX:
            minX = pt[0]
        if pt[0] > maxX:
            maxX = pt[0]
        if pt[1] < minY:
            minY = pt[1]
        if pt[2] < minZ:
            minZ = pt[2]
    
    epsilon = 0.5
    center = 0
    one = [center - (box_width / 2),minY-epsilon,-1 * pipe_diameter]
    two = [center - (box_width / 2),minY-epsilon,pipe_diameter]
    three = [center + (box_width / 2),minY-epsilon,pipe_diameter]
    four = [center + (box_width / 2),minY-epsilon,-1 * pipe_diameter]
    five = [center - (box_width / 2),minY+epsilon,-1 * pipe_diameter]
    six = [center - (box_width / 2),minY+epsilon,pipe_diameter]
    seven = [center + (box_width / 2),minY+epsilon,pipe_diameter]
    eight = [center + (box_width / 2),minY+epsilon,-1 * pipe_diameter]
    
    bowx = rs.AddBox([two, three, four, one, six, seven, eight, five])
 def cubecenter(self, m1, m2, m3):
     #        a = rs.AddPoint(self.point)
     p = rs.GetPoint("Enter center point")
     a = rs.AddPoint(p)
     l = m1 / 2
     w = m2 / 2
     h = m3 / 2
     b = rs.CopyObject(a, [l, w, -h])
     c = rs.CopyObject(a, [l, -w, -h])
     d = rs.CopyObject(a, [-l, -w, -h])
     e = rs.CopyObject(a, [-l, w, -h])
     f = rs.CopyObject(a, [l, w, h])
     g = rs.CopyObject(a, [l, -w, h])
     h = rs.CopyObject(a, [-l, -w, h])
     j = rs.CopyObject(a, [-l, w, (m3 / 2)])
     box = rs.AddBox([b, c, d, e, f, g, h, j])
Exemple #18
0
def cuboid(b0=None,
           b1=None,
           b2=None,
           b3=None,
           t0=None,
           t1=None,
           t2=None,
           t3=None):
    b0 = b0 or u0()
    b1 = b1 or add_x(b0, 1)
    b2 = b2 or add_y(b1, 1)
    b3 = b3 or add_y(b0, 1)
    t0 = t0 or add_z(b0, 1)
    t1 = t1 or add_x(t0, 1)
    t2 = t2 or add_y(t1, 1)
    t3 = t3 or add_y(t0, 1)
    return rh.AddBox(map(Pt, [b0, b1, b2, b3, t0, t1, t2, t3]))
Exemple #19
0
def bbsolid(obj):
    if rs.IsBlockInstance(obj):
        arrMatrix = rs.BlockInstanceXform(obj)
        if arrMatrix is not None:
            # pointId = rs.AddPoint([0,0,0])
            plane = rs.PlaneTransform(rs.WorldXYPlane(), arrMatrix)
            box = rs.BoundingBox(obj, plane)
            bb = rs.AddBox(box)
            # if box:
            #     for i, point in enumerate(box):
            #         rs.AddTextDot( i, point )
            xformscale = rs.XformScale((1.0, 20.0, 1.0))
            cob = rs.XformChangeBasis(rs.WorldXYPlane(), plane)
            cob_inverse = rs.XformChangeBasis(plane, rs.WorldXYPlane())
            temp = rs.XformMultiply(xformscale, cob)
            xform = rs.XformMultiply(cob_inverse, temp)
            rs.TransformObjects(bb, xform)
            return bb
Exemple #20
0
def box(corner=u0(), dx=1, dy=None, dz=None):
    dy = dy or dx
    dz = dz or dy
    c = corner
    if isinstance(dx, xyz):
        v = loc_in_cs(dx, c.cs) - c
        dx, dy, dz = v.coords
    return rh.AddBox(
        map(Pt, [
            c,
            add_x(c, dx),
            add_xy(c, dx, dy),
            add_y(c, dy),
            add_z(c, dz),
            add_xz(c, dx, dz),
            add_xyz(c, dx, dy, dz),
            add_yz(c, dy, dz)
        ]))
Exemple #21
0
def addBox(node):
    box = []
    lower = node.indxList[0]
    upper = node.indxList[6]
    center = []
    for i in range(3):
        center.append((ptsList[lower][i] + ptsList[upper][i]) / 2)

    for indx in node.indxList:
        box.append(ptsList[indx])
    boxBody = rs.AddBox(box)
    rs.AddText(node.nid, center, 0.05)
    if (node.state == 1):
        rs.ObjectColor(boxBody, [255, 0, 0])
    elif (node.state == 3):
        rs.ObjectColor(boxBody, [0, 255, 0])
    elif (node.state == 4):
        rs.ObjectColor(boxBody, [0, 0, 0])
def WindowFrame():

    surf_int_edge_all = rs.DuplicateSurfaceBorder(surf[1], type=2)
    print len(surf_int_edge_all)
    window_frame_all = []

    for item in range(0, len(surf_int_edge_all), 1):
        surf_int_edge = surf_int_edge_all[item]

        surf_int_edge = rs.ExplodeCurves(surf_int_edge, True)

        trans1 = rs.XformTranslation((0, 0, 2 * ipThick))
        trans2 = rs.XformTranslation((0, 0, -2 * ipThick))

        point_1 = rs.CurveStartPoint(surf_int_edge[0])
        point_2 = rs.CurveStartPoint(surf_int_edge[1])
        point_3 = rs.CurveStartPoint(surf_int_edge[2])
        point_4 = rs.CurveStartPoint(surf_int_edge[3])

        point_5 = rs.PointTransform(point_1, trans1)
        point_6 = rs.PointTransform(point_2, trans1)
        point_7 = rs.PointTransform(point_3, trans1)
        point_8 = rs.PointTransform(point_4, trans1)

        point_1 = rs.PointTransform(point_1, trans2)
        point_2 = rs.PointTransform(point_2, trans2)
        point_3 = rs.PointTransform(point_3, trans2)
        point_4 = rs.PointTransform(point_4, trans2)

        frame_points = []
        frame_points.append(point_1)
        frame_points.append(point_2)
        frame_points.append(point_3)
        frame_points.append(point_4)
        frame_points.append(point_5)
        frame_points.append(point_6)
        frame_points.append(point_7)
        frame_points.append(point_8)

        window_frame = rs.AddBox(frame_points)
        window_frame_all.append(window_frame)

    return window_frame_all
Exemple #23
0
from __future__ import print_function

import rhinoscriptsyntax as rs
import scriptcontext as sc
import compas_rhino

guids = compas_rhino.get_objects()
compas_rhino.delete_objects(guids, True)

result = rs.AddBox([[0, 0, 0], [1, 0, 0], [1, 1, 0], [0, 1, 0], [0, 0, 1],
                    [1, 0, 1], [1, 1, 1], [0, 1, 1]])

print(result)

obj = sc.doc.Objects.Find(result)

print(obj)
# Random numbers part II to generate lines

import rhinoscriptsyntax as rs
import random

pts = []

for i in range(0, 100):
    x = random.uniform(0, 100)
    y = random.uniform(0, 100)
    z = random.uniform(0, 100)
    pt = [x, y, z]

    pts.append(pt)

pl = rs.AddPolyline(pts)
crv = rs.AddCurve(pts)
intCrv = rs.AddInterpCurve(pts)

color01 = [0, 255, 255]
color02 = [255, 0, 255]
color03 = [255, 255, 0]

rs.ObjectColor(pl, color01)
rs.ObjectColor(crv, color02)
rs.ObjectColor(intCrv, color03)

rs.AddBox([[0, 0, 0], [100, 0, 0], [100, 100, 0], [0, 100, 0], [0, 0, 100],
           [100, 0, 100], [100, 100, 100], [0, 100, 100]])
Exemple #25
0
boxes = rs.AddGroup("Boxes")

for x in range(numDivX):
    for y in range(numDivY):
        for z in range(numDivZ):
            # add box
            box = rs.AddBox(
                ([minX + x * stepX, minY + y * stepY, minZ + z * stepZ],
                 [minX + (x + 1) * stepX, minY + y * stepY,
                  minZ + z * stepZ], [
                      minX + (x + 1) * stepX, minY + (y + 1) * stepY,
                      minZ + z * stepZ
                  ],
                 [minX + x * stepX, minY + (y + 1) * stepY, minZ + z * stepZ],
                 [minX + x * stepX, minY + y * stepY,
                  minZ + (z + 1) * stepZ], [
                      minX + (x + 1) * stepX, minY + y * stepY,
                      minZ + (z + 1) * stepZ
                  ], [
                      minX + (x + 1) * stepX, minY + (y + 1) * stepY,
                      minZ + (z + 1) * stepZ
                  ], [
                      minX + x * stepX, minY + (y + 1) * stepY,
                      minZ + (z + 1) * stepZ
                  ]))

            # Group boxes
            #            boxes = rs.AddObjectsToGroup(box, "Boxes")
            boxFaces = rs.ExplodePolysurfaces(box)

            # Calculate density
    #run through clos_pt, if it's x
    string_l = rs.ObjectLayer(index)
    print string_l
    div_num = 3
    vector_length = rs.VectorLength(sub_vect) / div_num

    #adding spheres to the new lines
    #rs.AddSphere(new_pt,vector_length)

    #adding boxes to the new lines

    rs.AddBox(\
    [(new_pt_coord),\
    (new_pt_coord[0]+vector_length,new_pt_coord[1],new_pt_coord[2]),\
    (new_pt_coord[0]+vector_length,new_pt_coord[1]+vector_length,new_pt_coord[2]),\
    (new_pt_coord[0],new_pt_coord[1]+vector_length,new_pt_coord[2]),\
    (new_pt_coord[0],new_pt_coord[1],new_pt_coord[2]+vector_length),\
    (new_pt_coord[0]+vector_length,new_pt_coord[1],new_pt_coord[2]+vector_length),\
    (new_pt_coord[0]+vector_length,new_pt_coord[1]+vector_length,new_pt_coord[2]+vector_length),\
    (new_pt_coord[0],new_pt_coord[1]+vector_length,new_pt_coord[2]+vector_length)])
"""
def PassPtName(pt_name):
    pt_name = rs.ObjectsByName(pt_name)
    if pt_name == "Denver":
        pass

index = rs.ObjectsByName("Denver")
print index
rs.MoveObject(index, (0,0,10))

    def __generate_individual_levels(self, crosssectionplane, loft_height):
        cplane = rs.ViewCPlane(None, crosssectionplane)
        level_points = []
        spikiness = self.emotion_properties["spikiness"]  # max spikiness = 1
        scaling_factor_aid = 0.2 * spikiness
        #draws profile curves on each spine level
        for i in xrange(self.emotion_properties["horizontal_AR"][loft_height]
                        ["points_in_curve"]):
            scaling_factor = 1 - scaling_factor_aid if i % 2 == 0 else 1  #ranges from a difference in 0.8 and 1 (no difference)
            angle = 2 * math.pi * i / self.emotion_properties["horizontal_AR"][
                loft_height]["points_in_curve"]
            x_point = scaling_factor * self.dimensions[
                "actual_height"] * self.dimensions[
                    "vertical_AR"] * self.emotion_properties["vertical_AR"][
                        loft_height] * self.emotion_properties[
                            "horizontal_AR"][loft_height][
                                "level_horizontal_AR_x"] * math.cos(angle) / 2
            y_point = scaling_factor * self.dimensions[
                "actual_height"] * self.dimensions[
                    "vertical_AR"] * self.emotion_properties["vertical_AR"][
                        loft_height] * self.emotion_properties[
                            "horizontal_AR"][loft_height][
                                "level_horizontal_AR_y"] * math.sin(angle) / 2
            z_point = 0
            point = rs.XformCPlaneToWorld([x_point, y_point, z_point], cplane)
            level_points.append(rs.AddPoint(point))

        connecting_point = level_points[0]
        level_points.append(rs.AddPoint(connecting_point))

        level_curve = rs.AddCurve(
            level_points, self.emotion_properties["horizontal_AR"][str(
                loft_height)]["horizontal_smoothness"])

        #twists curve start point 180deg if it is below the spine_x point (to make sure loft doesn't twist)
        crvStart = rs.CurveStartPoint(level_curve)
        if crvStart[0] <= self.x_points[int(loft_height) - 1]:
            crvDomain = rs.CurveDomain(level_curve)
            rs.CurveSeam(level_curve, (crvDomain[0] + crvDomain[1]) / 2)

        # add planar surface to top and bottom of bottle
        if loft_height == "5" or loft_height == "1":
            rs.AddPlanarSrf(level_curve)

        # hide curves and points on level profiles
        rs.HideObjects(level_curve)
        rs.HideObjects(level_points)

        # object finishing features
        if (self.object_id == "Bottle"):
            if loft_height == "5":
                rs.AddCylinder(cplane, 14.5, 7.4, cap=True)

        if (self.object_id == "Chair"):
            if loft_height == "5":
                rs.AddCylinder(cplane, 14.5, 7.4, cap=True)

        if (self.object_id == "Jewelry"):
            if loft_height == "5":
                major_radius = 5.0
                minor_radius = major_radius - 1.5
                # rotated_cplane = rs.RotatePlane(cplane, 45.0, cplane.XAxis)
                direction = rs.AddPoint((0, 0, 1))
                rs.AddTorus(cplane.Origin, major_radius, minor_radius,
                            direction)

        if (self.object_id == "Totem"):
            if loft_height == "1":
                base_width = 80
                base_length = 60
                base_depth = -10
                base_points = [(-base_width / 2, -base_length / 2, 0),
                               (base_width / 2, -base_length / 2, 0),
                               (base_width / 2, base_length / 2, 0),
                               (-base_width / 2, base_length / 2, 0),
                               (-base_width / 2, -base_length / 2, base_depth),
                               (base_width / 2, -base_length / 2, base_depth),
                               (base_width / 2, base_length / 2, base_depth),
                               (-base_width / 2, base_length / 2, base_depth)]
                rs.AddBox(base_points)

        return level_curve
Exemple #28
0
__author__ = "billpower"
__version__ = "2019.12.25"

import rhinoscriptsyntax as rs

plane = rs.WorldXYPlane()  #获取xy以原点为中心的参考平面
rectangle = rs.AddRectangle(plane, 40, 40)

dpointsCoordinate = rs.DivideCurve(rectangle, 10)  #等分10矩形
dpoints = rs.AddPoints(dpointsCoordinate)  #增加等分点
print(dpoints)

format = "point_%s"  #格式化字符串的模式
dpointe = []
i = 0
for i in range(len(dpoints)):
    dpointe.append(format % str(i))  #格式化字符串并逐一追加到列表
print(dpointe)

dpointx = list(range(len(dpoints)))  #建立等分点索引
print(dpointx)

#切片索引,建球
sphere = rs.AddSphere(dpoints[y], 3)  #提取[y](圆心,半径)
cube = rs.AddBox(rs.BoundingBox(sphere))  #(物体,plane)
Exemple #29
0
    z = random.uniform(-10, z_range)
    return z


xnum = randX(10)
ynum = randY(10)
znum = randZ(10)

#initializing first point, making empty pts array, appending first point to pts array
pts = []
#ptZero = (0,0,0)
#pts.append(ptZero)

#initializing boxes
boxes = []
array = rs.AddBox([(0,0,0),(xnum,0,0),(xnum,ynum,0),\
(0,ynum,0),(0,0,znum),(xnum,0,znum),(xnum,ynum,znum),(0,ynum,znum)])
boxes.append(array)

#initializing line
start = rs.AddPoint(0, 0, 0)
end = rs.AddPoint(100, 0, 0)
line = rs.AddLine(start, end)

#Points = rs.DivideCurveLength(line,1,True,True)
#pts.append(Points)

for i in range(100):
    newPt = rs.AddPoint(i, 0, 0)
    xnum = randX(10)
    ynum = randY(10)
    znum = randZ(10)
Exemple #30
0
def output_frame(filename):

    global box_height
    global box_width
    global pipe_diameter

    # Import object from file
    join_string = str(input_directory + filename)
    combined_string = '!_Import ' + '"' + join_string + '"'
    rs.Command(combined_string)

    # Get all objects imported
    objs = rs.LastCreatedObjects(select=False)[0]

    # Close curve
    closed_curve = rs.CloseCurve(objs, 0.5)
    rs.DeleteObject(objs)

    # Rebuild curve to create smoother shape
    rs.RebuildCurve(closed_curve, 3, 100)

    # Pipe figure with radius of 0.25
    piped = rs.AddPipe(closed_curve, 0, pipe_diameter)[0]

    rs.MoveObject(piped, [0, 0, 0])

    bounding_pts = rs.BoundingBox([piped], view_or_plane=rs.WorldXYPlane())

    maxX = 0
    minX = 0
    minY = 0
    minZ = 0
    for pt in bounding_pts:
        if pt[0] < minX:
            minX = pt[0]
        if pt[0] > maxX:
            maxX = pt[0]
        if pt[1] < minY:
            minY = pt[1]
        if pt[2] < minZ:
            minZ = pt[2]

    epsilon = 0.5
    center = 0
    one = [
        center - (box_width / 2) - box_height, minY - epsilon,
        -1 * pipe_diameter
    ]
    two = [
        center - (box_width / 2) - box_height, minY - epsilon, pipe_diameter
    ]
    three = [
        center + (box_width / 2) + box_height, minY - epsilon, pipe_diameter
    ]
    four = [
        center + (box_width / 2) + box_height, minY - epsilon,
        -1 * pipe_diameter
    ]
    five = [
        center - (box_width / 2) - box_height, minY + epsilon,
        -1 * pipe_diameter
    ]
    six = [
        center - (box_width / 2) - box_height, minY + epsilon, pipe_diameter
    ]
    seven = [
        center + (box_width / 2) + box_height, minY + epsilon, pipe_diameter
    ]
    eight = [
        center + (box_width / 2) + box_height, minY + epsilon,
        -1 * pipe_diameter
    ]

    bowx = rs.AddBox([two, three, four, one, six, seven, eight, five])

    # rect = rs.AddRectangle(rs.WorldXYPlane(), box_width, box_height)
    #rect = rs.AddRectangle(rs.WorldXYPlane(), box_width, box_height)
    # Potentially use solid but smaller in height rect
    # rs.MoveObject(rect, [minX, minY - 3.0, minZ + pipe_diameter])
    # piped_rect = rs.AddPipe(rect,0,pipe_diameter)
    rs.DeleteObject(closed_curve)
    # rs.DeleteObject(rect)
    rs.SelectObjects([piped, bowx])

    rs.Command("_-Export " + output_directory + filename + '.stl' +
               " _Enter _Tolerance=.001  _Enter")