import json import time import ezdxf import requests # with open('tunLtsMap2.json', 'r',encoding='utf-8') as file: # data = json.load(file) def hex_to_rgb(hex_color): # 确保输入以 '#' 开头并且长度为 7 if hex_color.startswith('#') and len(hex_color) == 7: # 去掉 '#' 并将字符串拆分为 RGB 部分 hex_rgb = hex_color[1:] # 每两个字符一组转换为十进制数 r = int(hex_rgb[0:2], 16) g = int(hex_rgb[2:4], 16) b = int(hex_rgb[4:6], 16) return r, g, b else: raise ValueError("Invalid hex color code") def request_graph_point(url): response = requests.get(url, timeout=10) print(f"请求耗时 {response.elapsed.total_seconds()} 秒") cad_json = {} if response.status_code == 200: cad_json = response.json() # 将响应内容解析为JSON格式 else: print(f"请求失败,状态码:{response.status_code}") return cad_json data = request_graph_point("http://192.168.183.216:8008/tunCAD?modelid=1868855086453813249") # with open("tunLtsMap.json",encoding='utf-8') as r: # data = json.loads(r.read()) layers_dict = {} for layer in data['layerMap']: layers_dict[layer[0]] = layer[1] vecL_points = [] vec_points = [] vecR_points = [] plg_list = [] for obj in data['tunLtsMap']: obj = obj[1] plg= {} vecL_series = [ (obj['vecL1']['x'],- obj['vecL1']['z']), (obj['vecL2']['x'],- obj['vecL2']['z']), (obj['vecL3']['x'],- obj['vecL3']['z']), (obj['vecL4']['x'],- obj['vecL4']['z']) ] plg['vecL'] = vecL_series vecR_series = [ (obj['vecR1']['x'],- obj['vecR1']['z']), (obj['vecR2']['x'],- obj['vecR2']['z']), (obj['vecR3']['x'],- obj['vecR3']['z']), (obj['vecR4']['x'],- obj['vecR4']['z']) ] plg['vecR'] = vecR_series vec_series = [ (obj['vec1']['x'],- obj['vec1']['z']), (obj['vec2']['x'],- obj['vec2']['z']), (obj['vec3']['x'],- obj['vec3']['z']), (obj['vec4']['x'],- obj['vec4']['z']) ] plg['vec'] = vec_series plg['color'] = hex_to_rgb(layers_dict[obj['nlayerid']]['ncolor']) plg_list.append(plg) doc = ezdxf.new('R2018') msp = doc.modelspace() def draw_plg(color,points): hatch = msp.add_hatch() hatch.rgb=color hatch.layer =1 edge_path = hatch.paths.add_edge_path() for i in range(3): edge_path.add_line(points[i], points[i+1]) edge_path.add_line(points[-1], points[0]) for plg in plg_list: color = plg['color'] draw_plg((0,0,0), plg['vec']) draw_plg(plg['color'],plg['vecL']) draw_plg(plg['color'],plg['vecR']) doc.saveas(f'save/tuns{str(time.time())}.dxf')