colorize the case and the phone separately when exporting images

This commit is contained in:
2024-02-07 22:49:08 +00:00
parent 1ef190d932
commit 5e8550f5f5

View File

@@ -44,6 +44,17 @@ battery_harness_shell_thickness = 0.8
battery_harness_margin_bottom = 21.0
battery_harness_margin_top = 2.0
dark_gray = cq.Color(95/256, 87/256, 79/256)
mid_gray = cq.Color(128/256, 118/256, 108/256)
mid_light_gray = cq.Color(160/256, 150/256, 140/256)
light_gray = cq.Color(192/256, 182/256, 172/256)
yellow = cq.Color(255/256, 236/256, 39/256)
orange = cq.Color(255/256, 192/256, 39/256)
yellow_orange = cq.Color(255/256, 208/256, 49/256)
body_color = mid_light_gray
case_color = yellow_orange
def _thicken(solid, thickness: float=1, combine=False, **kwargs):
"""
dilate the solid in all dimensions by `thickness` and then subtract the original.
@@ -335,7 +346,7 @@ def orient_for_printing(case):
"""
return case.rotate((0, 0, 0), (1000, 0, 0), angleDegrees=180)
def case(phone, battery=None, render_phone: bool=False):
def case(phone, battery=None, render_phone: bool=False, as_assy: bool=True):
body = phone.solids(tag="body")
power = phone.solids(tag="power")
volume = phone.solids(tag="volume")
@@ -368,8 +379,15 @@ def case(phone, battery=None, render_phone: bool=False):
# TODO: compress the case along the Z axis, to give a snugger fit (0.8mm is a good compression)
if render_phone:
case = case.union(phone)
case = orient_for_printing(case)
phone = orient_for_printing(phone)
if as_assy:
case = cq.Assembly(case, color=case_color)
if render_phone:
case = case.add(phone, color=body_color)
else:
if render_phone:
case = case.union(phone)
return case