以后发帖可以把GH文件直接上传到论坛,没必要单独给我。
说说你的代码问题,希望对你有帮助:
1:写代码的时候,没必要按GH的数据运行逻辑写,不然有时候代码会臃肿很多。(比如你这个案例,根本就用不着树形数据)
2:不需要导入的模块就不要导入了,影响效率。
3:能在一个for循环里解决的问题,就不要放到几个for循环里来回求解了。
#没必要导入的模块就不要导入了
sort_Brep = []
"""
我看你的意思应该是用曲面去排序多重曲面
"""
for Srf in S_Srf:
#这里没必要去用循环,因为曲面就一个face,直接取第一个数据就行
face = Srf.Faces[0]
srf_Pt = face.PointAt(face.Domain(0).Mid, face.Domain(1).Mid)
#直接求最近点去排序
index = 0 #每个点最近的序号
distance = int.MaxValue
for i in xrange(len(Brep)):
closest_pt = Brep[i].ClosestPoint(srf_Pt)
closest_dist = closest_pt.DistanceTo(srf_Pt)
#查找最小值
if(closest_dist < distance):
distance = closest_dist
index = i
sort_Brep.append(Brep[index])
代码排序求解答.rar (80.7 KB)
2 个赞