Changeset 8802:f37d84711799 in orange
- Timestamp:
- 08/26/11 13:54:47 (21 months ago)
- Branch:
- default
- Convert:
- 2aaa596bb19861e6afa268743bf1d4674fe7afcc
- Location:
- orange/OrangeWidgets/plot/primitives
- Files:
-
- 11 added
- 1 deleted
- 6 edited
-
cross_2d_edges.obj (added)
-
cube_edges.obj (added)
-
diamond.obj (modified) (previous)
-
diamond_2d.obj (deleted)
-
diamond_edges.obj (modified) (previous)
-
dpyramid_edges.obj (added)
-
lpyramid_edges.obj (added)
-
lwedge_2d_edges.obj (added)
-
lwedge_edges.obj (modified) (previous)
-
octahedron.obj (added)
-
octahedron_edges.obj (added)
-
owprimitives3d.py (modified) (7 diffs)
-
pyramid_edges.obj (added)
-
sphere_edges.obj (added)
-
wedge_2d_edges.obj (added)
-
wedge_edges.obj (modified) (previous)
-
xcross_2d_edges.obj (added)
-
xcross_edges.obj (modified) (previous)
Legend:
- Unmodified
- Added
- Removed
-
orange/OrangeWidgets/plot/primitives/owprimitives3d.py
r8734 r8802 1 1 import os 2 2 import re 3 from plot.owplot3d import Symbol 3 from plot.owplot3d import Symbol, enum 4 4 import numpy 5 6 GeometryType = enum('SOLID_3D', 'SOLID_2D', 'EDGE_3D', 'EDGE_2D') 5 7 6 8 def normalize(vec): … … 29 31 Symbol.CIRCLE: 'sphere.obj', 30 32 Symbol.LTRIANGLE: 'lpyramid.obj', 31 Symbol.DIAMOND: ' diamond.obj',33 Symbol.DIAMOND: 'octahedron.obj', 32 34 Symbol.WEDGE: 'wedge.obj', 33 35 Symbol.LWEDGE: 'lwedge.obj', … … 42 44 Symbol.CIRCLE: 'circle.obj', 43 45 Symbol.LTRIANGLE: 'ltriangle.obj', 44 Symbol.DIAMOND: 'diamond _2d.obj',46 Symbol.DIAMOND: 'diamond.obj', 45 47 Symbol.WEDGE: 'wedge_2d.obj', 46 48 Symbol.LWEDGE: 'lwedge_2d.obj', … … 50 52 51 53 symbol_edge_map = { 54 Symbol.RECT: 'cube_edges.obj', 55 Symbol.TRIANGLE: 'pyramid_edges.obj', 56 Symbol.DTRIANGLE: 'dpyramid_edges.obj', 57 Symbol.CIRCLE: 'sphere_edges.obj', 58 Symbol.LTRIANGLE: 'lpyramid_edges.obj', 59 Symbol.DIAMOND: 'octahedron_edges.obj', 60 Symbol.WEDGE: 'wedge_edges.obj', 61 Symbol.LWEDGE: 'lwedge_edges.obj', 62 Symbol.CROSS: 'cross_edges.obj', 63 Symbol.XCROSS: 'xcross_edges.obj' 64 } 65 66 symbol_edge_map_2d = { 52 67 Symbol.RECT: 'rect_edges.obj', 53 68 Symbol.TRIANGLE: 'triangle_edges.obj', … … 56 71 Symbol.LTRIANGLE: 'ltriangle_edges.obj', 57 72 Symbol.DIAMOND: 'diamond_edges.obj', 58 Symbol.WEDGE: 'wedge_ edges.obj',59 Symbol.LWEDGE: 'lwedge_ edges.obj',60 Symbol.CROSS: 'cross_ edges.obj',61 Symbol.XCROSS: 'xcross_ edges.obj'73 Symbol.WEDGE: 'wedge_2d_edges.obj', 74 Symbol.LWEDGE: 'lwedge_2d_edges.obj', 75 Symbol.CROSS: 'cross_2d_edges.obj', 76 Symbol.XCROSS: 'xcross_2d_edges.obj' 62 77 } 63 78 64 _symbol_data = {} # Cache: contains triangles + theirnormals for each needed symbol.79 _symbol_data = {} # Cache: contains triangles + vertices normals for each needed symbol. 65 80 _symbol_data_2d = {} 66 81 _symbol_edges = {} 82 _symbol_edges_2d = {} 67 83 68 84 def parse_obj(file_name): … … 96 112 return triangles 97 113 98 def get_symbol_ data(symbol):114 def get_symbol_geometry(symbol, geometry_type): 99 115 if not Symbol.is_valid(symbol): 116 print('Invalid symbol!') 100 117 return [] 101 if symbol in _symbol_data: 102 return _symbol_data[symbol] 103 file_name = symbol_map[symbol] 118 119 if geometry_type == GeometryType.SOLID_3D: 120 cache = _symbol_data 121 name_map = symbol_map 122 elif geometry_type == GeometryType.SOLID_2D: 123 cache = _symbol_data_2d 124 name_map = symbol_map_2d 125 elif geometry_type == GeometryType.EDGE_3D: 126 cache = _symbol_edges 127 name_map = symbol_edge_map 128 elif geometry_type == GeometryType.EDGE_2D: 129 cache = _symbol_edges_2d 130 name_map = symbol_edge_map_2d 131 else: 132 print('Wrong geometry type!') 133 return [] 134 135 if symbol in cache: 136 return cache[symbol] 137 138 file_name = name_map[symbol] 104 139 file_name = os.path.join(os.path.dirname(__file__), file_name) 105 triangles = parse_obj(file_name) 106 _symbol_data[symbol] = triangles 107 return triangles 140 if geometry_type in [GeometryType.SOLID_3D, GeometryType.SOLID_2D]: 141 triangles = parse_obj(file_name) 142 cache[symbol] = triangles 143 return triangles 108 144 109 def get_2d_symbol_data(symbol):110 if not Symbol.is_valid(symbol):111 return []112 if symbol in _symbol_data_2d:113 return _symbol_data_2d[symbol]114 file_name = symbol_map_2d[symbol]115 file_name = os.path.join(os.path.dirname(__file__), file_name)116 triangles = parse_obj(file_name)117 _symbol_data_2d[symbol] = triangles118 return triangles119 120 def get_2d_symbol_edges(symbol):121 if not Symbol.is_valid(symbol):122 return []123 if symbol in _symbol_edges:124 return _symbol_edges[symbol]125 file_name = symbol_edge_map[symbol]126 file_name = os.path.join(os.path.dirname(__file__), file_name)127 145 lines = open(file_name).readlines() 128 146 vertices_lines = filter(lambda line: line.startswith('v'), lines) … … 135 153 v1 = vertices[i1-1] 136 154 edges.append([v0, v1]) 137 _symbol_edges[symbol] = edges155 cache[symbol] = edges 138 156 return edges
Note: See TracChangeset
for help on using the changeset viewer.
