|
|
|
@ -134,8 +134,20 @@ def get_obj_max_foot(): |
|
|
|
obj.name = 'foot' |
|
|
|
obj.name = 'foot' |
|
|
|
print(f'最大脚底板面积: {max_area} cm²') |
|
|
|
print(f'最大脚底板面积: {max_area} cm²') |
|
|
|
if max_area < 5: |
|
|
|
if max_area < 5: |
|
|
|
print('最大脚底板面积太小,脚底模型可能有破损,异常退出') |
|
|
|
print('最大脚底板面积太小,脚底模型可能有破损,进行再次处理') |
|
|
|
sys.exit(1) |
|
|
|
numsTemp = 0 |
|
|
|
|
|
|
|
#最多执行三次 重新处理 |
|
|
|
|
|
|
|
while numsTemp < 3: |
|
|
|
|
|
|
|
#每次削的比例要加上去 |
|
|
|
|
|
|
|
tempArea = 0.2+numsTemp*0.2 |
|
|
|
|
|
|
|
max_area = check_and_deal_foot_area(tempArea) |
|
|
|
|
|
|
|
if max_area >= 5: |
|
|
|
|
|
|
|
break |
|
|
|
|
|
|
|
numsTemp += 1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if max_area < 5: |
|
|
|
|
|
|
|
print('最大脚底板面积处理多次还没有得到理想的面积,退出') |
|
|
|
|
|
|
|
sys.exit(1) |
|
|
|
# bpy.ops.wm.save_as_mainfile(filepath=os.path.join(workdir, f'{pid}_{order_id}', f'{pid}_{order_id}.blend')) |
|
|
|
# bpy.ops.wm.save_as_mainfile(filepath=os.path.join(workdir, f'{pid}_{order_id}', f'{pid}_{order_id}.blend')) |
|
|
|
active_object(bpy.data.objects['foot']) |
|
|
|
active_object(bpy.data.objects['foot']) |
|
|
|
foot_points = get_plane_points(bpy.data.objects['foot']) |
|
|
|
foot_points = get_plane_points(bpy.data.objects['foot']) |
|
|
|
@ -159,6 +171,29 @@ def get_obj_max_foot(): |
|
|
|
# plot(get_plane_points(bpy.data.objects['qr']), 'red') |
|
|
|
# plot(get_plane_points(bpy.data.objects['qr']), 'red') |
|
|
|
return foot_points |
|
|
|
return foot_points |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#检测到脚底板面积小于5cm²,重新调几次程序再次处理,如果还不行就退出 |
|
|
|
|
|
|
|
def check_and_deal_foot_area(tempArea): |
|
|
|
|
|
|
|
bpy.ops.mesh.primitive_plane_add(size=200, enter_editmode=False, align='WORLD', location=(0, 0, tempArea), scale=(1, 1, 1)) |
|
|
|
|
|
|
|
bpy.ops.object.modifier_add(type='BOOLEAN') |
|
|
|
|
|
|
|
bpy.context.object.modifiers["Boolean"].object = bpy.data.objects[pid_objname] |
|
|
|
|
|
|
|
bpy.context.object.modifiers["Boolean"].operation = 'INTERSECT' |
|
|
|
|
|
|
|
bpy.context.object.modifiers["Boolean"].solver = 'FAST' |
|
|
|
|
|
|
|
bpy.ops.object.modifier_apply(modifier="Boolean") |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
bpy.ops.mesh.separate(type='LOOSE') |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
max_area = 0 |
|
|
|
|
|
|
|
for obj in bpy.data.objects: |
|
|
|
|
|
|
|
if obj.type == 'MESH' and obj.name.startswith('Plane'): |
|
|
|
|
|
|
|
if len(obj.data.polygons) == 0: continue |
|
|
|
|
|
|
|
area = obj.data.polygons[0].area |
|
|
|
|
|
|
|
if area > max_area: |
|
|
|
|
|
|
|
max_area = area |
|
|
|
|
|
|
|
obj.name = 'foot' |
|
|
|
|
|
|
|
print("再次处理脚底板得到的面积:" + str(max_area) + "cm²") |
|
|
|
|
|
|
|
return max_area |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def euclidean_distance(p1, p2): |
|
|
|
def euclidean_distance(p1, p2): |
|
|
|
return ((p1[0] - p2[0]) ** 2 + (p1[1] - p2[1]) ** 2) ** 0.5 |
|
|
|
return ((p1[0] - p2[0]) ** 2 + (p1[1] - p2[1]) ** 2) ** 0.5 |
|
|
|
|
|
|
|
|
|
|
|
@ -610,6 +645,7 @@ if __name__ == '__main__': |
|
|
|
get_qr_position_url = 'https://mp.api.suwa3d.com/api/printOrder/getFootCodePositionData' |
|
|
|
get_qr_position_url = 'https://mp.api.suwa3d.com/api/printOrder/getFootCodePositionData' |
|
|
|
upload_qr_position_url = 'https://mp.api.suwa3d.com/api/printOrder/updateFootCodeStatus' |
|
|
|
upload_qr_position_url = 'https://mp.api.suwa3d.com/api/printOrder/updateFootCodeStatus' |
|
|
|
get_pid_by_printid_url = 'https://mp.api.suwa3d.com/api/printOrder/getPidByPrintId' |
|
|
|
get_pid_by_printid_url = 'https://mp.api.suwa3d.com/api/printOrder/getPidByPrintId' |
|
|
|
|
|
|
|
delete_form_foot_code_by_pid = 'https://mp.api.suwa3d.com/api/printOrder/deleteFormFootCodeByPid' |
|
|
|
# get_qr_position_url = 'http://172.31.1.254:8199/api/printOrder/getFootCodePositionData' |
|
|
|
# get_qr_position_url = 'http://172.31.1.254:8199/api/printOrder/getFootCodePositionData' |
|
|
|
# upload_qr_position_url = 'http://172.31.1.254:8199/api/printOrder/updateFootCodeStatus' |
|
|
|
# upload_qr_position_url = 'http://172.31.1.254:8199/api/printOrder/updateFootCodeStatus' |
|
|
|
# get_pid_by_printid_url = 'http://172.31.1.254:8199/api/printOrder/getPidByPrintId' |
|
|
|
# get_pid_by_printid_url = 'http://172.31.1.254:8199/api/printOrder/getPidByPrintId' |
|
|
|
|