打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
优化:Dynamo根据构件坐标XY值排序

    Dynamo案例百解累积更新(2021.10)介绍~

Dynamo PythonScript 代码速查手册By九哥

Rhino.Inside.Revit学习笔记来啦!售价199元~

在售的Dynamo教程,有兴趣小伙伴,可以加我微信,进行购买哦~

『Dynamo教程目录整理2022.01』

Hello大家好!我是九哥~

    前一阵群里有个小伙伴咨询如何按XY坐标给桩编码,当时呢也没过多思考,就把常规的逻辑告诉他了,利用Dynamo自带的List.SortByKey节点,根据族放置坐标的XY值进行两次排序,就能实现这个需求,于是就简单写了个程序扔到了群里。

    不过正好最近自己有个类似的需求,发现这个方法逻辑上虽然通,但是用起来并不完美,总有个别位置编码错误。

    反复查看了编号错误的族,发现是因为族的坐标不论是X值还是Y值,是有一定偏差的,但是当按XY分别排序以后,这细小的偏差就会影响构件的编码顺序。

如果遇到个别族偏移距离过大了,而我又想让这个族按照相对的顺序去编码该怎么办呢?(如下图:)

没办法,只能自己重新写下程序了。

    本来想简单的连几个节点,发现还没没搞定,没办法只能寄希望于代码了,但是如果用代码,这个事反而就简单了,因为我们在学Python的时候,最基本的一个“冒泡法”相信大家都会,就是经常用来处理排序问题的,简单套用下 ,就能搞定这个问题。    

    通过冒泡法,写一个自定义函数,如下:

def zuobiaopaixu(a):  b=[]  l=len(a)  for i in range(l):    j=i    for j in range(l):      if ((a[j].Location).X - (a[i].Location).X) >1000:        a[i],a[j]=a[j],a[i]      if ((a[i].Location).Y - (a[j].Location).Y) >1000:        a[i],a[j]=a[j],a[i]  for k in range(len(a)):    b.append(a[k])  return b

    上面这个函数,我们先解决了简单的按坐标排序问题,而且给了一个误差值。然后如果我们想要控制从上到下还是从左到右呢,可以对自定义函数进行优化,如下:

def zuobiaopaixu(a,x,y,D):  b=[]  l=len(a)  for i in range(l):    j=i    for j in range(l):      if x == True:        if ((a[j].Location).X - (a[i].Location).X) > D:          a[i],a[j]=a[j],a[i]      if x == False:        if ((a[i].Location).X - (a[j].Location).X) > D:          a[i],a[j]=a[j],a[i]      if y == True:        if ((a[i].Location).Y - (a[j].Location).Y) > D:          a[i],a[j]=a[j],a[i]      if y == False:        if ((a[j].Location).Y - (a[i].Location).Y) > D:          a[i],a[j]=a[j],a[i]  for k in range(len(a)):    b.append(a[k])  return b

    这里是通过输入两个布尔值来确定XY的排序方向,然后给一个可控的误差变量,就满足了现在排序需求。

当然,我这段代码是以房间为例的,如果你是想对别的图元按坐标排序,需要自己调整下获取Location的代码,这里就不过多赘述了~

好了,今天的教程就到这里,小伙伴们快去尝试吧~

有希望入群或者想要购买教程的小伙伴,都可以扫码,加我微信,备注来源,我来拉你入群哦~

下面是九哥的知识店铺

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
【慧远大讲堂】小章说桥之BIM模式下弯桥排梁设计初探(下)
算法创作|迷宫问题解决方案
把AB坐标批量转换成XY坐标?这两个实用技巧,施工员必备教程
【Dynamo应用秘籍】20:使用Lunchbox软件包简化点坐标与Excel数据交互
Dynamo文章目录整理——BIM的乐趣By九哥
Excel小教程十九:巧用函数来做Excel自定义排序,简单便捷!
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服