123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100 |
- 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')
|