-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathwalls.py
More file actions
85 lines (72 loc) · 2.95 KB
/
walls.py
File metadata and controls
85 lines (72 loc) · 2.95 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
"""Functions relating to walls"""
import re
from api import *
from lib import transaction
import constants
from Autodesk.Revit.DB import BuiltInCategory
from Autodesk.Revit.DB import BuiltInParameter
from Autodesk.Revit.DB import CurveElement
from Autodesk.Revit.DB import ElementTypeGroup
from Autodesk.Revit.DB import Family
from Autodesk.Revit.DB import FamilyInstance
from Autodesk.Revit.DB import FamilySymbol
from Autodesk.Revit.DB import FilteredElementCollector
from Autodesk.Revit.DB import Level
from Autodesk.Revit.DB import LinePatternElement
from Autodesk.Revit.DB import TextNote
from Autodesk.Revit.DB import SymbolicCurve
from Autodesk.Revit.DB import View
from Autodesk.Revit.DB import ViewSheet
from Autodesk.Revit.DB import WallType
from Autodesk.Revit.DB import XYZ
def fix_walls(doc):
"""Rename wall types"""
wall_types = FilteredElementCollector(doc).OfClass(WallType)
pat = re.compile('A_Wall_Generic Dry Wall (\d{2,3})mm')
with transaction(doc, 'Fix walls'):
for wt in wall_types:
try:
type_name = wt.get_Parameter(BuiltInParameter.ALL_MODEL_TYPE_NAME).AsString()
width = int(round(wt.Width * constants.MM))
#acoustic = wt.LookupParameter('AcousticRating_TX').AsString()
#fire_rating = wt.LookupParameter('FireRating_TX').AsString()
code = wt.get_Parameter(BuiltInParameter.ALL_MODEL_TYPE_MARK).AsString()
description = wt.get_Parameter(BuiltInParameter.ALL_MODEL_DESCRIPTION).AsString()
bits = pat.findall(type_name)
print(bits)
if bits:
wt.Name = 'GENERIC_DW_{}'.format(width, bits[0][1])
print(wt.Name)
#fam.get_Parameter(BuiltInParameter.KEYNOTE_PARAM).Set('')
#fam.LookupParameter("Acoustic Rating").Set(acoustic)
#fam.LookupParameter("FireRating_TX").Set(fire_rating)
#print('{} {}'.format(width, code))
except Exception as e:
print(e)
def place_all_walls(doc):
"""Place all walls"""
levels = list(FilteredElementCollector(doc).OfClass(Level))
wall_types = sorted(FilteredElementCollector(doc).OfClass(WallType), key=lambda x: x.Width)
with transaction(doc, 'Place walls'):
x = 0
y = 0
i = 0
step = 10
for wt in wall_types:
if i % 10 == 0:
x = 0
y += step
else:
x += step
start = XYZ(x, y, 0)
end = XYZ(x, y + step, 0)
line = Line.CreateBound(start, end)
w = Wall.Create(doc, line, levels[0].Id, False)
w.WallType = wt
i += 1
def walls(doc):
families = FilteredElementCollector(doc).OfClass(WallType)
for fam in families:
print '{}\t{}'.format(
fam.get_Parameter(BuiltInParameter.ALL_MODEL_TYPE_NAME).AsString(),
fam.Width * MM)