Skip to content

Commit fff854c

Browse files
committed
pyRevit 4.2
Addition of Charts Core performance improvements Output window improvements (Removed 1023 cache limit)
2 parents fc2bc64 + e639e74 commit fff854c

File tree

25 files changed

+233
-167
lines changed

25 files changed

+233
-167
lines changed

extensions/pyRevitCore.extension/pyRevit.tab/pyRevit.panel/About.pushbutton/AboutWindow.xaml

+3-3
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,9 @@
1111
</Border.Background>
1212
<Grid>
1313
<Image x:Name="pyrevit_logo" HorizontalAlignment="Left" Width="100" Height="110" Margin="25,20,0,0" VerticalAlignment="Top" />
14-
<TextBlock x:Name="pyrevit_title" Margin="140,30,30,0" TextWrapping="Wrap" VerticalAlignment="Top" FontSize="44"><Run Text="pyRevit"/><InlineUIContainer>
15-
<TextBlock x:Name="version_info" TextWrapping="Wrap" Text="v 4.0:0000000" FontSize="20" Margin="12,0,0,0" MouseDown="opengithubcommits"/>
16-
</InlineUIContainer></TextBlock>
14+
<TextBlock x:Name="pyrevit_title" Margin="140,30,30,0" VerticalAlignment="Top" FontSize="44" MouseDown="opengithubcommits">
15+
<Run Text="pyRevit"/><Run x:Name="version_info" Text="" FontSize="20"/><Run x:Name="branch_info" Text="" FontSize="14"/>
16+
</TextBlock>
1717
<Separator VerticalAlignment="Top" Margin="30,155,30,0" Background="#dfdfdf"/>
1818
<TextBlock x:Name="pyrevit_subtitle" Margin="140,85,30,0" TextWrapping="Wrap" VerticalAlignment="Top" FontSize="14" Text="python module and scripts for Autodesk Revit®" LineHeight="20"/>
1919
<TextBlock x:Name="credits_title" Margin="30,175,30,0" TextWrapping="Wrap" Text="pyRevit uses some fine tools made by very talented people:" VerticalAlignment="Top" FontSize="14" TextAlignment="Center"/>

extensions/pyRevitCore.extension/pyRevit.tab/pyRevit.panel/About.pushbutton/aboutscript.py

+7-2
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
from scriptutils import open_url
55
from scriptutils.userinput import WPFWindow
66
from pyrevit.coreutils.git import compare_branch_heads
7-
from pyrevit.versionmgr import PYREVIT_VERSION
7+
from pyrevit.versionmgr import PYREVIT_VERSION, PYREVIT_REPO
88
from pyrevit.versionmgr.updater import get_pyrevit_repo, has_pending_updates
99

1010

@@ -20,7 +20,12 @@ def __init__(self, xaml_file_name):
2020
self.set_image_source('pyrevit_logo', 'pyRevitlogo.png')
2121
self.set_image_source('keybase_profile', 'keybase.png')
2222

23-
self.version_info.Text = 'v {}'.format(PYREVIT_VERSION.get_formatted())
23+
try:
24+
self.version_info.Text = ' v{}'.format(PYREVIT_VERSION.get_formatted())
25+
if PYREVIT_REPO.branch != 'master':
26+
self.branch_info.Text = ' ({})'.format(PYREVIT_REPO.branch)
27+
except:
28+
self.version_info.Text = ''
2429
self.pyrevit_subtitle.Text += '\nRunning on IronPython {}.{}.{}'.format(sys.version_info.major,
2530
sys.version_info.minor,
2631
sys.version_info.micro)
Loading

extensions/pyRevitCore.extension/pyRevit.tab/pyRevit.panel/About.pushbutton/script.py

-69
This file was deleted.

extensions/pyRevitCore.extension/pyRevit.tab/pyRevit.panel/wip.stack3/Labs.pulldown/Master Test.pushbutton/script.py

-2
Original file line numberDiff line numberDiff line change
@@ -100,8 +100,6 @@ def __selfinit__(script_cmp, commandbutton, __rvt__):
100100
print 'Window hndlr: {}'.format(__window__)
101101
print 'File: {}'.format(__file__)
102102
print 'Forced Debug: {}'.format(__forceddebugmode__)
103-
print 'Message: {}'.format(__message__)
104-
print 'Result: {}'.format(__result__)
105103

