def open_file(self, file_name): self.cur_filename = file_name self.app_manager.set_model(cmds.open_model(file_name)) self.is_changed = True self.create_lens_table() cmds.create_live_layout_view(self.app_manager.model, gui_parent=self) self.add_ipython_subwindow() self.refresh_app_ui()
def create_from_file(filename, **kwargs): opm = cmds.open_model(filename) sm = opm.seq_model osp = opm.optical_spec em = opm.ele_model if 'power' in kwargs: desired_power = kwargs['power'] cur_power = osp.parax_data.fod.power scale_factor = desired_power / cur_power sm.apply_scale_factor(scale_factor) em.elements_from_sequence(sm) seq = [list(node) for node in sm.path(start=1, stop=-1)] ele = [em.gap_dict[g] for g in sm.gaps[1:-1]] return seq, ele
def create_from_file(filename, **kwargs): opm = cmds.open_model(filename) sm = opm.seq_model osp = opm.optical_spec if 'power' in kwargs: desired_power = kwargs['power'] cur_power = osp.parax_data.fod.power scale_factor = desired_power/cur_power sm.apply_scale_factor(scale_factor) seq = [list(node) for node in sm.path(start=1, stop=-1)] e_nodes = opm.part_tree.nodes_with_tag(tag='#element') ele = [node.id for node in e_nodes] root = Node('file', id=None, tag='#group', children=e_nodes) return seq, ele, root
def setup(filename): root_pth = Path(ro.__file__).resolve().parent opm = open_model(root_pth / filename) sm = opm.seq_model osp = opm.optical_spec fld, wvl, foc = osp.lookup_fld_wvl_focus(1) vig_pupil = fld.apply_vignetting([0.5, 0.5]) fod = osp.parax_data.fod eprad = fod.enp_radius pt1 = np.array([ eprad * vig_pupil[0], eprad * vig_pupil[1], fod.obj_dist + fod.enp_dist ]) pt0 = osp.obj_coords(fld) dir0 = normalize(pt1 - pt0) return (sm, pt0, dir0, wvl)
def create_from_file(filename, **kwargs): opm = cmds.open_model(filename) sm = opm['seq_model'] osp = opm['optical_spec'] em = opm['ele_model'] pt = opm['part_tree'] if len(pt.nodes_with_tag(tag='#element')) == 0: parttree.elements_from_sequence(em, sm, pt) if 'power' in kwargs: desired_power = kwargs['power'] cur_power = osp.parax_data.fod.power # scale_factor is linear, power is 1/linear # so use reciprocal of power to compute scale_factor scale_factor = cur_power / desired_power sm.apply_scale_factor(scale_factor) seq = [list(node) for node in sm.path(start=1, stop=-1)] seq[-1][2] = None sys_nodes = pt.nodes_with_tag(tag='#element#airgap', not_tag='#object#image') eles = [node.id for node in sys_nodes] root = Node('file', id=None, tag='#group', children=sys_nodes) return seq, eles, root
def test_Sasian_Triplet_fail(self): root_pth = Path(ro.__file__).resolve().parent with self.assertRaises(ImportError): open_model(root_pth / 'gui/tests/Sasian Triplet old.roa', mapping={})
def test_cell_phone_fail(self): warnings.filterwarnings("ignore", category=RuntimeWarning) root_pth = Path(ro.__file__).resolve().parent with self.assertRaises(ImportError): open_model(root_pth / 'gui/tests/cell_phone_camera_old.roa', mapping={})
def test_Sasian_Triplet(self): root_pth = Path(ro.__file__).resolve().parent opm = open_model(root_pth / 'gui/tests/Sasian Triplet old.roa') assert isinstance(opm, OpticalModel)
def test_cell_phone(self): warnings.filterwarnings("ignore", category=RuntimeWarning) root_pth = Path(ro.__file__).resolve().parent opm = open_model(root_pth / 'gui/tests/cell_phone_camera_old.roa') assert isinstance(opm, OpticalModel)