- 添加Blender插件核心文件:__init__.py、ui.py、property.py、preference.py - 添加插件工具模块:g.py、loop.py、generate_loop.py、const.py、op.py - 添加翻译工具:utils/trans.py - 添加PuLP线性规划库及其依赖文件,包括CBC求解器二进制文件 - 添加.gitignore和VSCode配置文件
119 lines
2.5 KiB
Python
119 lines
2.5 KiB
Python
from enum import Enum
|
||
|
||
|
||
def clear_all_variables():
|
||
global_vars = globals()
|
||
|
||
for var in list(global_vars):
|
||
if not var.startswith("__") and not callable(global_vars[var]):
|
||
global_vars[var] = None
|
||
|
||
init_variables()
|
||
|
||
|
||
def init_variables():
|
||
global_vars = globals()
|
||
|
||
global boundaries
|
||
boundaries = set()
|
||
|
||
global patches
|
||
patches = set()
|
||
|
||
global loops
|
||
loops = []
|
||
|
||
global temp_bm_verts
|
||
temp_bm_verts = set()
|
||
|
||
global temp_bm_edges
|
||
temp_bm_edges = set()
|
||
|
||
global snap_bvh_trees
|
||
snap_bvh_trees = []
|
||
|
||
global last_update_hovering_timestamp
|
||
last_update_hovering_timestamp = 0
|
||
|
||
global last_update_snap_timestamp
|
||
last_update_snap_timestamp = 0
|
||
|
||
global mode
|
||
mode = Mode.NORMAL
|
||
|
||
global is_snap_surface
|
||
is_snap_surface = True
|
||
|
||
global is_auto_search_pattern
|
||
is_auto_search_pattern = True
|
||
|
||
global is_snap_opposite
|
||
is_snap_opposite = True
|
||
|
||
|
||
is_running = False
|
||
running_exception = None # 存放外部发生的错误,让他可以raise到用户界面
|
||
|
||
# 绘制曲线中
|
||
drawing_verts_snap_vertex = None
|
||
drawing_path_boundary = None
|
||
|
||
|
||
patches = set() # 建成的补丁
|
||
boundaries = set() # 建成的边
|
||
loops = (
|
||
[]
|
||
) # boundary环路列表,元素是loop,loop是元组的列表,元组第一个元素是boundary,第二个元素是方向
|
||
|
||
# 记录插件创建的点和边,防止误删搞坏用户的网格,使用set,提高in语句的性能
|
||
# TODO: 網格更新的時候沒有及時更新,但是暂时没问题,不考虑这个,只在最后获取顶点数的时候有问题
|
||
temp_bm_verts = set()
|
||
temp_bm_edges = set()
|
||
|
||
# 全局设置
|
||
is_snap_surface = True
|
||
is_snap_opposite = True
|
||
is_auto_search_pattern = True
|
||
|
||
snap_bvh_trees = [] # 要吸附的bvh_tree
|
||
obj = None # 编辑物体
|
||
obj_bm = None # 编辑物体的bm
|
||
obj_me = None # 编辑物体的data即mesh对象
|
||
obj_bvh_tree = None # 编辑物体的data即mesh对象
|
||
|
||
hovering_loop = None
|
||
hovering_boundary = None
|
||
|
||
temp_merge_boundary_1 = None # 临时变量,用于临时储存合并boundary
|
||
|
||
last_update_hovering_timestamp = 0
|
||
last_update_snap_timestamp = 0
|
||
|
||
last_mouse_co_2d = None
|
||
|
||
last_echo_time = 0
|
||
|
||
|
||
class Mode(Enum):
|
||
NORMAL = 1
|
||
DRAWING = 2
|
||
MERGE_BOUNDARY = 3
|
||
|
||
|
||
mode = Mode.NORMAL
|
||
|
||
mirror_path = []
|
||
|
||
is_drawing_along_mirror = False
|
||
is_drawing_along_mirror_persist = False
|
||
|
||
is_changing_mesh = False
|
||
|
||
|
||
is_redraw_boundary = False
|
||
last_boundary_data = None
|
||
is_redraw_pattern = False
|
||
last_pattern_data = None
|
||
is_redraw_hovering = False
|
||
last_hovering_data = None
|