在11乘11的元胞空間 隨機生成5個人,然後人物尋找房門疏散出去.
import numpy as np
import matplotlib.pyplot as plt
people_number =
5# 人物生數成設定5
world_size =
11# 房間長寬11個元胞
class
people
: world = np.zeros(
(world_size, world_size)
)# 這裡是定義的靜態變數 同一類的 例項物件 共享這乙個
door = np.array((0
,3))
.reshape((1
,2))
# 可注意到這裡的變數名前不用寫 self.
def__init__
(self)
: self.position =
none
# # 在這裡初始化例項物件屬性
defgenerate
(self, x, y)
: people.world[x, y]=1
self.position = np.array(
(x, y)
).reshape((1
,2))
defmove
(self):if
(self.position == self.door)
.all()
:return
1else
: move_matrix = np.array([[
-1,-
1],[
-1,0
],[-
1,1]
,[0,
-1],
[0,0
],[0
,1],
[1,-
1],[
1,0]
,[1,
1]])
distance = np.zeros(9)
# distance 初始化
for i in
range(9
):distance[i]
= np.
sum(np.
abs(self.position + move_matrix[i,:]
- self.door)
)# 路徑選擇(最近臨胞)
choose = distance.argmin(
)# 房間更新
people.world[self.position[0,
0], self.position[0,
1]]=
0 self.position += move_matrix[choose,:]
people.world[self.position[0,
0], self.position[0,
1]]=
1return
0if __name__ ==
'__main__'
: a =
for i in
range
(people_number):)
) a[i]
.generate(np.random.randint(
0, world_size)
, np.random.randint(
0, world_size)
)# 隨機產生人物時可能重疊
fig = plt.figure(
) plt.imshow(people.world)
plt.xticks(()
) plt.yticks(()
) plt.ion(
) plt.show(
)# print(people.world, '\n') # 類名.屬性名 直接訪問
# a[0].world = *** # 這樣會建立乙個同名的 例項物件的屬性
flags = np.zeros((1
, people_number)
)while np.
sum(flags)
< people_number:
for i in
range
(people_number)
: flags[
0, i]
= a[i]
.move(
) plt.imshow(people.world)
plt.pause(
0.5)
Revit API 查詢房間內構件
需求 算量時裝飾等類的構件需統計房間資訊,水電等類的構件統計所在系統。主要方法 得到房間solid,然後通過solid過濾出與其相交的構件。從而判斷構件所在房間,跨房間的構件通過窗體顯示出來,由使用者判斷所在房間。首先,api中有個內建引數為builtinparameter.elem room na...
Revit API建立乙個拷貝房間內物件布局命令
本課程演示建立乙個拷貝房間內物件布局命令,完整演示步驟和 這個命令把選中房間內的物件複製到其它選中的乙個或多個房間中,而且保持與源房間一致的相對位置。通過本講座使聽眾知道建立乙個二次開發程式很簡單,建立乙個實用的命令也很快。複製房間 transactionattribute autodesk.rev...