106104
su.this_script.output.print_md('**Testing linkify:**')
107105
print('Clickable element id: {}'.format(su.this_script.output.linkify(ElementId(1557))))
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,73 @@
1+
import clr
2+
3+
from pyrevit import PYTHON_LIB_DIR, MAIN_LIB_DIR
4+
from pyrevit.coreutils import Timer
5+
6+
from scriptutils import this_script
7+
8+
clr.AddReference('System')
9+
clr.AddReference('IronPython')
10+
# noinspection PyUnresolvedReferences
11+
from System.Collections.Generic import List
12+
# noinspection PyUnresolvedReferences
13+
import IronPython.Hosting
14+
import IronPython.Runtime
15+
16+
17+
TEST_UNIT = 100
18+
MAX_TESTS = 5 * TEST_UNIT
19+
script = "import random; random.randint(1,10)"
20+
21+
22+
def run(engine, runtime):
23+
scope = runtime.CreateScope()
24+
co = engine.GetCompilerOptions(scope)
25+
# co.Module &= ~IronPython.Runtime.ModuleOptions.Optimized
26+
source = engine.CreateScriptSourceFromString(script)
27+
comped = source.Compile()
28+
comped.Execute(scope)
29+
30+
31+
def make_engine():
32+
options = {"Frames": True, "FullFrames": True, "LightweightScopes": True}
33+
engine = IronPython.Hosting.Python.CreateEngine(options)
34+
engine.SetSearchPaths(List[str]([PYTHON_LIB_DIR, MAIN_LIB_DIR]))
35+
runtime = engine.Runtime
36+
return engine, runtime
37+
38+
39+
def shutdown(runtime):
40+
runtime.Shutdown()
41+
42+
43+
engine_times = []
44+
output_times = []
45+
46+
for idx in range(1, MAX_TESTS):
47+
engine, runtime = make_engine()
48+
engine_timer = Timer()
49+
run(engine, runtime)
50+
eng_time = engine_timer.get_time()
51+
shutdown(runtime)
52+
engine_times.append(eng_time)
53+
54+
output_timer = Timer()
55+
print('Engine {}: {}'.format(idx, eng_time))
56+
output_times.append(output_timer.get_time())
57+
58+
59+
chart = this_script.output.make_line_chart()
60+
# chart.options.scales = {'xAxes': [{'ticks': {'fixedStepSize': 5}, 'type': 'category', 'position': 'bottom'}],
61+
# 'yAxes': [{'ticks': {'fixedStepSize': 10}}]}
62+
63+
chart.data.labels = [x for x in range(0, MAX_TESTS + 1)]
64+
65+
engine_dataset = chart.data.new_dataset('engine_timer')
66+
engine_dataset.set_color(0xc3, 0x10, 0x10, 0.4)
67+
engine_dataset.data = engine_times
68+
69+
output_dataset = chart.data.new_dataset('output_timer')
70+
output_dataset.set_color(0xf0, 0xa7, 0x19, 0.4)
71+
output_dataset.data = output_times
72+
73+
chart.draw()
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
"""Display the total area of different area types in a graph."""
2+
3+
from scriptutils import this_script
4+
from revitutils import doc, selection
5+
6+
# noinspection PyUnresolvedReferences
7+
from Autodesk.Revit.DB import FilteredElementCollector, ElementId, BuiltInCategory, Area
8+
9+
10+
areas = FilteredElementCollector(doc).OfCategory(BuiltInCategory.OST_Areas)\
11+
.WhereElementIsNotElementType().ToElements()
12+
13+
14+
total = dict()
15+
for area in areas:
16+
try:
17+
area_type = area.LookupParameter('Area Type').AsValueString()
18+
if area_type.lower() != '(none)':
19+
if area_type in total:
20+
total[area_type] += area.Area
21+
else:
22+
total[area_type] = area.Area
23+
except:
24+
continue
25+
26+
this_script.output.set_width(400)
27+
this_script.output.set_height(450)
28+
29+
chart = this_script.output.make_pie_chart()
30+
chart.data.labels = total.keys()
31+
area_dataset = chart.data.new_dataset('area types')
32+
area_dataset.data = [round(v, 2) for v in total.values()]
33+
34+
chart.randomize_colors()
35+
chart.draw()

extensions/pyRevitTools.extension/pyRevit.tab/Analysis.panel/Tools.stack2/Analyse.pulldown/Find Range Of Roof Slopes.pushbutton/script.py

+8-4
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
from scriptutils import this_script
12
from revitutils import doc
23

34
# noinspection PyUnresolvedReferences
@@ -17,12 +18,15 @@
1718
if p:
1819
s = p.AsValueString()
1920
if s in slopes.keys():
20-
slopes[s].append(el.Id.IntegerValue)
21+
slopes[s].append(el.Id)
2122
else:
22-
slopes[s] = [el.Id.IntegerValue]
23+
slopes[s] = [el.Id]
2324

24-
for sl, elid in slopes.items():
25+
for sl, elids in slopes.items():
2526
print('SLOPE: {0}'.format(sl))
2627
print('ROOF ELEMENTS WITH THIS SLOPE:')
27-
print(elid)
28+
el_links = ''
29+
for elid in elids:
30+
el_links += this_script.output.linkify(elid)
31+
print(el_links)
2832
print('\n')

extensions/pyRevitTools.extension/pyRevit.tab/Selection.panel/select.stack3/Select.pulldown/List Selection as Clickable Links.pushbutton/script.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -5,5 +5,5 @@
55

66
this_script.output.set_width(200)
77

8-
for elid in selection.element_ids:
9-
print(this_script.output.linkify(elid))
8+
for idx, elid in enumerate(selection.element_ids):
9+
print('{}: {}'.format(idx+1, this_script.output.linkify(elid)))

pyrevitlib/pyrevit/__init__.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414

1515
PYREVIT_ADDON_NAME = 'pyRevit'
1616
VERSION_MAJOR = 4
17-
VERSION_MINOR = 1
17+
VERSION_MINOR = 2
1818

1919

2020
# ----------------------------------------------------------------------------------------------------------------------

pyrevitlib/pyrevit/coreutils/__init__.py

+4
Original file line numberDiff line numberDiff line change
@@ -266,6 +266,10 @@ def prepare_html_str(input_string):
266266
return input_string.replace('<', '&clt;').replace('>', '&cgt;')
267267

268268

269+
def reverse_html(input_html):
270+
return input_html.replace('&clt;', '<').replace('&cgt;', '>')
271+
272+
269273
# def check_internet_connection():
270274
# client = WebClient()
271275
# try:

pyrevitlib/pyrevit/coreutils/git.py

+1
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@ def __init__(self, repo):
5151
self.head_name = repo.Head.Name
5252
self.last_commit_hash = repo.Head.Tip.Id.Sha
5353
self.repo = repo
54+
self.branch = repo.Head.Name
5455
self.username = self.password = None
5556

5657
def __repr__(self):

pyrevitlib/pyrevit/coreutils/logger.py

-2
Original file line numberDiff line numberDiff line change
@@ -75,8 +75,6 @@ def _log(self, level, msg, args, exc_info=None, extra=None):
7575
msg_str = str(msg)
7676
else:
7777
msg_str = msg
78-
# get rid of unicode characters
79-
msg_str = msg_str.encode('ascii', 'ignore')
8078
msg_str = msg_str.replace(os.path.sep, '/')
8179
msg_str = emojize(msg_str)
8280
if level == logging.INFO:

pyrevitlib/pyrevit/loader/basetypes/_config.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ public static class ExternalConfig
55
public static string doctype = "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\"><head><meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\" /></head>";
66
public static string htmlstyle = "font-size:9pt;font-family:Verdana;margin:0px 0px 15px 0px;padding:0px;height:100%;scrollbar-base-color:#EEE;scrollbar-face-color:#DDD;scrollbar-highlight-color:#EEE;scrollbar-shadow-color:#EEE;scrollbar-track-color:#EEE;scrollbar-arrow-color:#666;";
77
public static string defaultelement = "<div style=\"margin-top:3px;margin-bottom:3px;padding-right:6px;padding-left:6px;\"></div>";
8-
public static string errordiv = "<div style=\"background:#f9f2f4;color:#c7254e;padding:10px;\"></div>";
8+
public static string errordiv = "<div style=\"margin-top:10px;padding:6px;border-top:5px solid #c7254e;background:#f9f2f4;color:#c7254e;\"></div>";
99
public static string ipyerrtitle = "<strong>IronPython Traceback:</strong>";
1010
public static string dotneterrtitle = "<strong>Script Executor Traceback:</strong>";
1111
public static string progressbar = "<div style=\"position:fixed;bottom:0px;width:100%;height:8px;font-size:1pt;border:0px;background:#EEE;\"></div>";

pyrevitlib/pyrevit/loader/basetypes/baseclasses.cs

+1-2
Original file line numberDiff line numberDiff line change
@@ -61,11 +61,10 @@ public Result Execute(ExternalCommandData commandData, ref string message, Eleme
6161
}
6262

6363
// Get script executor
64-
var executor = new ScriptExecutor( commandData, message, elements);
64+
var executor = new ScriptExecutor(this, commandData, message, elements);
6565

6666
// Execute script
6767
var result = executor.ExecuteScript(_script, _syspaths, _cmdName, _forcedDebugMode, _altScriptMode);
68-
message = executor.Message;
6968

7069

7170
// Return results

0 commit comments

Comments
 (0)