def sphere(x, y, z, r, axis=2): if axis == 0: s = xyz.Sphere(r) m = xyz.rotate((0, 1, 0), radians(90)).translate((x, y, z)) return xyz.TransformedShape(s, m) if axis == 1: s = xyz.Sphere(r) m = xyz.rotate((1, 0, 0), radians(90)).translate((x, y, z)) return xyz.TransformedShape(s, m) if axis == 2: return xyz.Sphere(r, (x, y, z))
def pipe(a, b, r): x1, y1, z1 = a x2, y2, z2 = b dx, dy, dz = x2 - x1, y2 - y1, z2 - z1 if dx: c = xyz.Cylinder(r, -dx / 2.0, dx / 2.0) m = xyz.rotate((0, 1, 0), radians(-90)).translate(((x1 + x2) / 2.0, y1, z1)) return xyz.TransformedShape(c, m) if dy: c = xyz.Cylinder(r, -dy / 2, dy / 2) m = xyz.rotate((1, 0, 0), radians(-90)).translate((x1, (y1 + y2) / 2.0, z1)) return xyz.TransformedShape(c, m) if dz: c = xyz.Cylinder(r, z1, z2) m = xyz.translate((x1, y1, 0)) return xyz.TransformedShape(c, m)
def pipe(a, b, r): x1, y1, z1 = a x2, y2, z2 = b dx, dy, dz = x2 - x1, y2 - y1, z2 - z1 if dx: c = xyz.Cylinder(r, -dx / 2.0, dx / 2.0) m = xyz.rotate((0, 1, 0), radians(-90)).translate( ((x1 + x2) / 2.0, y1, z1)) return xyz.TransformedShape(c, m) if dy: c = xyz.Cylinder(r, -dy / 2, dy / 2) m = xyz.rotate((1, 0, 0), radians(-90)).translate( (x1, (y1 + y2) / 2.0, z1)) return xyz.TransformedShape(c, m) if dz: c = xyz.Cylinder(r, z1, z2) m = xyz.translate((x1, y1, 0)) return xyz.TransformedShape(c, m)