Пример #1
0
def derived_loft():
    w1 = cm.wire([cm.circle(1.0)])
    w2 = cm.wire([cm.circle(2.0)])
    w2.translate((0.0, 0.0, 5.0))
    w3 = cm.wire([cm.circle(1.5)])
    w3.translate((0.0, 0.0, 10.0))
    s1 = cm.loft([w1, w2, w3])
    save_iso(s1, 'derived_loft.png')
Пример #2
0
def derived_loft():
    w1 = cm.wire([cm.circle(1.0)])
    w2 = cm.wire([cm.circle(2.0)])
    w2.translate((0.0, 0.0, 5.0))
    w3 = cm.wire([cm.circle(1.5)])
    w3.translate((0.0, 0.0, 10.0))
    s1 = cm.loft([w1, w2, w3])
    save_iso(s1, 'derived_loft.png')
Пример #3
0
 def test_loft(self):
     w1 = cm.wire([cm.circle(1.0)])
     w2 = cm.wire([cm.circle(2.0)])
     w2.translate((0.0, 0.0, 5.0))
     w3 = cm.wire([cm.circle(1.5)])
     w3.translate((0.0, 0.0, 10.0))
     s1 = cm.loft([w1, w2, w3])
     # empirical
     self.assert_(close(98.407, s1.volume(), 0.001))
Пример #4
0
 def test_loft(self):
     w1 = cm.wire([cm.circle(1.0)])
     w2 = cm.wire([cm.circle(2.0)])
     w2.translate((0.0, 0.0, 5.0))
     w3 = cm.wire([cm.circle(1.5)])
     w3.translate((0.0, 0.0, 10.0))
     s1 = cm.loft([w1, w2, w3])
     # empirical
     self.assert_(close(98.407, s1.volume(), 0.001))
Пример #5
0
 def query(self, widget=None):
     """
     Reports the properties of a selection
     Should do something other than print (popup?) ***
     """
     if self.selected is not None:
         if self.selection_type == 'vertex':
             s = _cm.vertex(self.selected)
             retval = 'center: ' + str(s.center()) + \
                 '\ntolerance: ' + str(s.tolerance())
         elif self.selection_type == 'edge':
             s = _cm.edge(self.selected)
             retval = 'center: ' + str(s.center()) + \
                 '\nlength: ' + str(s.length()) + \
                 '\ntolerance: ' + str(s.tolerance())
         elif self.selection_type == 'wire':
             s = _cm.wire(self.selected)
             retval = 'center: ' + str(s.center()) + \
                 '\nlength: ' + str(s.length())
         elif self.selection_type == 'face':
             s = _cm.face(self.selected)
             retval = 'center: ' + str(s.center()) + \
                 '\ntype: ' + str(s.type()) + \
                 '\narea: ' + str(s.area()) + \
                 '\ntolerance: ' + str(s.tolerance())
         else:
             retval = 'No properties for type ' + self.selection_type
         print(retval)
Пример #6
0
 def query(self, widget=None):
     """
     Reports the properties of a selection
     Should do something other than print (popup?) ***
     """
     if self.selected is not None:
         if self.selection_type == 'vertex':
             s = _cm.vertex(self.selected)
             retval = 'center: ' + str(s.center()) + \
                 '\ntolerance: ' + str(s.tolerance())
         elif self.selection_type == 'edge':
             s = _cm.edge(self.selected)
             retval = 'center: ' + str(s.center()) + \
                 '\nlength: ' + str(s.length()) + \
                 '\ntolerance: ' + str(s.tolerance())
         elif self.selection_type == 'wire':
             s = _cm.wire(self.selected)
             retval = 'center: ' + str(s.center()) + \
                 '\nlength: ' + str(s.length())
         elif self.selection_type == 'face':
             s = _cm.face(self.selected)
             retval = 'center: ' + str(s.center()) + \
                 '\ntype: ' + str(s.type()) + \
                 '\narea: ' + str(s.area()) + \
                 '\ntolerance: ' + str(s.tolerance())
         else:
             retval = 'No properties for type ' + self.selection_type
         print(retval)
Пример #7
0
def derived_pipe():
    profile = cm.ngon(2.0, 6)
    e1 = cm.arc(8.0, 0.0, math.pi / 2)
    e2 = cm.segment((0.0, 8.0, 0.0), (-8.0, 8.0, 0.0))
    spine = cm.wire([e1, e2])
    spine.translate((-8.0, 0.0, 0.0))
    spine.rotatex(math.pi / 2)
    s1 = cm.pipe(profile, spine)
    save_iso(s1, 'derived_pipe.png')
Пример #8
0
def wire():
    e1 = cm.arc(1.0, -math.pi / 2, math.pi / 2)
    e1.translate((1.0, 0.0, 0.0))
    e2 = cm.segment((1.0, 1.0, 0.0), (-1.0, 1.0, 0.0))
    e3 = cm.arc(1.0, math.pi / 2, 3 * math.pi / 2)
    e3.translate((-1.0, 0.0, 0.0))
    e4 = cm.segment((-1.0, -1.0, 0.0), (1.0, -1.0, 0.0))
    w1 = cm.wire([e1, e2, e3, e4])
    save_top(w1, 'wire.png', (0.0, 0.0, 0.0))
