Files
blender-easy-patch/g.py
小煜 ab91b120e6 feat: 初始化Easy Patch插件及依赖文件
- 添加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配置文件
2026-03-03 19:24:57 +08:00

119 lines
2.5 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 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环路列表元素是looploop是元组的列表元组第一个元素是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