本文整理汇总了Python中OCC.Utils.Topology.Topo.wires方法的典型用法代码示例。如果您正苦于以下问题:Python Topo.wires方法的具体用法?Python Topo.wires怎么用?Python Topo.wires使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类OCC.Utils.Topology.Topo
的用法示例。
在下文中一共展示了Topo.wires方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: makeOffsets
# 需要导入模块: from OCC.Utils.Topology import Topo [as 别名]
# 或者: from OCC.Utils.Topology.Topo import wires [as 别名]
def makeOffsets(wire,d=True):
numOffsets = 0;
if d: display.DisplayColoredShape(startWire,'YELLOW');
STEP = 0.5;
for offset in Util.frange6(0.5,4.0,STEP):
#print "offsetting by %0.3f" % offset
o = OCCUtil.offsetWire(startWire,offset*(-1.0));
numOffsets+=1;
if d: display.DisplayColoredShape(o, 'RED');
o2 = OCCUtil.offsetWire(startWire,offset*(-1.0) + (STEP/2.0) );
numOffsets+=1;
#create a naive centerline by setting in( which could conflict with others )
#if d: display.DisplayColoredShape(o2,'GREEN');
#now offset back out to create centerline. if the result is a compound, then we must offset each member wire
if o.ShapeType() == TopAbs.TopAbs_COMPOUND:
t = Topo(o);
for w in t.wires():
w2 = OCCUtil.offsetWire(w,STEP*(0.5));
numOffsets+=1;
if d: display.DisplayColoredShape(w2, 'BLUE');
else: #wire
o2 = OCCUtil.offsetWire(OCCUtil.cast(o),STEP*(0.5));
numOffsets+=1;
if d: display.DisplayColoredShape(o2, 'WHITE');
return numOffsets;
示例2: offsetOnce
# 需要导入模块: from OCC.Utils.Topology import Topo [as 别名]
# 或者: from OCC.Utils.Topology.Topo import wires [as 别名]
def offsetOnce(self,distance):
bo = BRepOffsetAPI.BRepOffsetAPI_MakeOffset();
map(bo.AddWire, self.lastWires);
print "%d wires to offset at step 1, distance = %0.3f" % ( len(self.lastWires),distance);
bo.Perform(distance,0.0);
result1 = Topo(bo.Shape());
#now offset back outwards
bo2 = BRepOffsetAPI.BRepOffsetAPI_MakeOffset();
for w in result1.wires():
bo2.AddWire(w);
print "Offsetting %0.3f" % ( (-0.5)*distance);
bo2.Perform((-0.5)*distance, 0.0);
result2 = Topo(bo2.Shape());
returnList= [];
#compound result can be a compound of edges and/or wires. weird weird
for c in OCCUtil.childShapes(bo2.Shape() ):
#display.DisplayColoredShape(c,'BLUE')
if c.ShapeType() == TopAbs.TopAbs_WIRE:
returnList.append(c); #these are actually the wires we want to keep
self.otherWires.append(c);
elif c.ShapeType() == TopAbs.TopAbs_EDGE:
w = OCCUtil.wireFromEdges([c])
returnList.append(w);
self.otherWires.append(w);
else:
print "Warning: compound resulting from offset i am confused about-- not an edge or a wire."
if len(returnList) == 0:
return returnList; #do nothing further if the offset computed no curves
else:
print "2nd step yielded %d wires" % len(returnList)
#for each original edge, compute its descendant edges
#self.edgeMap will contain entries with the original edges, pointing to the generated
#edges and the corresponding wire:
# e1 --> [ (e2, w2 ), (e3 , w3 ) ];
for w in self.lastWires:
originalWire = Topo(w);
for oe in originalWire.edges():
self.edgeMap[oe.__hash__()] = [];
#find generated values from first transformation
generatedStep1 = OCCUtil.listFromTopToolsListOfShape(bo.Generated(oe));
for ne in generatedStep1:
#find edges generated from that original edge
generatedStep2 = OCCUtil.listFromTopToolsListOfShape(bo2.Generated(ne));
for ge in generatedStep2:
#get wire this belongs to this returns a list but how could there ever be more than one?
gwires = []
for g in result2.wires_from_edge(ge):
gwires.append(g);
self.edgeMap[oe.__hash__()].append ( (ge,gwires[0] ));
self.lastWires = returnList;
return returnList;
示例3: display
# 需要导入模块: from OCC.Utils.Topology import Topo [as 别名]
# 或者: from OCC.Utils.Topology.Topo import wires [as 别名]
def display(topo):
# http://www.opencascade.org/org/forum/thread_18374/
# http://adl.serveftp.org/lab/opencascade/pdf/visu.pdf
# shape = displays[curr_tab].DisplayShape(topo, update=False).GetObject()
# shape.SetDisplayMode(0)
# displays[curr_tab].DisplayColoredShape(topo, 'BLUE', False)
mat = Graphic3d_MaterialAspect(Graphic3d_NOM_SILVER)
displays[curr_tab].DisplayShape(topo, material=mat, update=False)
t = Topo(topo)
wires = t.wires()
for w in wires:
# print w
# displays[curr_tab].DisplayColoredShape(w, 'BLACK', False)
edges.append(w)
示例4: TestTopology
# 需要导入模块: from OCC.Utils.Topology import Topo [as 别名]
# 或者: from OCC.Utils.Topology.Topo import wires [as 别名]
class TestTopology(unittest.TestCase):
def setUp(self):
self.topo = Topo(BRepPrimAPI_MakeBox(10., 10., 10).Shape())
def test_nested_iteration(self):
'''check nested looping'''
for f in self.topo.faces():
for e in self.topo.edges():
self.assert_(isinstance(f, TopoDS_Face))
self.assert_(isinstance(e, TopoDS_Edge))
def test_kept_reference(self):
'''did we keep a reference after looping several time through a list
of topological entities?'''
_tmp = []
_faces = [i for i in self.topo.faces()]
for f in _faces:
_tmp.append(0 == f.IsNull())
for f in _faces:
_tmp.append(0 == f.IsNull())
self.assert_(all(_tmp))
def test_number_of_topological_entities(self):
self.assert_(self.topo.number_of_vertices() == 8)
self.assert_(self.topo.number_of_edges() == 12)
self.assert_(self.topo.number_of_wires() == 6)
self.assert_(self.topo.number_of_faces() == 6)
self.assert_(self.topo.number_of_solids() == 1)
self.assert_(self.topo.number_of_comp_solids() == 0)
self.assert_(self.topo.number_of_compounds() == 0)
def test_edge_face(self):
edg = self.topo.edges().next()
face = self.topo.faces().next()
faces_from_edge = [i for i in self.topo.faces_from_edge(edg)]
self.assert_(len(faces_from_edge) == self.topo.number_of_faces_from_edge(edg))
edges_from_face = [i for i in self.topo.edges_from_face(face)]
self.assert_(len(edges_from_face) == self.topo.number_of_edges_from_face(face))
def test_edge_wire(self):
edg = self.topo.edges().next()
wire = self.topo.wires().next()
wires_from_edge = [i for i in self.topo.wires_from_edge(edg)]
self.assert_(len(wires_from_edge) == self.topo.number_of_wires_from_edge(edg))
edges_from_wire = [i for i in self.topo.edges_from_wire(wire)]
self.assert_(len(edges_from_wire) == self.topo.number_of_edges_from_wire(wire))
def test_vertex_edge(self):
vert = self.topo.vertices().next()
verts_from_edge = [i for i in self.topo.vertices_from_edge(vert)]
self.assert_(len(verts_from_edge) == self.topo.number_of_vertices_from_edge(vert))
edges_from_vert = [ i for i in self.topo.edges_from_vertex(vert)]
self.assert_(len(edges_from_vert) == self.topo.number_of_edges_from_vertex(vert))
def test_vertex_face(self):
vert = self.topo.vertices().next()
face = self.topo.faces().next()
faces_from_vertex = [i for i in self.topo.faces_from_vertex(vert)]
self.assert_(len(faces_from_vertex) == self.topo.number_of_faces_from_vertex(vert))
verts_from_face = [i for i in self.topo.vertices_from_face(face)]
self.assert_(len(verts_from_face) == self.topo.number_of_vertices_from_face(face))
def test_face_solid(self):
face = self.topo.faces().next()
solid = self.topo.solids().next()
faces_from_solid = [i for i in self.topo.faces_from_solids(solid)]
self.assert_(len(faces_from_solid) == self.topo.number_of_faces_from_solids(solid))
solids_from_face = [i for i in self.topo.solids_from_face(face)]
self.assert_(len(solids_from_face) == self.topo.number_of_solids_from_face(face))
def test_wire_face(self):
wire = self.topo.wires().next()
face = self.topo.faces().next()
faces_from_wire = [i for i in self.topo.faces_from_wire(wire)]
self.assert_(len(faces_from_wire) == self.topo.number_of_faces_from_wires(wire))
wires_from_face = [i for i in self.topo.wires_from_face(face)]
self.assert_(len(wires_from_face) == self.topo.number_of_wires_from_face(face))
def test_edges_out_of_scope(self):
face = self.topo.faces().next()
_edges = []
for edg in Topo(face).edges():
_edges.append(edg)
for edg in _edges:
self.assert_(edg.IsNull() == False)
def test_wires_out_of_scope(self):
face = self.topo.wires().next()
_edges = []
for edg in WireExplorer(face).ordered_edges():
_edges.append(edg)
for edg in _edges:
self.assert_(edg.IsNull() == False)