Пример #9
0
def derived_pipe():
    profile = cm.ngon(2.0, 6)
    e1 = cm.arc(8.0, 0.0, math.pi / 2)
    e2 = cm.segment((0.0, 8.0, 0.0), (-8.0, 8.0, 0.0))
    spine = cm.wire([e1, e2])
    spine.translate((-8.0, 0.0, 0.0))
    spine.rotatex(math.pi / 2)
    s1 = cm.pipe(profile, spine)
    save_iso(s1, 'derived_pipe.png')
Пример #10
0
 def test_filling(self):
     e1 = cm.spline([(0.0, 0.0, 0.0), (1.0, 0.2, 0.3), (1.5, 0.8, 1.0),
                     (0.8, 1.2, 0.2), (0.0, 1.0, 0.0)])
     e2 = cm.spline([(0.0, 0.0, 0.0), (-1.0, 0.2, 0.3), (-1.5, 0.8, 1.0),
                     (-0.8, 1.2, 0.2), (0.0, 1.0, 0.0)])
     w1 = cm.wire([e1, e2])
     f1 = cm.filling(w1)
     # empirical
     self.assert_(close(5.479, f1.area(), 0.01))  # Can vary
Пример #11
0
def derived_revol():
    e1 = cm.arc(1.0, -math.pi / 2, math.pi / 2)
    e1.translate((3.0, 0.0, 0.0))
    w1 = cm.polygon([(3.0, 1.0, 0.0), (2.0, 1.0, 0.0), (2.0, -1.0, 0.0),
                     (3.0, -1.0, 0.0)])
    f1 = cm.plane(cm.wire([e1, w1]))
    f1.rotatex(math.pi / 2)
    s1 = cm.revol(f1, (0.0, 0.0, 0.0), (0.0, 0.0, 1.0), 2 * math.pi)
    save_iso(s1, 'derived_revol.png')
Пример #12
0
def wire():
    e1 = cm.arc(1.0, -math.pi / 2, math.pi / 2)
    e1.translate((1.0, 0.0, 0.0))
    e2 = cm.segment((1.0, 1.0, 0.0), (-1.0, 1.0, 0.0))
    e3 = cm.arc(1.0, math.pi / 2, 3 * math.pi / 2)
    e3.translate((-1.0, 0.0, 0.0))
    e4 = cm.segment((-1.0, -1.0, 0.0), (1.0, -1.0, 0.0))
    w1 = cm.wire([e1, e2, e3, e4])
    save_top(w1, 'wire.png', (0.0, 0.0, 0.0))
Пример #13
0
 def test_pipe(self):
     profile = cm.ngon(2.0, 6)
     e1 = cm.arc(8.0, 0.0, math.pi / 2)
     e2 = cm.segment((0.0, 8.0, 0.0), (-8.0, 8.0, 0.0))
     spine = cm.wire([e1, e2])
     spine.translate((-8.0, 0.0, 0.0))
     spine.rotatex(math.pi / 2)
     s1 = cm.pipe(profile, spine)
     # empirical
     self.assert_(close(213.732, s1.volume(), 0.001))
Пример #14
0
 def test_pipe(self):
     profile = cm.ngon(2.0, 6)
     e1 = cm.arc(8.0, 0.0, math.pi / 2)
     e2 = cm.segment((0.0, 8.0, 0.0), (-8.0, 8.0, 0.0))
     spine = cm.wire([e1, e2])
     spine.translate((-8.0, 0.0, 0.0))
     spine.rotatex(math.pi / 2)
     s1 = cm.pipe(profile, spine)
     # empirical
     self.assert_(close(213.732, s1.volume(), 0.001))
Пример #15
0
def derived_revol():
    e1 = cm.arc(1.0, -math.pi / 2, math.pi / 2)
    e1.translate((3.0, 0.0, 0.0))
    w1 = cm.polygon([(3.0, 1.0, 0.0),
                       (2.0, 1.0, 0.0),
                       (2.0, -1.0, 0.0),
                       (3.0, -1.0, 0.0)])
    f1 = cm.plane(cm.wire([e1, w1]))
    f1.rotatex(math.pi / 2)
    s1 = cm.revol(f1, (0.0, 0.0, 0.0), (0.0, 0.0, 1.0), 2 * math.pi)
    save_iso(s1, 'derived_revol.png')
