feat: finish BME prototype improvement

This commit is contained in:
yyc12345 2025-01-20 10:07:45 +08:00
parent cc74a2ca8b
commit b96550ca5c
6 changed files with 162 additions and 82 deletions

View File

@ -243,7 +243,7 @@ class BBP_OT_add_bme_struct(bpy.types.Operator):
op_cfgs_visitor: UTIL_functions.CollectionVisitor[BBP_PG_bme_adder_cfgs] op_cfgs_visitor: UTIL_functions.CollectionVisitor[BBP_PG_bme_adder_cfgs]
op_cfgs_visitor = UTIL_functions.CollectionVisitor(self.bme_struct_cfgs) op_cfgs_visitor = UTIL_functions.CollectionVisitor(self.bme_struct_cfgs)
# visit cfgs cache list to show cfg # visit cfgs cache list to show cfg
layout.label(text="Prototype Configurations:", text_ctxt='BBP_OT_add_bme_struct/draw') layout.label(text="Prototype Configurations", text_ctxt='BBP_OT_add_bme_struct/draw')
for (cfg, cfg_index) in self.bme_struct_cfg_index_cache: for (cfg, cfg_index) in self.bme_struct_cfg_index_cache:
# create box for cfgs # create box for cfgs
box_layout: bpy.types.UILayout = layout.box() box_layout: bpy.types.UILayout = layout.box()

View File

