| 39 | self.z_p = (self.z - bbox_min[2]) / (bbox_max[2] - bbox_min[2]); |
| 40 | |
| 41 | def eval_formula(self, formula): |
| 42 | self.formula = formula; |
| 43 | field_names = self.field_parser.findall(formula); |
| 44 | for name in field_names: |
| 45 | field_name = name[1:-1]; |
| 46 | if hasattr(self, field_name): |
| 47 | escaped_name = field_name; |
| 48 | else: |
| 49 | escaped_name = self.load_field(field_name); |
| 50 | self.formula = self.formula.replace(name, |
| 51 | "self.{}".format(escaped_name)); |
| 52 | |
| 53 | st = parser.expr(self.formula); |
| 54 | code = st.compile("file.py"); |
| 55 | return eval(code); |
| 56 | |
| 57 | def load_field(self, name): |
| 58 | if hasattr(self, name): return name; |