def test_draw_basic_is_rectangle(self): """Test is_rectangle in basic.py.""" my_rectangle = basic.rectangle(0.5, 1.5, 2.1, 3.2) my_integer = 7 self.assertEqual(basic.is_rectangle(my_rectangle), True) self.assertEqual(basic.is_rectangle(my_integer), False)
def render_element_poly(self, qgeom: pd.Series): """ Render a closed polygon. Args: qgeom (pd.Series): GeoSeries of element properties. """ ansys_options = dict(transparency=0.0) qc_name = self.design._components[qgeom['component']].name qc_elt = get_clean_name(qgeom['name']) qc_shapely = qgeom.geometry # shapely geom qc_chip_z = parse_units(self.design.get_chip_z(qgeom.chip)) qc_fillet = round(qgeom.fillet, 7) name = f'{qc_elt}{QAnsysRenderer.NAME_DELIM}{qc_name}' points = parse_units(list( qc_shapely.exterior.coords)) # list of 2d point tuples points_3d = to_vec3D(points, qc_chip_z) if is_rectangle(qc_shapely): # Draw as rectangle self.logger.debug(f'Drawing a rectangle: {name}') x_min, y_min, x_max, y_max = qc_shapely.bounds poly_ansys = self.modeler.draw_rect_corner( *parse_units([[x_min, y_min, qc_chip_z], x_max - x_min, y_max - y_min, qc_chip_z]), **ansys_options) self.modeler.rename_obj(poly_ansys, name) else: # Draw general closed poly poly_ansys = self.modeler.draw_polyline(points_3d[:-1], closed=True, **ansys_options) # rename: handle bug if the name of the cut already exits and is used to make a cut poly_ansys = poly_ansys.rename(name) qc_fillet = round(qgeom.fillet, 7) if qc_fillet > 0: qc_fillet = parse_units(qc_fillet) idxs_to_fillet = good_fillet_idxs( points, qc_fillet, precision=self.design._template_options.PRECISION, isclosed=True) if idxs_to_fillet: self.modeler._fillet(qc_fillet, idxs_to_fillet, poly_ansys) # Subtract interior shapes, if any if len(qc_shapely.interiors) > 0: for i, x in enumerate(qc_shapely.interiors): interior_points_3d = to_vec3D(parse_units(list(x.coords)), qc_chip_z) inner_shape = self.modeler.draw_polyline( interior_points_3d[:-1], closed=True) self.modeler.subtract(name, [inner_shape]) # Input chip info into self.chip_subtract_dict if qgeom.chip not in self.chip_subtract_dict: self.chip_subtract_dict[qgeom.chip] = set() if qgeom['subtract']: self.chip_subtract_dict[qgeom.chip].add(name) # Potentially add to list of elements to metallize elif not qgeom['helper']: self.assign_perfE.append(name)
def test_draw_basic_is_rectangle(self): """Test is_rectangle in basic.py.""" my_rectangle = basic.rectangle(0.5, 1.5, 2.1, 3.2) self.assertTrue(basic.is_rectangle(my_rectangle)) self.assertFalse(basic.is_rectangle(7))