@ -25,6 +25,8 @@
"identifier": "cv_triangle_side", "identifier": "cv_triangle_side",
"skip": "False", "skip": "False",
"params": { "params": {
"edge_length": "5",
"tip_offset": "2.5",
"height": "height", "height": "height",
"face": "(face[0], False, False, False, face[3], None)", "face": "(face[0], False, False, False, face[3], None)",
"is_sink": "is_sink" "is_sink": "is_sink"
@ -35,6 +37,8 @@
"identifier": "cv_triangle_side", "identifier": "cv_triangle_side",
"skip": "False", "skip": "False",
"params": { "params": {
"edge_length": "5",
"tip_offset": "2.5",
"height": "height", "height": "height",
"face": "(face[0], False, False, False, face[5], None)", "face": "(face[0], False, False, False, face[5], None)",
"is_sink": "is_sink" "is_sink": "is_sink"
@ -45,6 +49,8 @@
"identifier": "cv_triangle_side", "identifier": "cv_triangle_side",
"skip": "False", "skip": "False",
"params": { "params": {
"edge_length": "5",
"tip_offset": "2.5",
"height": "height", "height": "height",
"face": "(face[0], False, False, False, face[2], None)", "face": "(face[0], False, False, False, face[2], None)",
"is_sink": "is_sink" "is_sink": "is_sink"
@ -55,6 +61,8 @@
"identifier": "cv_triangle_side", "identifier": "cv_triangle_side",
"skip": "False", "skip": "False",
"params": { "params": {
"edge_length": "5",
"tip_offset": "2.5",
"height": "height", "height": "height",
"face": "(face[0], False, False, False, face[4], None)", "face": "(face[0], False, False, False, face[4], None)",
"is_sink": "is_sink" "is_sink": "is_sink"

View File

@ -113,8 +113,8 @@
"params": { "params": {
"height": "height", "height": "height",
"length": "distance(0, 0, short_edge_offset, 2.5)", "length": "distance(0, 0, short_edge_offset, 2.5)",
"is_left_sink": "is_sink", "is_left_sink": "False",
"is_right_sink": "False" "is_right_sink": "is_sink"
}, },
"transform": "rot(0, 0, angle(0, 0, short_edge_offset, 2.5)) @ scale(1, -1, 1)" "transform": "rot(0, 0, angle(0, 0, short_edge_offset, 2.5)) @ scale(1, -1, 1)"
}, },
@ -134,7 +134,7 @@
"skip": "not face[5]", "skip": "not face[5]",
"params": { "params": {
"height": "height", "height": "height",
"length": "length", "length": "short_edge_length",
"is_left_sink": "is_sink", "is_left_sink": "is_sink",
"is_right_sink": "is_sink" "is_right_sink": "is_sink"
}, },
@ -157,6 +157,14 @@
"identifier": "cv_triangle_side", "identifier": "cv_triangle_side",
"showcase": null, "showcase": null,
"params": [ "params": [
{
"field": "edge_length",
"data": "5.0"
},
{
"field": "tip_offset",
"data": "2.5"
},
{ {
"field": "height", "field": "height",
"data": "5.0" "data": "5.0"
@ -170,8 +178,16 @@
"data": "False" "data": "False"
} }
], ],
"skip": "False", "skip": "edge_length == 0.0",
"vars": [ "vars": [
{
"field": "edge_uv_length",
"data": "edge_length / 5.0"
},
{
"field": "tip_uv_offset",
"data": "tip_offset / 5.0"
},
{ {
"field": "sink", "field": "sink",
"data": "0.7 if is_sink else 0.0" "data": "0.7 if is_sink else 0.0"
@ -184,11 +200,11 @@
}, },
{ {
"skip": "not face[0]", "skip": "not face[0]",
"data": "(2.5, 2.5, -sink)" "data": "(tip_offset, 2.5, -sink)"
}, },
{ {
"skip": "not face[0]", "skip": "not face[0]",
"data": "(5.0, 0, 0)" "data": "(edge_length, 0, 0)"
} }
], ],
"faces": [ "faces": [
@ -198,8 +214,8 @@
"indices": [0, 2, 1], "indices": [0, 2, 1],
"uvs": [ "uvs": [
"(0, 0)", "(0, 0)",
"(0, 1)", "(0, edge_uv_length)",
"(0.5, 0.5)" "(0.5, tip_uv_offset)"
], ],
"normals": null "normals": null
} }
@ -210,7 +226,7 @@
"skip": "not face[4]", "skip": "not face[4]",
"params": { "params": {
"height": "height", "height": "height",
"length": "5", "length": "edge_length",
"is_left_sink": "False", "is_left_sink": "False",
"is_right_sink": "False" "is_right_sink": "False"
}, },
@ -221,30 +237,30 @@
"skip": "not face[2]", "skip": "not face[2]",
"params": { "params": {
"height": "height", "height": "height",
"length": "distance(0, 0, 2.5, 2.5)", "length": "distance(0, 0, tip_offset, 2.5)",
"is_left_sink": "is_sink", "is_left_sink": "False",
"is_right_sink": "False" "is_right_sink": "is_sink"
}, },
"transform": "rot(0, 0, 45) @ scale(1, -1, 1)" "transform": "rot(0, 0, angle(0, 0, tip_offset, 2.5)) @ scale(1, -1, 1)"
}, },
{ {
"identifier": "raw_floor_side", "identifier": "raw_floor_side",
"skip": "not face[3]", "skip": "not face[3]",
"params": { "params": {
"height": "height", "height": "height",
"length": "distance(5, 0, 2.5, 2.5)", "length": "distance(edge_length, 0, tip_offset, 2.5)",
"is_left_sink": "False", "is_left_sink": "False",
"is_right_sink": "is_sink" "is_right_sink": "is_sink"
}, },
"transform": "move(5, 0, 0) @ rot(0, 0, 135)" "transform": "move(edge_length, 0, 0) @ rot(0, 0, angle(edge_length, 0, tip_offset, 2.5))"
}, },
{ {
"identifier": "floor_triangle_bottom", "identifier": "floor_triangle_bottom",
"skip": "not face[1]", "skip": "not face[1]",
"params": { "params": {
"length": "5.0", "length": "edge_length",
"width": "2.5", "width": "2.5",
"tip_offset": "2.5" "tip_offset": "tip_offset"
}, },
"transform": "move(0, 0, -height)" "transform": "move(0, 0, -height)"
} }

View File

@ -25,6 +25,8 @@
"identifier": "cv_triangle_side", "identifier": "cv_triangle_side",
"skip": "False", "skip": "False",
"params": { "params": {
"edge_length": "5",
"tip_offset": "2.5",
"height": "height", "height": "height",
"face": "(face[0], False, False, False, face[4], None)", "face": "(face[0], False, False, False, face[4], None)",
"is_sink": "is_sink" "is_sink": "is_sink"
@ -55,6 +57,8 @@
"identifier": "cv_triangle_side", "identifier": "cv_triangle_side",
"skip": "False", "skip": "False",
"params": { "params": {
"edge_length": "5",
"tip_offset": "2.5",
"height": "height", "height": "height",
"face": "(face[0], False, False, False, face[2], None)", "face": "(face[0], False, False, False, face[2], None)",
"is_sink": "is_sink" "is_sink": "is_sink"
@ -128,6 +132,8 @@
"identifier": "cv_triangle_side", "identifier": "cv_triangle_side",
"skip": "False", "skip": "False",
"params": { "params": {
"edge_length": "5",
"tip_offset": "2.5",
"height": "height", "height": "height",
"face": "(face[0], False, False, False, face[2], None)", "face": "(face[0], False, False, False, face[2], None)",
"is_sink": "is_sink" "is_sink": "is_sink"

View File

@ -25,36 +25,32 @@
"identifier": "cv_triangle_side", "identifier": "cv_triangle_side",
"skip": "False", "skip": "False",
"params": { "params": {
"edge_length": "2.5",
"tip_offset": "2.5",
"height": "height", "height": "height",
"face": "(face[0], False, False, False, face[4], None)", "face": "(face[0], False, False, face[3], face[4], None)",
"is_sink": "is_sink" "is_sink": "is_sink"
}, },
"transform": "ident()" "transform": "ident()"
}, },
{ {
"identifier": "cv_triangle_center", "identifier": "cv_triangle_side",
"skip": "False", "skip": "False",
"params": { "params": {
"edge_length": "2.5",
"tip_offset": "2.5",
"height": "height", "height": "height",
"face": "(face[0], False, False, False, face[3], None)", "face": "(face[0], False, False, face[3], face[5], None)",
"is_sink": "is_sink" "is_sink": "is_sink"
}, },
"transform": "move(5, 0, 0) @ rot(0, 0, 90)" "transform": "move(0, 5, 0) @ scale(1, -1, 1)"
},
{
"identifier": "cv_triangle_side",
"skip": "False",
"params": {
"height": "height",
"face": "(face[0], False, False, False, face[5], None)",
"is_sink": "is_sink"
},
"transform": "move(5, 5, 0) @ rot(0, 0, 180)"
}, },
{ {
"identifier": "cv_triangle_side", "identifier": "cv_triangle_side",
"skip": "False", "skip": "False",
"params": { "params": {
"edge_length": "5",
"tip_offset": "2.5",
"height": "height", "height": "height",
"face": "(face[0], False, False, False, face[2], None)", "face": "(face[0], False, False, False, face[2], None)",
"is_sink": "is_sink" "is_sink": "is_sink"
@ -65,7 +61,7 @@
"identifier": "floor_rectangle_bottom", "identifier": "floor_rectangle_bottom",
"skip": "not face[1]", "skip": "not face[1]",
"params": { "params": {
"length": "5", "length": "2.5",
"width": "5" "width": "5"
}, },
"transform": "move(0, 0, -height)" "transform": "move(0, 0, -height)"

View File

@ -54,7 +54,7 @@
"data": "face_" "data": "face_"
} }
], ],
"skip": "False", "skip": "length == 0.0 or width == 0.0",
"vars": [], "vars": [],
"vertices": [], "vertices": [],
"faces": [], "faces": [],
@ -65,7 +65,7 @@
"params": { "params": {
"length": "length", "length": "length",
"height": "height", "height": "height",
"face": "(face[0], face[1], face[2], face[3], face[4], False)" "face": "(face[0], False, face[2], face[3], face[4], False)"
}, },
"transform": "ident()" "transform": "ident()"
}, },
@ -75,9 +75,9 @@
"params": { "params": {
"length": "length", "length": "length",
"height": "height", "height": "height",
"face": "(face[0], face[1], face[3], face[2], face[5], False)" "face": "(face[0], False, face[2], face[3], face[5], False)"
}, },
"transform": "move(length, 5 + width, 0) @ rot(0, 0, 180)" "transform": "move(0, 5 + width, 0) @ scale(1, -1, 1)"
}, },
{ {
"identifier": "floor_flat", "identifier": "floor_flat",
@ -86,10 +86,19 @@
"height": "height", "height": "height",
"length": "length", "length": "length",
"width": "width", "width": "width",
"face": "(face[0], face[1], face[2], face[3], False, False)", "face": "(face[0], False, face[2], face[3], False, False)",
"is_sink": "True" "is_sink": "True"
}, },
"transform": "move(0, 2.5, 0)" "transform": "move(0, 2.5, 0)"
},
{
"identifier": "floor_rectangle_bottom",
"skip": "not face[1]",
"params": {
"length": "length",
"width": "5 + width"
},
"transform": "move(0, 0, -height)"
} }
] ]
}, },
@ -137,38 +146,57 @@
"data": "face_" "data": "face_"
} }
], ],
"skip": "False", "skip": "width == 0.0",
"vars": [], "vars": [],
"vertices": [], "vertices": [],
"faces": [], "faces": [],
"instances": [ "instances": [
{ {
"identifier": "floor_sink_outter_corner", "identifier": "cv_trapezoid_side",
"skip": "False", "skip": "False",
"params": { "params": {
"long_edge_length": "width + 5",
"short_edge_offset": "2.5",
"short_edge_length": "width",
"height": "height", "height": "height",
"face": "(face[0], face[1], face[5], False, face[2], face[3])" "face": "(face[0], False, False, False, face[2], face[3])",
"is_sink": "True",
"is_ribbon": "False"
}, },
"transform": "move(0, 5 + width, 0) @ rot(0, 0, -90)" "transform": "rot(0, 0, 90) @ scale(1, -1, 1)"
}, },
{ {
"identifier": "floor_sink_outter_corner", "identifier": "cv_triangle_side",
"skip": "False", "skip": "False",
"params": { "params": {
"edge_length": "2.5",
"tip_offset": "2.5",
"height": "height", "height": "height",
"face": "(face[0], face[1], face[2], face[3], face[4], False)" "face": "(face[0], False, False, face[3], face[4], None)",
"is_sink": "True"
}, },
"transform": "ident()" "transform": "ident()"
}, },
{ {
"identifier": "floor_sink_border", "identifier": "cv_triangle_side",
"skip": "False", "skip": "False",
"params": { "params": {
"edge_length": "2.5",
"tip_offset": "2.5",
"height": "height", "height": "height",
"length": "width", "face": "(face[0], False, False, face[3], face[5], None)",
"face": "(face[0], face[1], False, False, face[2], face[3])" "is_sink": "True"
}, },
"transform": "move(0, 2.5 + width, 0) @ rot(0, 0, -90)" "transform": "move(0, width + 5, 0) @ scale(1, -1, 1)"
},
{
"identifier": "floor_rectangle_bottom",
"skip": "not face[1]",
"params": {
"length": "2.5",
"width": "5 + width"
},
"transform": "move(0, 0, -height)"
} }
] ]
}, },
@ -227,46 +255,45 @@
"data": "face_" "data": "face_"
} }
], ],
"skip": "False", "skip": "width_h == 0.0 or width_v == 0.0",
"vars": [], "vars": [],
"vertices": [], "vertices": [],
"faces": [], "faces": [],
"instances": [ "instances": [
{ {
"identifier": "floor_sink_outter_corner", "identifier": "cv_trapezoid_side",
"skip": "False", "skip": "False",
"params": { "params": {
"long_edge_length": "width_h + 5",
"short_edge_offset": "2.5",
"short_edge_length": "width_h + 2.5",
"height": "height", "height": "height",
"face": "(face[0], face[1], face[2], False, face[4], False)" "face": "(face[0], False, False, face[3], face[4], False)",
"is_sink": "True",
"is_ribbon": "False"
}, },
"transform": "ident()" "transform": "ident()"
}, },
{ {
"identifier": "floor_sink_border", "identifier": "cv_trapezoid_side",
"skip": "False", "skip": "False",
"params": { "params": {
"length": "2.5 + width_h", "long_edge_length": "width_v + 5",
"short_edge_offset": "2.5",
"short_edge_length": "width_v + 2.5",
"height": "height", "height": "height",
"face": "(face[0], face[1], False, face[3], face[4], False)" "face": "(face[0], False, False, face[5], face[2], False)",
"is_sink": "True",
"is_ribbon": "False"
}, },
"transform": "move(2.5, 0, 0)" "transform": "rot(0, 0, 90) @ scale(1, -1, 1)"
},
{
"identifier": "floor_sink_border",
"skip": "False",
"params": {
"length": "2.5 + width_v",
"height": "height",
"face": "(face[0], face[1], face[5], False, face[2], False)"
},
"transform": "move(0, 5 + width_v, 0) @ rot(0, 0, -90)"
}, },
{ {
"identifier": "floor_sink_inner_corner", "identifier": "floor_sink_inner_corner",
"skip": "False", "skip": "False",
"params": { "params": {
"height": "height", "height": "height",
"face": "(face[0], face[1], False, face[3], False, face[5])" "face": "(face[0], False, False, face[3], False, face[5])"
}, },
"transform": "move(2.5 + width_h, 2.5 + width_v, 0)" "transform": "move(2.5 + width_h, 2.5 + width_v, 0)"
}, },
@ -277,7 +304,7 @@
"height": "height", "height": "height",
"length": "width_h + 2.5", "length": "width_h + 2.5",
"width": "width_v", "width": "width_v",
"face": "(face[0], face[1], False, face[3], False, False)", "face": "(face[0], False, False, face[3], False, False)",
"is_sink": "True" "is_sink": "True"
}, },
"transform": "move(2.5, 2.5, 0)" "transform": "move(2.5, 2.5, 0)"
@ -289,10 +316,19 @@
"height": "height", "height": "height",
"length": "width_h", "length": "width_h",
"width": "2.5", "width": "2.5",
"face": "(face[0], face[1], False, False, False, face[5])", "face": "(face[0], False, False, False, False, face[5])",
"is_sink": "True" "is_sink": "True"
}, },
"transform": "move(2.5, 2.5 + width_v, 0)" "transform": "move(2.5, 2.5 + width_v, 0)"
},
{
"identifier": "floor_rectangle_bottom",
"skip": "not face[1]",
"params": {
"length": "width_h + 5",
"width": "width_v + 5"
},
"transform": "move(0, 0, -height)"
} }
] ]
}, },
@ -351,7 +387,7 @@
"data": "face_" "data": "face_"
} }
], ],
"skip": "False", "skip": "width_h == 0.0 or width_v == 0.0",
"vars": [], "vars": [],
"vertices": [], "vertices": [],
"faces": [], "faces": [],
@ -362,7 +398,7 @@
"params": { "params": {
"length": "5 + width_v", "length": "5 + width_v",
"height": "height", "height": "height",
"face": "(face[0], face[1], face[5], face[4], face[2], False)" "face": "(face[0], False, face[5], face[4], face[2], False)"
}, },
"transform": "move(0, 5 + width_v, 0) @ rot(0, 0, -90)" "transform": "move(0, 5 + width_v, 0) @ rot(0, 0, -90)"
}, },
@ -371,7 +407,7 @@
"skip": "False", "skip": "False",
"params": { "params": {
"height": "height", "height": "height",
"face": "(face[0], face[1], False, face[4], False, face[3])" "face": "(face[0], False, False, face[4], False, face[3])"
}, },
"transform": "move(2.5 + width_h, 2.5, 0) @ rot(0, 0, -90)" "transform": "move(2.5 + width_h, 2.5, 0) @ rot(0, 0, -90)"
}, },
@ -380,7 +416,7 @@
"skip": "False", "skip": "False",
"params": { "params": {
"height": "height", "height": "height",
"face": "(face[0], face[1], False, face[3], False, face[5])" "face": "(face[0], False, False, face[3], False, face[5])"
}, },
"transform": "move(2.5 + width_h, 2.5 + width_v, 0)" "transform": "move(2.5 + width_h, 2.5 + width_v, 0)"
}, },
@ -391,7 +427,7 @@
"height": "height", "height": "height",
"length": "width_h", "length": "width_h",
"width": "5 + width_v", "width": "5 + width_v",
"face": "(face[0], face[1], False, False, face[4], face[5])", "face": "(face[0], False, False, False, face[4], face[5])",
"is_sink": "True" "is_sink": "True"
}, },
"transform": "move(2.5, 0, 0)" "transform": "move(2.5, 0, 0)"
@ -403,10 +439,19 @@
"height": "height", "height": "height",
"length": "2.5", "length": "2.5",
"width": "width_v", "width": "width_v",
"face": "(face[0], face[1], False, face[3], False, False)", "face": "(face[0], False, False, face[3], False, False)",
"is_sink": "True" "is_sink": "True"
}, },
"transform": "move(2.5 + width_h, 2.5, 0)" "transform": "move(2.5 + width_h, 2.5, 0)"
},
{
"identifier": "floor_rectangle_bottom",
"skip": "not face[1]",
"params": {
"length": "width_h + 5",
"width": "width_v + 5"
},
"transform": "move(0, 0, -height)"
} }
] ]
}, },
@ -465,7 +510,7 @@
"data": "face_" "data": "face_"
} }
], ],
"skip": "False", "skip": "width_h == 0.0 or width_v == 0.0",
"vars": [], "vars": [],
"vertices": [], "vertices": [],
"faces": [], "faces": [],
@ -475,7 +520,7 @@
"skip": "False", "skip": "False",
"params": { "params": {
"height": "height", "height": "height",
"face": "(face[0], face[1], False, face[5], False, face[2])" "face": "(face[0], False, False, face[5], False, face[2])"
}, },
"transform": "move(2.5, 2.5 + width_v, 0) @ rot(0, 0, -270)" "transform": "move(2.5, 2.5 + width_v, 0) @ rot(0, 0, -270)"
}, },
@ -484,7 +529,7 @@
"skip": "False", "skip": "False",
"params": { "params": {
"height": "height", "height": "height",
"face": "(face[0], face[1], False, face[2], False, face[4])" "face": "(face[0], False, False, face[2], False, face[4])"
}, },
"transform": "move(2.5, 2.5, 0) @ rot(0, 0, -180)" "transform": "move(2.5, 2.5, 0) @ rot(0, 0, -180)"
}, },
@ -493,7 +538,7 @@
"skip": "False", "skip": "False",
"params": { "params": {
"height": "height", "height": "height",
"face": "(face[0], face[1], False, face[4], False, face[3])" "face": "(face[0], False, False, face[4], False, face[3])"
}, },
"transform": "move(2.5 + width_h, 2.5, 0) @ rot(0, 0, -90)" "transform": "move(2.5 + width_h, 2.5, 0) @ rot(0, 0, -90)"
}, },
@ -502,7 +547,7 @@
"skip": "False", "skip": "False",
"params": { "params": {
"height": "height", "height": "height",
"face": "(face[0], face[1], False, face[3], False, face[5])" "face": "(face[0], False, False, face[3], False, face[5])"
}, },
"transform": "move(2.5 + width_h, 2.5 + width_v, 0)" "transform": "move(2.5 + width_h, 2.5 + width_v, 0)"
}, },
@ -513,7 +558,7 @@
"height": "height", "height": "height",
"length": "width_h", "length": "width_h",
"width": "5 + width_v", "width": "5 + width_v",
"face": "(face[0], face[1], False, False, face[4], face[5])", "face": "(face[0], False, False, False, face[4], face[5])",
"is_sink": "True" "is_sink": "True"
}, },
"transform": "move(2.5, 0, 0)" "transform": "move(2.5, 0, 0)"
@ -525,7 +570,7 @@
"height": "height", "height": "height",
"length": "2.5", "length": "2.5",
"width": "width_v", "width": "width_v",
"face": "(face[0], face[1], False, face[3], False, False)", "face": "(face[0], False, False, face[3], False, False)",
"is_sink": "True" "is_sink": "True"
}, },
"transform": "move(2.5 + width_h, 2.5, 0)" "transform": "move(2.5 + width_h, 2.5, 0)"
@ -537,10 +582,19 @@
"height": "height", "height": "height",
"length": "2.5", "length": "2.5",
"width": "width_v", "width": "width_v",
"face": "(face[0], face[1], face[2], False, False, False)", "face": "(face[0], False, face[2], False, False, False)",
"is_sink": "True" "is_sink": "True"
}, },
"transform": "move(0, 2.5, 0)" "transform": "move(0, 2.5, 0)"
},
{
"identifier": "floor_rectangle_bottom",
"skip": "not face[1]",
"params": {
"length": "width_h + 5",
"width": "width_v + 5"
},
"transform": "move(0, 0, -height)"
} }
] ]
} }