Jelajahi Sumber

mxg:calc connected_block direction

mengxiangge 5 tahun lalu
induk
melakukan
7fcba2c8e8

systemrelation/__init__.py → src/__init__.py


+ 0 - 0
src/system_relation/__init__.py


+ 9 - 9
systemrelation/calc_flowdirection.py

@@ -3,9 +3,9 @@ step1. division block.
 step2. appoint source.
 setp3. calc flow direction.
 '''
-from systemrelation import systemdatautils
+from src.system_relation import systemdatautils
 import networkx as nx
-from systemrelation import revit_const
+
 
 def calc(project_id,block_id):
 	'''
@@ -14,8 +14,8 @@ def calc(project_id,block_id):
 	:param block_id:
 	:return:
 	'''
-	block_datas=systemdatautils.get_connected_block_data(project_id,block_id)
-	source_datas=systemdatautils.get_connected_block_source_data(project_id,block_id)
+	block_datas= systemdatautils.get_connected_block_data(project_id, block_id)
+	source_datas= systemdatautils.get_connected_block_source_data(project_id, block_id)
 	# get roots
 	roots=list(i.source_id for i in source_datas)
 	g = nx.Graph()
@@ -37,15 +37,15 @@ def calc(project_id,block_id):
 						continue
 					# set path direction
 					for j in range(len(path) - 1):
-						G_new.add_edge(path[j], path[j + 1],weight=str(j))
+						G_new.add_edge(path[j], path[j + 1],weight=(j))
 			# add source direct to source path.
 			for j in range(i + 1, len(roots)):
 				next_root=roots[j]
 				paths = list(nx.all_simple_paths(G, root, next_root))
 				for path in paths:
 					if len(path) == 2:
-						G_new.add_edge(root, next_root,weight="0")
-						G_new.add_edge(next_root, root,weight="0")
+						G_new.add_edge(root, next_root,weight=0)
+						G_new.add_edge(next_root, root,weight=0)
 	except Exception as ex:
 		print(ex)
 	for edge in G_new.edges:
@@ -86,9 +86,9 @@ def set_edge_direction(block_datas,edge,weight):
 		if block_data.id1 == edge[0] and block_data.id2 == edge[1]:
 			j=1
 			block_data.direction=(block_data.direction+j if block_data.direction else j)
-			block_data.block_id=str(weight)
+			block_data.depth=(weight)
 		# connector2 to connector1.sing:-1
 		if block_data.id1 == edge[1] and block_data.id2 == edge[0]:
 			j = -1
 			block_data.direction=(block_data.direction+j if block_data.direction else j)
-			block_data.block_id = str(weight)
+			block_data.depth = (weight)

+ 3 - 5
systemrelation/graph_model.py

@@ -1,10 +1,8 @@
 """Graph Model.
 """
 from enum import Enum
-from systemrelation import graph_model
-from systemrelation import systemdatautils
-from systemrelation import systemutils
-from systemrelation import revit_const
+from src.system_relation import systemutils, revit_const, systemdatautils,graph_model
+
 
 class SystemVertex:
 	"""Graph Vertex.
@@ -17,7 +15,7 @@ class SystemVertex:
 		self.parent= parent
 
 	def __str__(self):
-		return str(systemutils.get_specify_type_parent(self,FloorGraph).model.floor_name)+':'+str(self.system_data.source_id)
+		return str(systemutils.get_specify_type_parent(self, FloorGraph).model.floor_name) + ':' + str(self.system_data.source_id)
 
 	def __eq__(self, other):
 		return self.system_data.source_id==other.system_data.source_id

+ 1 - 0
systemrelation/revit_const.py

@@ -8,3 +8,4 @@ OTHER='Other'
 CONNECTOR='Connector'
 DUCT='Duct'
 PIPE='Pipe'
+MEPCURVE=[DUCT,PIPE]

+ 9 - 9
systemrelation/systemdatautils.py

@@ -2,8 +2,9 @@
 
 """
 import test
-from systemrelation import systemutils
-from systemrelation import graph_model
+from src.system_relation import systemutils, graph_model
+
+
 def get_dicdata(sql,dic):
 	"""
 	Request db for data through sql.
@@ -192,7 +193,7 @@ def get_connectors_data(model_id, system_name, domain):
 		'connect_id_json'
 	]
 	connector_data.extend(get_dicdata(connector_sql, CONNECTOR_KEYS))
-	connector_data=list(map(systemutils.dic2obj,connector_data))
+	connector_data=list(map(systemutils.dic2obj, connector_data))
 	return connector_data
 
 def save_project_data(project_graph,project_id):
@@ -222,7 +223,7 @@ def save_edge_data(edge,block_id):
 	vertex2=edge.end_vertex
 	c1=vertex1.system_data
 	c2=vertex2.system_data
-	model1=systemutils.get_specify_type_parent(vertex1,graph_model.FloorGraph).model
+	model1= systemutils.get_specify_type_parent(vertex1, graph_model.FloorGraph).model
 	model2 = systemutils.get_specify_type_parent(vertex2, graph_model.FloorGraph).model
 	sql="insert into revit_calc.connected_block" \
 		"(id1,type1,model_id1,id2,type2,model_id2,block_id,project_id) values " \
@@ -248,11 +249,8 @@ def get_connected_block_data(project_id,block_id):
 	sql = "select * from revit_calc.connected_block " \
 		  "where project_id='%s'" \
 		  "and block_id='%s'" \
+		  "order by cast(depth as int) asc"\
 		  % (project_id,block_id)
-	sql = "select * from revit_calc.connected_block " \
-		  "where project_id='%s'" \
-		  "order by cast(block_id as int) asc"\
-		  % (project_id)
 	KEYS = [
 		'id',
 		'id1',
@@ -264,6 +262,7 @@ def get_connected_block_data(project_id,block_id):
 		'direction',
 		'block_id',
 		'project_id',
+		'depth',
 	]
 	element_data.extend(get_dicdata(sql, KEYS))
 	element_data = list(map(systemutils.dic2obj, element_data))
@@ -296,7 +295,8 @@ def update_connected_block_data(block_datas):
 	:return:
 	'''
 	for block_data in block_datas:
-		sql="update revit_calc.connected_block set direction='%s' ,block_id='%s' where id='%s'"%(block_data.direction,block_data.block_id,block_data.id)
+		sql="update revit_calc.connected_block set direction='%s',depth='%s' where id='%s'"\
+			%(block_data.direction,block_data.depth,block_data.id)
 		data = test.save_data(sql)
 
 

+ 7 - 4
systemrelation/systemgraph_display.py

@@ -47,15 +47,18 @@ def show_groupedsystem(grouped_system_graph):
 	nx.draw_spring(g,with_labels=True,font_size=8,with_label=True)
 	plt.show()
 
-from systemrelation import systemdatautils
-def show_connected_block(project_id,block_id):
+
+from src.system_relation import systemdatautils
+
+
+def show_connected_block(project_id: object, block_id: object) -> object:
 	'''
 	show connected block.
 	:param project_id:
 	:param block_id:
 	:return:
 	'''
-	block_datas=systemdatautils.get_connected_block_data(project_id,block_id)
+	block_datas= systemdatautils.get_connected_block_data(project_id, block_id)
 	g=nx.DiGraph()
 	model_dic = {}
 	floor_data_dic = {}
@@ -87,7 +90,7 @@ def get_connected_info(model_dic,floor_data_dic,project_id,model_id,type,id):
 		model_dic=dict(zip(ids,models))
 	model=model_dic[model_id]
 	if model_id not in floor_data_dic:
-		datas=systemdatautils.get_element_data(model_id)
+		datas= systemdatautils.get_element_data(model_id)
 		floor_data_dic[model_id]=datas
 	floor_datas = floor_data_dic[model_id]
 	datas=list(i for i in floor_datas if i.type==type and i.id==id)

+ 2 - 3
systemrelation/systemutils.py

@@ -3,10 +3,9 @@
 2. get path start with connector,end with triple ,cross,equipment,end
 """
 
-from systemrelation import revit_const
 from functools import cmp_to_key
 import vg
-from systemrelation import graph_model
+from src.system_relation import graph_model, revit_const
 
 
 def path2edge(elements):
@@ -114,7 +113,7 @@ def combine_systemgraph(floorgraphs):
 			# combine systemgraph
 			for k in range(len(group_pipes)):
 				vertex = group_pipes[k]
-				systemgraph = get_specify_type_parent(vertex,graph_model.SystemGraph)
+				systemgraph = get_specify_type_parent(vertex, graph_model.SystemGraph)
 				if not systemgraph:
 					continue
 				projectgraph.remove_groupedsystemgraphs(systemgraph)

+ 8 - 0
src/system_relation/test_flowdirection.py

@@ -0,0 +1,8 @@
+from src.system_relation import calc_flowdirection, systemdatautils
+
+if __name__=="__main__":
+	project_id="Pj1101010015"
+	block_id="0"
+	block_datas= calc_flowdirection.calc(project_id, block_id)
+	systemdatautils.update_connected_block_data(block_datas)
+	#systemgraph_display.show_connected_block(project_id,block_id)

+ 15 - 0
src/system_relation/test_system.py

@@ -0,0 +1,15 @@
+from src.system_relation import systemutils, graph_model, systemdatautils
+
+if '__main__'==__name__:
+	project_id="Pj1101010015"
+	system_name="冷冻水供水管"
+	domain="DomainPiping"
+	models= systemdatautils.get_project_models(project_id)
+	floorgraphs=[]
+	for model in models:
+		g= graph_model.FloorGraph(model, system_name, domain)
+		g.get_floor_graphs()
+		floorgraphs.append(g)
+	projectgraph= systemutils.combine_systemgraph(floorgraphs)
+	systemdatautils.save_project_data(projectgraph, project_id)
+	#systemgraph_display.show_project(projectgraph)

+ 0 - 18
systemrelation/system_test.py

@@ -1,18 +0,0 @@
-from systemrelation import graph_model
-from systemrelation import systemgraph_display
-from systemrelation import systemdatautils
-from systemrelation import systemutils
-
-if '__main__'==__name__:
-	project_id="Pj1101010015"
-	system_name="冷冻水供水管"
-	domain="DomainPiping"
-	models=systemdatautils.get_project_models(project_id)
-	floorgraphs=[]
-	for model in models:
-		g=graph_model.FloorGraph(model,system_name,domain)
-		g.get_floor_graphs()
-		floorgraphs.append(g)
-	projectgraph=systemutils.combine_systemgraph(floorgraphs)
-	systemdatautils.save_project_data(projectgraph,project_id)
-	systemgraph_display.show_project(projectgraph)

+ 0 - 10
systemrelation/test_flowdirection.py

@@ -1,10 +0,0 @@
-from systemrelation import calc_flowdirection
-from systemrelation import systemdatautils
-from systemrelation import systemgraph_display
-
-if __name__=="__main__":
-	project_id="Pj1101010015"
-	block_id="0"
-	block_datas=calc_flowdirection.calc(project_id,block_id)
-	systemdatautils.update_connected_block_data(block_datas)
-	systemgraph_display.show_connected_block(project_id,block_id)