Пример #16
0
def face_filling():
    e1 = cm.spline([(0.0, 0.0, 0.0), (1.0, 0.2, 0.3), (1.5, 0.8, 1.0),
                    (0.8, 1.2, 0.2), (0.0, 1.0, 0.0)])
    e2 = cm.spline([(0.0, 0.0, 0.0), (-1.0, 0.2, 0.3), (-1.5, 0.8, 1.0),
                    (-0.8, 1.2, 0.2), (0.0, 1.0, 0.0)])
    w1 = cm.wire([e1, e2])
    f1 = cm.filling(w1)
    v.viewstandard(viewtype='iso')
    v.display(w1, color=(1.0, 0.0, 0.0))
    v.display(f1)
    v.fit()
    v.save('face_filling.png')
    v.clear()
Пример #17
0
 def test_filling(self):
     e1 = cm.spline([(0.0, 0.0, 0.0),
                     (1.0, 0.2, 0.3),
                     (1.5, 0.8, 1.0),
                     (0.8, 1.2, 0.2),
                     (0.0, 1.0, 0.0)])
     e2 = cm.spline([(0.0, 0.0, 0.0),
                     (-1.0, 0.2, 0.3),
                     (-1.5, 0.8, 1.0),
                     (-0.8, 1.2, 0.2),
                     (0.0, 1.0, 0.0)])
     w1 = cm.wire([e1, e2])
     f1 = cm.filling(w1)
     # empirical
     self.assert_(close(5.479, f1.area(), 0.01))  # Can vary
Пример #18
0
def face_filling():
    e1 = cm.spline([(0.0, 0.0, 0.0),
                      (1.0, 0.2, 0.3),
                      (1.5, 0.8, 1.0),
                      (0.8, 1.2, 0.2),
                      (0.0, 1.0, 0.0)])
    e2 = cm.spline([(0.0, 0.0, 0.0),
                      (-1.0, 0.2, 0.3),
                      (-1.5, 0.8, 1.0),
                      (-0.8, 1.2, 0.2),
                      (0.0, 1.0, 0.0)])
    w1 = cm.wire([e1, e2])
    f1 = cm.filling(w1)
    v.viewstandard(viewtype='iso')
    v.display(w1, color=(1.0, 0.0, 0.0))
    v.display(f1)
    v.fit()
    v.save('face_filling.png')
    v.clear()
Пример #19
0
 def _build_hashes(self, htype):
     if htype == 'face':
         ex_type = _TopAbs.TopAbs_FACE
     elif htype == 'wire':
         ex_type = _TopAbs.TopAbs_WIRE
     elif htype == 'edge':
         ex_type = _TopAbs.TopAbs_EDGE
     elif htype == 'vertex':
         ex_type = _TopAbs.TopAbs_VERTEX
     else:
         print('Error: Unknown hash type', htype)
     if (self.selected_shape.ShapeType == _TopAbs.TopAbs_WIRE and
         htype == 'edge'):
         ex = _BRepTools_WireExplorer(selected_shape)  # Ordered this way
     else:
         ex = _TopExp_Explorer(self.selected_shape, ex_type)
     self.hashes = []
     self.positions = []
     while ex.More():
         s1 = ex.Current()
         # Calculate hash
         s1_hash = s1.__hash__()
         if s1_hash not in self.hashes:
             self.hashes.append(s1_hash)
             # Calculate position
             if htype == 'face':
                 f = _cm.face(s1)
                 c = (' type ' + f.type(), f.center())
             elif htype == 'wire':
                 w = _cm.wire(s1)
                 c = ('', w.center())
             elif htype == 'edge':
                 e = _cm.edge(s1)
                 c = ('', e.center())
             elif htype == 'vertex':
                 c = ('', _cm.vertex(s1).center())
             self.positions.append(c)
         ex.Next()
Пример #20
0
 def _build_hashes(self, htype):
     if htype == 'face':
         ex_type = _TopAbs.TopAbs_FACE
     elif htype == 'wire':
         ex_type = _TopAbs.TopAbs_WIRE
     elif htype == 'edge':
         ex_type = _TopAbs.TopAbs_EDGE
     elif htype == 'vertex':
         ex_type = _TopAbs.TopAbs_VERTEX
     else:
         print('Error: Unknown hash type', htype)
     if (self.selected_shape.ShapeType == _TopAbs.TopAbs_WIRE and
         htype == 'edge'):
         ex = _BRepTools_WireExplorer(selected_shape)  # Ordered this way
     else:
         ex = _TopExp_Explorer(self.selected_shape, ex_type)
     self.hashes = []
     self.positions = []
     while ex.More():
         s1 = ex.Current()
         # Calculate hash
         s1_hash = s1.__hash__()
         if s1_hash not in self.hashes:
             self.hashes.append(s1_hash)
             # Calculate position
             if htype == 'face':
                 f = _cm.face(s1)
                 c = (' type ' + f.type(), f.center())
             elif htype == 'wire':
                 w = _cm.wire(s1)
                 c = ('', w.center())
             elif htype == 'edge':
                 e = _cm.edge(s1)
                 c = ('', e.center())
             elif htype == 'vertex':
                 c = ('', _cm.vertex(s1).center())
             self.positions.append(c)
         ex.Next()