Files
wheel/scripts/compose_kfl_compact80_concept.py

32 lines
2.2 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
from PIL import Image, ImageChops, ImageDraw, ImageFont
from pathlib import Path
o=Path(r'C:\projects\wheel\models\kfl_compact80_concept')
font=r'C:\Windows\Fonts\msyh.ttc'
t=ImageFont.truetype(font,38); n=ImageFont.truetype(font,24); s=ImageFont.truetype(font,21)
im=Image.new('RGB',(1920,1300),'white');d=ImageDraw.Draw(im)
d.text((40,18),'紧凑轴承板与单根横梁 · 3D 概念装配',font=t,fill='#1a304d')
d.text((40,80),'两块 76 × 80 × 8 mm 铝板;一根横向 2020 加固两根纵梁',font=n,fill='#52657b')
d.rounded_rectangle((40,122,1880,176),radius=8,fill='#fff0eb')
d.text((55,133),'示意方案:加长连接片、轴承开孔、型材和五金均需实物核对,不是 CNC 定稿',font=n,fill='#9b2b22')
def prepare(file,w,h,rotate=0):
v=Image.open(o/file).convert('RGB')
if rotate:v=v.rotate(rotate,expand=True)
mask=ImageChops.difference(v,Image.new('RGB',v.size,'white')).convert('L').point(lambda x:255 if x>12 else 0)
bounds=mask.getbbox()
if bounds:v=v.crop(bounds)
v.thumbnail((w,h));return v
d.text((40,195),'完整总装(电机侧在左)',font=n,fill='#243a55')
d.text((1000,195),'两块板、连接片及一根横梁',font=n,fill='#243a55')
left=prepare('side.png',870,560,90);right=prepare('frame.png',870,560)
im.paste(left,(45+(870-left.width)//2,230+(560-left.height)//2));im.paste(right,(1000+(870-right.width)//2,230+(560-right.height)//2))
d.line((40,810,1880,810),fill='#d8e0e9',width=2)
rows=[
'灰色是 2020 型材及两块铝板;浅黄色为金属连接片;橙色为角码;绿色是开关包络。',
'单根横梁连接两根纵梁以加固框架;两块铝板通过四组角码与连接片分别固定在纵梁内侧。',
'铝板小于 80 × 80 mm;每侧连接片示意 18 × 40 × 3 mm,并使用 3 mm 金属垫柱。',
'两侧纵梁内侧与板边的名义间隙约 2.62 mm;螺栓、垫圈和板槽提供对中调整。',
'轴承孔 Ø39 和凸起 Ø38 为示意包络;开关、接线和轴承顶丝位置未完整建模。',
'横梁、连接件与旧2020的真实槽型、调角连接及强度需核对;型材长度仅为示意。']
for i,x in enumerate(rows):d.text((42,830+i*48),x,font=s,fill='#283f5c' if i<4 else '#8c392c')
im.save(o/'76x80_单横梁_3D示意.png')