Revit Productivity Program, Part 2.

Compile Program & give to Matt & Dan
It would be good to have a compiled program and get Matt & Dan to test.
Need to compile into an installer and executable.
Also need to make video on how to use the different keys.

I have a multi-pronged approach to investigate at this point:

  1. Identifying and testing the software keys and getting them to work
  2. Making them generic so that I can share them
  3. Look at licensing file setup for program and start testing/compiling/testing- Yearly subscription or buy outright?
  4. Look at modular add-ons for program- basic plus add-ins to improve – pay more for add-ins
  5. Look at help file and videos and website for accessing information
  6. Look at website setup for selling program

Identifying and testing the software keys and getting them to work

I’m doing zoe’s job and looking at alternative items. I need others to test them out too and suggest other things to automate.

Alt Nav a lot more steps than Keyboard Shortcuts

Keyboard Shortcuts take a lot less steps than Alt Nav method. So if there are less steps then there is less chance of interrupt and disruption of code.

So preferred method would be to use Keyboard Shortcuts , but therin lies the rub, they are more popular and so there is a far more likelihood of conflict with existing systems.

So this is where you need people to upload Keyboard Shortcut import XML file so that there are multiple Keyboard Shortcuts for the same command, but you ones will be far longer and less chance of conflict. Say 4 chars long min.

Maybe a duel test with Alt Nav script file and also Keyboard Shortcuts script file for comparison. Or 2 files , each with alternative methods. People can then choose which method they prefer.

Making them generic so that I can share them

This is going to be refining with ini file and also seeing if I can use Alt Nav keys.

I need to explore this more as there will be issues with Hotkeys and remapping them – The keyboard shortcuts may need extra imports for longer ones to use.

Keyboard Shortcuts import longer names

One thought is to also assign longer names to standard keyboard shortcuts, so wa for wall could also have wa11 as well, and the Script could call the longer Keyboard Shortcut. This could reduce conflict with existing Keyboard Shortcuts on persons Revit setup.

This would then allow you to do a GUI setup for people to assign their preferred Keyboard Shortcuts to the new commands you are adding.

This is something worth experimenting with, as it allows for far less conflict with their existing schema and they can define their own Keyboard Shortcuts for the front end keys.

I need to test multiple Keyboard Shortcuts to a command to see that there is no conflict/overlap.

Look at licensing file setup for program and start testing/compiling/testing- Buy outright or Yearly subscription- saas?

I need to start setting up this file and a directory to start the testing- to begin with I’ll see if I can use the #include for all the code so I don’t have to add the code bits into it until later.

I wonder if writing license to registry may be the better way to go.

This is a test/compile to see that the setup works.

Look at modular add-ons for program- basic plus add-ins to improve – pay more for add-ins

This needs to look at modularity and including other items with different files and functions and install them elsewhere.

Also the issue of paying more for different licenses for add-ins – how would this work? Different packages or just add-in modules one at a time and allow people to pay for add-ins as they go?

With this I want program in one location but scripts somewhere else, so want to put them in a sub-directory somewhere else with the include:

Look at help file and videos and website for accessing information

Firstly – YouTube Videos for short demo’s – make them private and link to help page, also in tooltip ? URL help?

Efficiency of tool over standard method? Maybe a timed comparison

Website for program, license and download software- so a woo commerce site with help pages at the back.

Look at website setup for selling program

Maybe can start with a freenom one and then move onto a paid one if I need to. Or use the .xyz one to begin with? No home to host this domain, so cannot use at the moment

Maybe but it can’t find

I need to start having a website then I can look at help pages and also front end for selling.

May also be able to sell course (link to Udemy to begin with) and

Sell eBook – problem with eBook is it would be cheap, need it to be in patches to sell modules – not all together.


Need to have others test the program. How to do this?

Toolbar in Revit – Skrommel’s Barnacle

I’m not sure if this is worth pursuing but it seems to be a handy way to add a toolbar- not sure if it works in Revit but may be worth exploring. I played around with getting it to work in Notepad but some of the icons were not coming up. Looks as if it may be handy. A way to learn about toolbars and ribbons.

Maybe something to explore later.

I did tinker with it on main surface pro and the icon bar was directly over the file ribbon on Notepad, also on Notepad++ and it didn’t show up on word at all. So that didn’t work well. I couldn’t see where the x & y locations for putting it on the toolbar was located, or under what control. Since it’s old code (2007) I’ll leave it for now. An interesting idea.


Saturday 15 January 2022

I’ve got a simplified password and folder system working at the moment, with RunShell Script running from one directory and all my Revit scripts in another directory- So a start for moving things around and getting the basic program started in a licensed environment. This is , at present, based on a full License, I’ve yet to introduce the TRIAL period license.

  • the Revit tray menu should have Edit file removed or else you can find where files are to be hidden easily.
  • I’ve still a couple of Full paths that will ed to be resolved- One, from Revit Tray menu, path to Settings.ini file -for editing variables – This could later be developed into a GUI instead. Also in RunShell.ahk there is a full path to the Revit.ahk file . These both need to be resolved
  • I’ve added in the settings.ini file a SLEEPVAR for VizGraphics as this goes too fast on my PC and has to be adjusted. I’m expecting to do other fine tuning things to add to the .ini file
  • Compiling- from video above it looks like you can use the AutoHotKey _H for better compiling, but I get, on my Surface Pro issues with Antivirus program trying to delete my .BIN files , also need to choose specific bin file and not use default. See first image below. I did have this issue later when I was using freeFileSync, the AutoHotKey _H folder seems to have a virus in it, so I’ve deleted it.
  • It won’t run the .exe on the laptop but if I move the compiled file across to NAS it runs fine. If you right click on file & goto Properties on the file and then choose security tab, if you change to full access it works. (Other methods all recommend regedit but my settings are correct there)- see 2nd image below

So progressing with program running from directories and also settings.ini file to allow for adjustments.

Lots of other things to do, but a start.

Saturday 2 February 2022 – Losing momentum

I seem to have lost a bit of fire on this project. No one has taken course on Udemy (although first month was advised that would be slow) as it is top price in Udemy maybe driving people away.

I’m at a bit of an impasse with getting it up and running. A few issues:

  • merging KeyboardShortcuts.xml
  • Remapping keys by user
  • .exe & .ahk
  • help files /videos

The person using the program has to merge my longer Keyboard Shortcuts into their existing KeyboardShortcuts.xml file. So I need to think about a video showing how they do that.

I still have to create a gui interface to be able to allow them to re-map the keys to the ones they prefer to assign to the Keyboard Shortcuts. Some, like tSpace need no remapping but nn and sn need to allow people to map their own.

Compiling main .exe file ok but I’ve linked all the other programs to it, so I have to hide those somewhere else so people can’t easily find them. I haven’t even begun to look at that yet.

Help files, I’ve given explanations of what each key does, but need to do a video to explain what steps to take. I tried inserting video at a specific time but that doesn’t seem to work when embedding in web page, it just starts at beginning of video, whereas I want a person to go directly to the applicable point in a video related to a specific key and how to use it.

Help videos are an alternative to partially exposing code, as you need to show steps and sequence of commands.

Monday 14 February 022

Yesterday started to create build file. I want a prototype for Dan & Matt. To see if they can load and use.

I also want it to be setup correctly for the future so am trying to do a proper build with the security of distribution to different places so structure will carry forward. I don’t want one I give Matt & Dan to be shared out and used by others, so put security into place. So need to have 1/license key (which can be re-used over and over, and 2/Duration time, say 3 months

I’m having a few other issues too. With Dan, he needs to install without admin rights to his computer, so I want to install it into areas he can access.

Also name is a bit clunky, maybe FastKeys4Revit (although that’s hinting at how its done) – throw a few out there PowerKeys, RevKeys, Type?, Tap?, Digit, idea of typing and fast, speed , power, MaxKeys4Revit KeyMax4Revit, RevMaxKeys, MaxRevKeys, Click, Keys4speeD, Key2Speed, KeyS2Speed,KeyDestination, KeyResults, CleverKeys

Maybe also tell Revit AddOns Blog

First, get the bloody code working, compiled and license protected and on timer. I want software out there that WILL expire.

2 products to sell now, app and Udemy course. Also discount for multiple licenses maybe.

Maybe third product- frequency + Spreadsheet for ROI, maybe a giveaway?

Install points

  • Can put fixed paths as can use A_UserName in path so will always load to same directory on any pc as long as C drive, also paths are obscured in compiled code, so can have paths in main code (check)
  • Need counter for days in hidden 2 dir

Saturday 19 February 2022

Slit into going lots of ways. MVP minimum viable product. What are priorities for this? First 3 items below are important.

  • People can download it and run it on their PC’s- OK Done
  • People can buy a license & open license to run-OK done
  • Issue with nn freezing and not completing?
  • People can do ROI- This is not critical though
  • People create their own hotkeys- look at labels & goto

Sunday 20th February 2022

Spacebar in hotstrings

You can,instead of :X:n:: for nSpacebar, also do :X*:n :: (add space after n before ::) and so you can reverse this to :X*: n:: putting space before n , this may cause a few problems if you are writing text though, in a sentence, maybe use comma though instead of spacebar, or double spacebar? May be handy way for productivity

Still trying to remap hotstrings

Dynamic Hotstrings? from AutoHotkey

loop through and find existing ‘:nn::’ and remap to ‘: n::’

;can you do this in an .exe file? after its loaded?

I came across the hotstringHelper, select text #h select text and make a new hotstring. This is good for someone who uses AutoHotKey hotstrings a lot, although really just cut/paste

9.44 pm got video out and web page setup for use, so now  Go to PowerKey4Revit Keys & Use PageLIVE 

Currency on site

I was a bit worried about what I was charging and decided on 19.99 special and 29.99 normal in US$.

Monday 21 February 2022

I thought this article interesting about Offering other services on the woo site, one being booking consultation for work. This might be a handy thing to add. Article on virtual products to sell on site

I have now done the ROI video for the site and updated the video on that item.

I don’t like my shopfront or product setup so need to do something about a different theme for the site.

Activating license vid

I may need to do a video to show how to activate the license.

Writing good copy to sell

  • A detailed description of what the product is and what it’s used for
  • What the customer receives when they make their purchase (one file? Two? Eight?)
  • How they will receive their file(s) (instant download, email, or both?)
  • How the product will benefit them or improve their life — as Buffer says, customers don’t buy products, they buy better versions of themselves
  • A call to action

Difficulties re-mapping hotstrings

After morning research over 3 days I can’t seem to figure a way to remap the hotstring abbreviation. A bit frustrating really.

The only way I can think of doing it is to leave the main file as a .ahk file and running a find/replace for all the “:nn:: to the preferred key. You can’t do this when the program is compiled.

An alternative is to offer to make HotKey to point at a label/subroutine and allow them to create hotkeys,  these work even in a compiled script,  but then those are different to hotstrings.

Tuesday 22 February 2022

I followed up on the suggestion of adding consulting services to the woo site and have used calendly to allow people to schedule meeting. A bit steep but another service on offer.

I do need to look at another theme as the shopfront one is a bit limited.

Detail/Dynamic Text Notes – Worth developing

While doing vid on ROI I started playing with Detail/Dynamic Text Notes , the pipe, duct and arch ones, I need to have radio buttons on each line so they can reuse notes and also use ini file to allow others to pull list data in for files.

A bit of a bendy one, in the dynamic Duct pop-up box it wouldn’t write the symbol because that gui is in ahk not revit, so I had to use

#If WinActive(“ahk_exe Revit.exe”) or WinActive(“ahk_exe AutoHotkey.exe”) to cover both allowing symbols to be used in either situation.

Updating Time Counter – Original wrong

I did notice that my 30 day countdown was a bit wacky. It was incrementing by about a week, each day. It was setup on a bit of a mixup. I was using A_NowUTC thinking that was unix time, but it weren’t!!! It was universal time, so my calculations were wrong. So I re-writted it to work using the EnvAdd & EnvSub functions to get & check the dates. So I had to recompile – now v0.03 (20220222) and upload to site to Trial & annual product pages.

So today has not been that productive, although I do have a simpler theme on the site, Blue.

I also changed colours for highlighting & boxes in aText so I can update the colours later if I wish. The box is now blue. I created a snippet for the colour so can change it later, but cannot go bac kand re-do existing boxes easily.

This is the issue with changing themes, you spend a lot of time fluffing around with them.

Wednesday & Thursday 21, 22 February 2022

This video was useful for setting up products on page:

Updated license gui so colour is same for all guis.

A problem with download from site, I found the program zip file was empty so had to reload up one to site.

I was setting up dynamic notes to add a couple to the app for an example and I wondered about having an ini setting for text type, no arrow, segments or curved. I initially wrote a function but it would only return one variable and I wanted multiple lines of command then I went to label/subroutine and that worked really well. So I only have one script now, nn, and depending on ini setting (0 to 3) it chooses text type. less code and cleaner. I need to extend this to other commands that use text type. like TSpaceBar and the dynamic text notes. Some only have one or 2 ( keywait , LButton , D       then       keywait , LButton  ) So I need to check lines for this to see if I put less in the subroutines and more in the scripts so can use the same subroutines across the program rather than have multiple subroutines all doing the same thing. Need to test this out.

 Offer Hotkeys for commands  – then have to make the others subroutines. This seems to work fine- need to set them up then make gui for them.

Trying to figure  how to switch between pop-up of days left on license and info in menu tray . Maybe a function- but has to do trial & Anal license. Don’t want pop-up all the time, or a setting in ini file to switch, but need to show in Tray somehow.

Tidied up and issued v0.04 have only one text command with ini arrow options and got the 3 gui’s up and running. Still no joy with hotkeys for users.

Friday 23, February 2022

I can get hotkey remap to work on a small file that I’ve stripped from original with Keyboard Shortcuts that I setup. The issue seems to be about #if winactive . You can put , above the list of hotkeys another line:  Hotkey, IfWinActive, ahk_class Notepad++  and that allow all the hotkeys under that to run in Notepad++, but if you try to put 2 lines it doesn’t work.

So may need 2 lists of hotkeys, with ones for popup gui’s listed with a ifwinactive line for ahk.

It works with class and with .exe , so I need to test in Revit.

I tried in Revit but No go- still have issues with the code. I thought that Groups might sort out some of those issues Using multiple programs for #IfWinActive

but that seems not to work, works on simple but somewhere in PowerKey4Revit it seems to break. I thought I’d tracked the bug down there, obviously not.

I had another go with hotstring(), supposedly it will work with X and reads text as label , but cannot import variable in

No point in building a GUI for users to change SpeedKeys until I have it working. It needs to be working before setting up GUI.

I’ve got pop-up each start for license to be set by a variable in the ini file, and that seems to work ok.

Lots of symbols from seeing what was available from revit context menu to add to my hotstrings. The unicode is different to the Alt+ ones. Some of the unicode work, others don’t, eg CL (centreline &

I ended up playing with the unicode and found a great website for unicode Unicode site and these seem to work in Revit, although I still have to test some of the emoji ones, lots of fractions which will be handy for imperial in US.

Read Hotstrings from another file and use #include-NO because it compiles it when it compiles so set in stone

This may be a method to do it article on loading hotstrings

Further down article it says no, dynamic hotkeys are the way, apart from I can’t understand the program.

Sunday 27 February 2022

Hotkeys for Users – still a challenge

I’ve tried GroupActivate but I think this is for triggering other programs in the groupAdd list, I thought it might group a lot of windows together so hotkeys/hotstrings work in those in GroupAdd but that is not the case as the hotkeys/hotstrings work indiscriminately in any program if you do not have ifWinActive to specify programs to act in only.

I was having problems reading thew ini file for hotkeys , moving the iniread to the top seems to work, but still cannot activate with Hotkey()- Lots more attempts but still no success. Moved code to top of script, initialy had some activity but stopped shortly after.

Vis graphics with ini file seems to be working on one level, have to trial it on a 2nd level. Trying to make it versatile so that users can add their own Keyboard Shortcuts to speed up their workflow. Need to look at 2nd level , and also pauses. See if can read ini to speed up.

Monday 28 February

No return between iniRead and Hotkeys. – Now I’ve moved hotkeys() into Revit area (so license stuff does not affect it.

Tried using #warn but debugging silly stuff. Although I did find that I could tidy up viz graphics ones by moving #If winctive Revit at bottom of that command script so reset, after doing pop-up to revit main program. Maybe I’ll have to learn error codes. This vid for ahk. I downloaded code so will have to trial it.

Hotkeys #ifWinActive needs to have same as below, so ( if Revit & ahk then hotkey() also revit & ahk- all have to be the same, it won’t do 1/2 . Struggled with Hotkeys() still no joy. Am wondering if I have to split the code out again and only have Revit stuff running only.

No real success with programming,did not get further on with Hotkey() so same as before. ahk.exe Revit.exe fine, did not need class for revit, but when used only did one opened instance of Revit rather than 2. So what I have is OK I think. 

Tried learning about errors so that I can do something with that in the program, first crack did nothing. Will need to do some more testing. #Warn was quite useful for tidying up code and also in viz graphics  when if popup active to get back out of that by going back to revit main within the code. So that was handy to find out. 

No luck with  OGR (reset) , the controlclick doesn’t go to the buttons in the popup. Doesn’t move at all. Issue the popups can be different sizes so buttons in different location. Only way to get size of popup and then calculate Y from bottom of popup to hit the button using click

Started on qe1, equiv of qw1 for next level, need to do work on that to develop it. Needs some testing. To work out variations. CrossHairs on Display handy but I created anther with red crosshairs so stands out on a white background, yellow good for black background. Can see where mouse moving to on the screen.

Tuesday 1 March 2022

Have qe1 to 5 working so can do 2nd level items at one go. First crack at video tutorial

What about purge? Script for that, do multiple times. Not that important really. An idea to think about later

Wednesday 2 March 2022

qw1 to 5 & qe1 to 5 video and also r1 to r3 & mSpace for mirror too. video for r1 and mirror.

Just having thoughts about qa1 to 5 for annotation viz graphics, ShiftTab to go backwards for those. That may also work for “og” reverse eg “gr” a reverse, can’t use ogr as the”og” is triggered first before “r” added. So need to think command, using tab and shift tab to get to buttons to automate the process.

tidied up TT(,….) the notify “Toast” and turned off “Tooltip” to see if that is more useful.

Thursday 3 March 2022

Issued v0.06 just so there is an update , with Viz graphics, rotate/mirror & og/oh.

Spoke with Grant and he seemed interested in the tool. Asked about worksets and moving stuff between them. I’ll have a look at that.

Friday got the worksets automation working and about 9pm did a video for him for 2 categories to demonstrate it working, so have PoC for the process. I’ll most probably hear from Grant early next week about it. Hopefully. He suggested it and I resolved it. Maybe get something working, do a “frequency file” and let them try it out then charge them for developing the tool.

Saturday 5 March 2022

I’ve finally found something that will trigger a hotkey, its called DevKeyboard from 2015. I have spent a day trying to get it to trigger a hotkey and have been creating weird hotkeys eg “^<” so that a long press on an individual key will trigger the hotkey associated with a command. I spent ages trying to get it to work with hotstrings but no joy, so have obscure hotkeys so they wont interfere with peoples keyboard shortcuts or hotkeys.

Now I need an interface for that to be plugged in and have the code in the main script. A happy boy getting some user choice in the process.

Monday 7 March 2022

Spent most of Sunday rewriting DevKeyboard to work with ini file and shoe horn it into PowerKey4Revit but the trigger for the hold down happens immediately, so the iferror function not kicking in for some reason. I spent a lot of time with GUI and interface, you pick a command from pulldown list and that will fetch the hotykey to assign to that key, unfortunately the keys don’t hold and disappear. Maybe a bit too elaborate at this time.

3 ways to go, keep devkeyboard independanty of PowerKey4Revit and just trigger it when you run PowerKey4Revit or Debug and adapt to ini file or go back to separate files for storing each key.

I’ve bracketed out the iferror in each letter so that seems to stop the other stuff writing unless the error occurs. Need to test in Revit.

Am finding that there are a few obscure scary keyboard shortcuts mapped , eg +^#- seems to do US in notepad++ and trigger zoom things in browser and something nearby triggered magnifier too. So I will need to check hotkeys before assigning them to commands.

HotKeys & HotStrings in conflict

After a couple of days at Hotkeys with DevKeyboard it seems it conflicts with the Hotstrings I have for the keys already. To get around this can do:

^<:: goto gx    ;HOTKEY
:X:g::  goto gx ;HotString
gx:      ;LABEL ; g+space = region rectangle and click 2 points 

Tried for DevKeyboard and spent 2 days on it, in the end it doesn’t seem reliable   So although tried to setup with ini file and new GUI it failed at the end. I’ll pause for a while and think about that – Maybe  another method, take away typing and only have hold down

Stripped the letters out and only had keywait and if error, that didn’t seem to work too great either, although could take the {back 1} out so that didn’t delete the text (some of the A1, when selecting text it erased the text, a2 and a3 didn’t , all a bit weird)

Tried making HotStrings 2a, 1a, 3a etc and connect to the hotkeys in the Program. That sort of worked but was buggy in some of the commands. the Region one, the first point was not the first point of region.

So far v0.07 has nothing to offer over v0.06 maybe a bit of a pause for a while.

Worked on Grant’s Reference Plane after resetting Workset app and sent it off. He’d sent a gif demoing the process he wanted me to automate.

Tuesday 8 March 2022

Added crosshairs and tooltip mouse position to PowerKey4Revit

Mouse Coordinates- lots that can be done with this & ini file

I suddenly realised that there is lots that you can do if you know mouse position. The user can setup their own routines to be able to do bespoke operations of their own choosing in a particular environment, like VG, worksets and a few other items as well. You just have to create the basic sub-structure and let them go for it.

  • worksets- move between & possibly move items between
  • Viz Graphics, but loop so they can add multiple to tool
  • Properties & Project Browser
  • Schedules= going in after setting up template and manipulating Properties Browser

Problems with mouse coordinate file, it would only run in windows if it ran as a separate program. So compiled separate program but I think I may have to add some ini variables to adjust mouse cursor coordinates, so they can be tweaked by others.

So doing video I noted that you can see user for revit license so I didn’t want to show that. So I need to get my 2015 version running.

Wednesday 9 March 2022

Car stolen so that disrupted my work flow. Time with police & insurance people getting info and sending info.

tooltip coordinates added calibration vars to ini file so people can get accurate location from setup in window. Recompiled tooltipcoordinate.exe file so that is all good for group compile and added fie to NSiE setup list.

Looking now at looping through ini file after a section header to get variables and put them somewhere else to read to loop through them as chunks. Can get key so far but not value

PowerToys for Hotkeys

I thought about issues I was having with DevKeyboard and hotkey in AutoHotKey and I wondered if there was an external program that would let you remap your keys, but only in a specific program. For windows PowerToys does this, so I’ll have to look at testing the program. PowerToys download

I hope this gives people an alternative to remap keys. Some keys not available, like ampersand.

Thursday 10th March 2022


Grant did a demo using GIF and I was impressed and saw that there was a free software givaway for that on one of the sites so downloaded it and tried it out, it can copy from videos or capture part or all of your screen. In combination with showing key strokes this may be a useful way to do demos without uploading to YouTube . It may be a handy tool to quickly demonstrate use of PowerKey4Revit tools so may be worth a crack.

VG iterations.

Still trying to do loops with arrays, I’ve been able to split into sub arrays so have data stored, now I need to be able to iterate through it with a function to be able to repeat the process as many times as people have lines in ini file. I’ve got the code setup as a test and am trying to debug that now. Last thing 9pm got it working for 4 steps.

Friday 11 March 2022

Trying to download revit to Bedroom PC.Its handy to have for testing.

In night was thinking about looping for VG. It would be good to have:

  • Create different .txt file to store automation
  • Gui for choosing file
  • check which tab you want to be on (model, annotation, etc)
  • add location where setups stored

So that is my mission after testing my current VG iteration code.

Item 1. Save as text file so that its in the same format as the “nn” so users will be working with same file structure.

So I’ve released v0.07 and it seems to be working. That is good. I need to do some videos on it and also aon shop page show new features – a catchy spoiler would be good for that.