Use the known macro statement to render. Fix thermal not setting rotation
This commit is contained in:
parent
49dadd46ee
commit
3fc296918e
2 changed files with 33 additions and 22 deletions
|
|
@ -715,8 +715,9 @@ class AMThermalPrimitive(AMPrimitive):
|
|||
outer_diameter = self.outer_diameter,
|
||||
inner_diameter = self.inner_diameter,
|
||||
gap = self.gap,
|
||||
rotation = self.rotation
|
||||
)
|
||||
fmt = "{code},{position},{outer_diameter},{inner_diameter},{gap}*"
|
||||
fmt = "{code},{position},{outer_diameter},{inner_diameter},{gap},{rotation}*"
|
||||
return fmt.format(**data)
|
||||
|
||||
def _approximate_arc_cw(self, start_angle, end_angle, radius, center):
|
||||
|
|
|
|||
|
|
@ -13,28 +13,38 @@ class AMGroupContext(object):
|
|||
|
||||
def render(self, amgroup, name):
|
||||
|
||||
# Clone ourselves, then offset by the psotion so that
|
||||
# our render doesn't have to consider offset. Just makes things simpler
|
||||
nooffset_group = deepcopy(amgroup)
|
||||
nooffset_group.position = (0, 0)
|
||||
if amgroup.stmt:
|
||||
# We know the statement it was generated from, so use that to create the AMParamStmt
|
||||
# It will give a much better result
|
||||
|
||||
stmt = deepcopy(amgroup.stmt)
|
||||
stmt.name = name
|
||||
|
||||
return stmt
|
||||
|
||||
# Now draw the shapes
|
||||
for primitive in nooffset_group.primitives:
|
||||
if isinstance(primitive, Outline):
|
||||
self._render_outline(primitive)
|
||||
elif isinstance(primitive, Circle):
|
||||
self._render_circle(primitive)
|
||||
elif isinstance(primitive, Rectangle):
|
||||
self._render_rectangle(primitive)
|
||||
elif isinstance(primitive, Line):
|
||||
self._render_line(primitive)
|
||||
elif isinstance(primitive, Polygon):
|
||||
self._render_polygon(primitive)
|
||||
else:
|
||||
raise ValueError('amgroup')
|
||||
|
||||
statement = AMParamStmt('AM', name, self._statements_to_string())
|
||||
return statement
|
||||
else:
|
||||
# Clone ourselves, then offset by the psotion so that
|
||||
# our render doesn't have to consider offset. Just makes things simpler
|
||||
nooffset_group = deepcopy(amgroup)
|
||||
nooffset_group.position = (0, 0)
|
||||
|
||||
# Now draw the shapes
|
||||
for primitive in nooffset_group.primitives:
|
||||
if isinstance(primitive, Outline):
|
||||
self._render_outline(primitive)
|
||||
elif isinstance(primitive, Circle):
|
||||
self._render_circle(primitive)
|
||||
elif isinstance(primitive, Rectangle):
|
||||
self._render_rectangle(primitive)
|
||||
elif isinstance(primitive, Line):
|
||||
self._render_line(primitive)
|
||||
elif isinstance(primitive, Polygon):
|
||||
self._render_polygon(primitive)
|
||||
else:
|
||||
raise ValueError('amgroup')
|
||||
|
||||
statement = AMParamStmt('AM', name, self._statements_to_string())
|
||||
return statement
|
||||
|
||||
def _statements_to_string(self):
|
||||
macro = ''
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue