Monday, April 6, 2015

Conceptual Masses - The Easy Way To EASE

If you design sound systems like I do. Then you are probably familiar with "EASE" by AFMG. This is a great package for analysis and performance of a sound system in a room. You select the materials of the floors, ceilings, and walls then get a visualization on how the speakers will perform in that room.

One of the things that all these specialty engineering software packages have in common, is a cludgy, annoying, and antiquated feeling user interface. Which requires one to draw out faces and vertexes manually in order to create the shape of the room.

Think about the people who make this software. They're engineers! Nerds! Programmers! UX design is more of an afterthought, as their primary focus is creating really neat tools to do complex math that would ordinarily take you a lot of time to do by hand. And for this EASE is great.

But I find the model creation process exceedingly tedious, especially when a lot of the projects that I am involved with have a perfectly good Revit model with all the 3D data you'd ever need.

However, all that 3D data is NOT what programs like EASE need. They need much simpler geometric objects to do their calculations. In fact, more data is not necessarily better, and can lead to increased calculation times and even erroneous results. Which is why simply exporting a 3D view in Revit as a DXF will do you no favors. You'll likely spend more time attempting to clean up the results of the export, than if you would have modeled it within EASE from scratch.

Enter Revit's conceptual massing tool. Which is one of the friendliest ways, that I've found, to create simple 3D objects (masses), that can easily be exported to a DXF file for import into EASE. The conceptual massing tool is geared towards architects, who often use them at the pre-SD phase of a project, to create what the building shape might be before they begin documenting it with actual walls/windows/floors etc.

It also allows for early building energy performance calculations via Autodesk's own Green Building Studio. You can also export gbXML mass models for use in other programs like TRACE 700 (which is used for HVAC take-offs and loads).

But they're just as handy for sketching out a quick 3d blob of what the room you're attempting to calculate in EASE is.

NOTE: This article assumes you have decent Revit skills, you'll have to read between the lines, but it's pretty straightforward. This article also assumes you have a copy of Revit... but that goes without saying, right?



Take this high school commons. It is an odd shape, with lots of complex features. Lots of which I don't particularly care about (I could care less about curtain wall mullions --- simple glass is fine).

  1. I'll create an in-place component from the Architecture ribbon in Revit. I'll pick the Mass category.


  2. Use "pick lines" mode to create the rough outline of the room you'll extrude to a Form.
  3. Trim/extend these lines to form the perimeter of your room.
  4. When complete, click the Create Form button to turn the surface into a 3d Mass.
  5. From here, you can do additional modifications using the mass tools to make it fit the space. I'll leave the details on how to do fancy modeling to the many other resources on the Internet you can search for. For the purposes of this article, we'll go straight to exporting to DXF and importing to EASE.
  6. In a 3D isometric view, select the form, and use the "Isolate Element" mode so that ONLY this Mass is visible in the 3d view.
  7. From the Revit menu, export the the Mass to a DXF.


  8. When prompted, make sure you leave the temporary isolate mode ON!
  9. From here you can either verify the results in AutoCAD, or you can just try importing it. We'll just import it and see how it goes.
  10. From the import DXF interface, select these options, which will clean up the input of the DXF. Also, don't forget to modify the units to match.

  11. If all goes well, EASE will prompt you to assign materials to layers it detected in the DXF file (there's none, so just click OK)...

  12. Save the file as an FRD somewhere, open it and voila:


You can now place your speakers and begin adding audience areas to test your system.

There are alternatives if you don't work at a place where tools like Revit or AutoCAD are available, a good free solution would be to use SketchUp to do the same thing. I just find using Revit easier since that's what I have the most experience with.

Plus, with Revit, since the architect's model is already there, it's easy to tweak the mass to match the 3d geometry. In SketchUp you'd have to interpret an architects interior elevations, sections, etc in order to figure out what the room looks like in 3d.


Thursday, December 26, 2013

Mass SMS with a Google Voice python script

Using the Google Voice interface. Or even your normal phone interface is tedious for sending mass text messages. I am sure there is an app or program that can make it easy to do. But I wanted to make my own.

Also, I don't know how to program (seriously, I don't) --- but I have done lots of simple scripting, so I figured this would be a good reason to force me to learn some things.

I am using Arch Linux. But I imagine ubuntu or windows will be pretty easy to do as well. If you're familiar with cloning source in a Linux environment, or installing Python things in a Windows environment, you'll have to adjust things.

Pre-reqs:

  • Have a Google Voice account
  • Have a very simple CSV file with names in the first column, and numbers in the second column
    • This means you'll need to have friends/family members :(
  • Have python installed (I have python 3 installed, but this script works better under 2, hence the "python2" commands issued below)
  • Have this python dealie:  https://bitbucket.org/fracai/pygooglevoice

 

 What do:


Unfortunately, the above python code linked can't handle 2-step authentication. I did a bunch of searching to find out the "fix" was to replace a single line in "voice.py"

So make a directory and clone the code:

hg clone https://bitbucket.org/fracai/pygooglevoice

Now you need to edit pygooglevoice/googlevoice/voice.py where it has:
Change it to read:

Now that you've fixed it, install the code. Go back to the pygooglevoice directory and run:
sudo python2 setup.py install

This will install all the goodies to /usr/lib/python2.7/site-packages/googlevoice/

Now you'll have a "binary" available for you to run (gvoice), but since I like to be fancy, instead I'll use the commands available in the code to make my own handy dandy script. I used these examples as my guide.

Then I made a CSV file in LibreOffice that just contains the name and the number. I imagine you can export CSV from your Google Contacts or Outlook Contacts if you'd like. Then just clean it up so the first column contains the name. And the second column contains the number.

Here's a dummy file:
https://dl.dropboxusercontent.com/u/22838635/code/example.csv

And here's the "code" that makes it all happen:


Here's a screen capture of the fun:


More things:


Just remember that if you use 2-step authentication, you'll need to enter your "SMS Pin" (which could be your authentication code generated from Google Authenticator).

Also, I'm not sure how Google Voice handles "spam" --- so I made sure to have the script pause for 8 seconds before it sends a message.

Shout-out to my buddy NouberNou, who helped me optimize the code (he's the uber-brains behind the Advanced Combat Radio Environment (ACRE) for ArmA). If you're curious to see what my first version looks like (and get a picture of how my code-dumb brain works) here's a pastebin link:
http://pastebin.com/8iA7vs0k