Friday, April 21, 2006
Trace 700 and Carrier HAP
These notes provide a reference for using the espace feature an Autodesk Building Systems 2006 to prepare CAD geometry for input to the gbXML-aware Trace 700 version 6.0.2.1 and Carrier HAP version 4.3 energy analysis programs. At some point this post will be split into two posts -- one for each program. Please comment on any errata or suggested process improvements.
The interoperability paradigm between ABS and Trace 700 or Carrier HAP can be characterized as 'estimator & engineer'. While Trace (but not Carrier HAP) has the capability to send data back to ABS, it is simpler to think of the information flow as a 'one-way data upload':
Process Flow: ABS geometry to Trace 700 or Carrier HAP via gbXML
The interoperability paradigm between ABS and Trace 700 or Carrier HAP can be characterized as 'estimator & engineer'. While Trace (but not Carrier HAP) has the capability to send data back to ABS, it is simpler to think of the information flow as a 'one-way data upload':
- ABS is the 'estimator', extracting area takeoffs from the drawings, and communicating geometry data to Trace 700 and Carrier HAP via gbXML. Trace 700 and Carrier HAP are the 'engineers', performing energy simulations and load calculations based on the takeoff data.
- While in theory minor updates can be performed on the geometry model and the gbXML re-exported, extreme care must be taken to assure that existing surfaces are actually updated and new surfaces are properly added to the energy simulation.
- If updates must be made to the CAD model and re-exported to the energy simulation, is recommended that all existing geometry in the energy simulation first be deleted before importing the updated geometry.
- At first this might sound like a limitation, but it is actually precisely the same simple procedure used to initialize a new project from an existing one.
- Whether creating a new energy simulation from an existing simulation, or updating your current simulation in either Trace 700 or Carrier HAP, it is a relatively simple matter to delete all of the existing room geometries, import new geometry and reestablish room, system, and plant relationships.
- To start a new project instead of updating an existing one, and at this point simply 'Save as' to a new file name.
- In either case, you are now ready to start importing new geometry data.
Process Flow: ABS geometry to Trace 700 or Carrier HAP via gbXML
- Define the espaces in plan by copying from a previous drawing, or utilizing the 'auto-generate espace' feature. Note espace editing functionality is extended by cycling the Crtl key -- hover over an edge or corner grip for a tooltip prompts. Be sure to save the drawing periodically!
- Take care to assure that 'exhaust only' zones such as toilet rooms and custodial closets are included in the spaces from which they are to draw transfer air, do not model the spaces independently.
- Determine the ceiling height, ceiling thickness, and space above ceiling from the architectural sections or 3D CAD model, and assign to the espaces.
- Add additional vertices at wall tees, and define space adjacencies. Additional vertices will likely need to be added in this process. An espace can share a discrete surface with only one other surface.
- After all internal adjacencies have been defined and verified, draw polylines around interferences such as elevators and shafts, and deduct these areas using the 'interferece add' feature. If you need to define or redefine an adjacency that meets at an existing interference, temporarily remove the interference.
- Be sure to save the drawing periodically!
- Assign the espaces to reasonable zones as they likely will be served in the HVAC design. For example in a school, treat each individual classroom as a zone, selected multiple administrative spaces as a zone, and staff workrooms, offices of administrators, or conference rooms as separate zones.
- Zoning is ignored by Carrier HAP, but is recognized by Trace 700 after gbXML import. Zoning can be reorganized as required for each alternative analyzed by Trace 700.
- Verify interior versus outside walls by selecting all of the zones and selecting 'Edit Location Type' from the context menu. Change interior vs. exterior as necessary by clicking the circular edge grips. Identifying interior and exterior walls is important for both Trace 700 and Carrier HAP.
- Refine the espaces by adding door and window openings. For Trace 700 analysis, also assure that all surfaces and openings have unique names.
- Switch to an isometric view, then select an espace and right click. Add door and window openings by clicking on the 'Edit Surfaces' item from a context menu. Refer to the ABS documentation for step-by-step instructions on this procedure.
- For Trace 700 analysis, prepend the room number to each of the surfaces and openings in order to make them unique:
- The Trace 700 gbXML import routine does not differentiate between surfaces of the same name in different rooms.
- Carrier HAP on the other hand auto-increments like-named surfaces in its gbXML import routine.
- Now save the drawing, and...
- Export the espaces via gbXML to disk file. Pay careful attention to where the file is being written -- the default location is 'My Documents'. This location can be overridden to the project directory, but the override is only sticky for the current drawing session.
- Note the gbXML export error report.
- All warnings stating 'No space type specified for selected space style' may be ignored. Warnings stating 'Interior surface does not have an adjacency set' should be resolved.
- Also requiring resolution is the case where the error report shows same espace has been exported multiple times.
- It may be attached to more than one zone, or
- Perhaps a given espace was copied but it's name not updated.
- You may wish to press Alt+PrtScn to capture the error report window, then open MS-Paint and paste the captured image into it for reference.
- Verify the espaces by checking a sampling of the rooms created in Trace 700.
- Within Trace 700, floors must be created for each room having exposed or slab on grade floors, use an 'F' factor of 0.54 at the prescriptive energy code value.
Tuesday, April 18, 2006
ABS Macros
Following is a list of ABS keyboard macros I have compiled in the course of working with the software. Many CAD operators prefer keyboarding over menus, toolbars or palettes for frequently used commands.
;====================================================================
; ABS Macros - April 12, 2006
;====================================================================
; utility functions
(defun GetAECBVars ( / data )
; query ABS system variables - thanks to R. Robert Bell
(vl-Catch-All-Apply
(function
(lambda ()
(setq data (entget (cdr (assoc 350
(member '(3 . "AEC_VARS_BUILDING_SYSTEMS")
(dictsearch (namedobjdict) "AEC_VARS"))))))))) ; retrieve data
data) ; return data, if any
(defun IsShowDisconnectOn ()
; status disconnect markers
(= 1 (cdr (assoc 65 (GetAECBVars)))))
(defun IsShowFlowOn ()
; status flow arrows
(= 16384 (logand 16384 (cdr (assoc 99 (GetAECBVars))))))
(defun IsShowCollisionOn ()
; status collision detection
(= 1 (cdr (assoc 71 (GetAECBVars)))))
;--------------------------------------------------
; keyboard macros
(defun c:ads () ; Aec Drawing Setup
(command "aecdwgsetup")(princ))
(defun c:da ( / i ) ; Duct Add
(setq i (getvar "osmode"))
(if (and (<> i 0))(setvar "osmode" (+ i 16384)))
(command "_AecbDuctAdd")(princ))
(defun c:d1 ( / i ) ; Duct 1-line
(setq i (getvar "osmode"))
(if (and (<> i 0))(setvar "osmode" (+ i 16384)))
(command "_AecbDuctAdd" "sh" "u")(princ))
(defun c:dl () ; Duct Length
(command "DuctLength")(princ))
(defun c:dm () ; Duct Modify
(command "DuctModify")(princ))
(defun c:dp () ; Duct Properties
(command "DuctProps")(princ))
(defun c:df () ; Duct preFerences
(command "_AecbDuctPreferences")(princ))
(defun c:dfa () ; Duct Fitting Add
(command "_AecbDuctFittingAdd")(princ))
(defun c:dfm () ; Duct Fitting Modify
(command "DuctFittingModify")(princ))
(defun c:dfp () ; Duct Fitting Properties
(command "DuctFittingProps")(princ))
(defun c:dgr () ; aec Display manaGeR
(command "_AecDisplayManager")(princ))
(defun c:fda ( / i ) ; Flex Duct Add
(setq i (getvar "osmode"))
(if (and (<> i 0))(setvar "osmode" (+ i 16384)))
(command "_AecbDuctFlexAdd")(princ))
(defun c:fdm () ; Flex Duct Modify
(command "DuctFlexModify")(princ))
(defun c:fdp () ; Flex Duct Properties
(command "DuctFlexProps")(princ))
(defun c:gcd () ; toGgle Collision Detection
(command "_AecbCollisionDetection")(princ))
(defun c:gdm () ; toGgle Disconnect Markers
(command "_AecbDisConnectMarkers")(princ))
(defun c:gel () ; toGgle Elevation Lock
(if (= 0 (getvar "osnapz"))(setvar "osnapz" 1)(setvar "osnapz" 0))(princ))
(defun c:gsf () ; toGgle Show Flow
(command "_AecbShowFlow")(princ))
(defun c:gtp () ; toGgle Tool Palettes
(command ".undo" "g")
(if (= 0 (getvar "tpstate"))(command "_ToolPalettes")
(command "_ToolPalettesClose"))(princ))
(defun c:iat () ; Insert Air Terminal
(command "_MvPartAdd" "t" "Air Terminal")(princ))
(defun c:isn () ; Isolate Objects oN
(command "_AecIsolateObjects")(princ))
(defun c:isf () ; Isolate Objects ofF
(command "_AecUnIsolateObjects")(princ))
(defun c:lca () ; Label Curve Add
(command "LabelCurveAdd")(princ))
(defun c:lcm () ; Label Curve Modify
(command "LabelCurveModify")(princ))
(defun c:lcr () ; Label Curve Rotate
(command "LabelCurveRotateNode")(princ))
(defun c:mvpa () ; MVPart Add
(command "mvpartadd")(princ))
(defun c:mvpc () ; MVPart Convert
(command "_aecbmvpartconvert")(princ))
(defun c:mvpm () ; MVPart Modify
(command "MvPartModify")(princ))
(defun c:mvpp () ; MVPart Properties
(command "MvPartProps")(princ))
(defun c:mvpr () ; MVPart Regenerate
(command "_AecbCatalogRegen" "m")(princ))
(defun c:mvps () ; MVPart Style
(command "MvPartStyleEdit")(princ))
(defun c:mvpt () ; MVPart Test
(command "_AecbCatalogTest" "m")(princ))
(defun c:pa () ; Pipe Add
(setq i (getvar "osmode"))
(if (and (<> i 0))(setvar "osmode" (+ i 16384)))
(command "_AecbPipeAdd")(princ))
(defun c:pb () ; Project Browser
(command "_AecProjectBrowser")(princ))
(defun c:pm () ; Pipe Modify
(command "PipeModify")(princ))
(defun c:pn () ; Project Navigator
(command "_AecProjectNavigator")(princ))
(defun c:pl () ; Pipe Length
(command "PipeLength")(princ))
(defun c:pp () ; Pipe Properties
(command "PipeProps")(princ))
(defun c:pf () ; Pipe preFerences
(command "_AecbPipePreferences")(princ))
(defun c:pfa () ; Pipe Fitting Add
(command "_AecbPipeFittingAdd")(princ))
(defun c:pfm () ; Pipe Fitting Modify
(command "PipeFittingModify")(princ))
(defun c:pfp () ; Pipe Fitting Properties
(command "PipeFittingProps")(princ))
(defun c:pga(); PurGe All including aec objects
(command "-purge" "a" "*" "n")
(if (eq "16" (substr (getvar "acadver") 1 2))
(command "_AecbBldSysPurge"))(princ))
(defun c:rgh () ; ReGenerate Haloed lines
(command "_AecObjRelUpdate")(princ))
(defun c:rgm () ; ReGen Model space haloed lines
(setq cmdstr (strcat "sendkeys(" (chr 34) "model~_AecObjRelUpdate~~" (chr 34)")"))
(command "_vbastmt" cmdstr)(princ))
(defun c:sfd () ; Set Flow Direction
(command "SetFlow")(princ))
(defun c:sgr () ; aec Style manaGeR
(command "_AecStyleManager")(princ))
(defun c:xp2000 () ; eXPort to autocad 2000
(command ".model" "_AecExportToAutoCAD2000")(princ))
(defun c:xp2004 () ; eXPort to autocad 2004
(command ".model" "_AecExportToAutoCAD2004")(princ))
- This also provides a convenient backup for the code, accessible anytime anywhere. From time to time I will update it with recent revisions, noted by a date stamp at top of the list.
- Also of note, I have endeavored to make the code generic, either removing functions which included function references, or substituting code for a function reference where it was simple to do so.
;====================================================================
; ABS Macros - April 12, 2006
;====================================================================
; utility functions
(defun GetAECBVars ( / data )
; query ABS system variables - thanks to R. Robert Bell
(vl-Catch-All-Apply
(function
(lambda ()
(setq data (entget (cdr (assoc 350
(member '(3 . "AEC_VARS_BUILDING_SYSTEMS")
(dictsearch (namedobjdict) "AEC_VARS"))))))))) ; retrieve data
data) ; return data, if any
(defun IsShowDisconnectOn ()
; status disconnect markers
(= 1 (cdr (assoc 65 (GetAECBVars)))))
(defun IsShowFlowOn ()
; status flow arrows
(= 16384 (logand 16384 (cdr (assoc 99 (GetAECBVars))))))
(defun IsShowCollisionOn ()
; status collision detection
(= 1 (cdr (assoc 71 (GetAECBVars)))))
;--------------------------------------------------
; keyboard macros
(defun c:ads () ; Aec Drawing Setup
(command "aecdwgsetup")(princ))
(defun c:da ( / i ) ; Duct Add
(setq i (getvar "osmode"))
(if (and (<> i 0))(setvar "osmode" (+ i 16384)))
(command "_AecbDuctAdd")(princ))
(defun c:d1 ( / i ) ; Duct 1-line
(setq i (getvar "osmode"))
(if (and (<> i 0))(setvar "osmode" (+ i 16384)))
(command "_AecbDuctAdd" "sh" "u")(princ))
(defun c:dl () ; Duct Length
(command "DuctLength")(princ))
(defun c:dm () ; Duct Modify
(command "DuctModify")(princ))
(defun c:dp () ; Duct Properties
(command "DuctProps")(princ))
(defun c:df () ; Duct preFerences
(command "_AecbDuctPreferences")(princ))
(defun c:dfa () ; Duct Fitting Add
(command "_AecbDuctFittingAdd")(princ))
(defun c:dfm () ; Duct Fitting Modify
(command "DuctFittingModify")(princ))
(defun c:dfp () ; Duct Fitting Properties
(command "DuctFittingProps")(princ))
(defun c:dgr () ; aec Display manaGeR
(command "_AecDisplayManager")(princ))
(defun c:fda ( / i ) ; Flex Duct Add
(setq i (getvar "osmode"))
(if (and (<> i 0))(setvar "osmode" (+ i 16384)))
(command "_AecbDuctFlexAdd")(princ))
(defun c:fdm () ; Flex Duct Modify
(command "DuctFlexModify")(princ))
(defun c:fdp () ; Flex Duct Properties
(command "DuctFlexProps")(princ))
(defun c:gcd () ; toGgle Collision Detection
(command "_AecbCollisionDetection")(princ))
(defun c:gdm () ; toGgle Disconnect Markers
(command "_AecbDisConnectMarkers")(princ))
(defun c:gel () ; toGgle Elevation Lock
(if (= 0 (getvar "osnapz"))(setvar "osnapz" 1)(setvar "osnapz" 0))(princ))
(defun c:gsf () ; toGgle Show Flow
(command "_AecbShowFlow")(princ))
(defun c:gtp () ; toGgle Tool Palettes
(command ".undo" "g")
(if (= 0 (getvar "tpstate"))(command "_ToolPalettes")
(command "_ToolPalettesClose"))(princ))
(defun c:iat () ; Insert Air Terminal
(command "_MvPartAdd" "t" "Air Terminal")(princ))
(defun c:isn () ; Isolate Objects oN
(command "_AecIsolateObjects")(princ))
(defun c:isf () ; Isolate Objects ofF
(command "_AecUnIsolateObjects")(princ))
(defun c:lca () ; Label Curve Add
(command "LabelCurveAdd")(princ))
(defun c:lcm () ; Label Curve Modify
(command "LabelCurveModify")(princ))
(defun c:lcr () ; Label Curve Rotate
(command "LabelCurveRotateNode")(princ))
(defun c:mvpa () ; MVPart Add
(command "mvpartadd")(princ))
(defun c:mvpc () ; MVPart Convert
(command "_aecbmvpartconvert")(princ))
(defun c:mvpm () ; MVPart Modify
(command "MvPartModify")(princ))
(defun c:mvpp () ; MVPart Properties
(command "MvPartProps")(princ))
(defun c:mvpr () ; MVPart Regenerate
(command "_AecbCatalogRegen" "m")(princ))
(defun c:mvps () ; MVPart Style
(command "MvPartStyleEdit")(princ))
(defun c:mvpt () ; MVPart Test
(command "_AecbCatalogTest" "m")(princ))
(defun c:pa () ; Pipe Add
(setq i (getvar "osmode"))
(if (and (<> i 0))(setvar "osmode" (+ i 16384)))
(command "_AecbPipeAdd")(princ))
(defun c:pb () ; Project Browser
(command "_AecProjectBrowser")(princ))
(defun c:pm () ; Pipe Modify
(command "PipeModify")(princ))
(defun c:pn () ; Project Navigator
(command "_AecProjectNavigator")(princ))
(defun c:pl () ; Pipe Length
(command "PipeLength")(princ))
(defun c:pp () ; Pipe Properties
(command "PipeProps")(princ))
(defun c:pf () ; Pipe preFerences
(command "_AecbPipePreferences")(princ))
(defun c:pfa () ; Pipe Fitting Add
(command "_AecbPipeFittingAdd")(princ))
(defun c:pfm () ; Pipe Fitting Modify
(command "PipeFittingModify")(princ))
(defun c:pfp () ; Pipe Fitting Properties
(command "PipeFittingProps")(princ))
(defun c:pga(); PurGe All including aec objects
(command "-purge" "a" "*" "n")
(if (eq "16" (substr (getvar "acadver") 1 2))
(command "_AecbBldSysPurge"))(princ))
(defun c:rgh () ; ReGenerate Haloed lines
(command "_AecObjRelUpdate")(princ))
(defun c:rgm () ; ReGen Model space haloed lines
(setq cmdstr (strcat "sendkeys(" (chr 34) "model~_AecObjRelUpdate~~" (chr 34)")"))
(command "_vbastmt" cmdstr)(princ))
(defun c:sfd () ; Set Flow Direction
(command "SetFlow")(princ))
(defun c:sgr () ; aec Style manaGeR
(command "_AecStyleManager")(princ))
(defun c:xp2000 () ; eXPort to autocad 2000
(command ".model" "_AecExportToAutoCAD2000")(princ))
(defun c:xp2004 () ; eXPort to autocad 2004
(command ".model" "_AecExportToAutoCAD2004")(princ))
Monday, April 17, 2006
ABS Process Engineering
- Concurrent ABS Installations
- Configuring the Installation Image
- Repathing ABS Support Directories
- Networking the CUI (ref User_Interface_Change_Process.txt)
- Registry Manipulation
- Bringing Forward Customizations
- The MultiEdit Text Editor & Team Administration
Wednesday, April 12, 2006
Blog Design
General Notes:
Posted here are general notes on the development of this blog's interface. Expect not a complete reference on blog design, of which there are plenty, here's one:
A nifty blog design resource...
Most bloggers use a two column format, probably because our gracious host provides at most two column templates as "standard" elections. Three-column formats, while supported, require bloggers to "roll their own" templates...
Tutorial on 3-column design...
3-column templates complementing preceding tutorial...
Be sure to keep a backup of your template in a text file off-line. Update periodically, particularly after major changes.
Blog Outline:
The apparent temporal sequence of these blog posts is an artifact of the medium. My goal is to build on a traditional outline framework that will be arguably coherent if not comprehensively complete in the accomplishment of stated objectives:
OBJECTIVES
Disclaimer: The content developed herein to fulfill the stated objectives is specific to the author's application of ABS to meet the challenges of a specific business environment. This content shall under no circumstance be interpreted by anyone as either a recommendation for action or guarantee of results.
OUTLINE
ABS Production Topics
ABS Support Applications
ABS Automation
ABS Management
Administrative
Posted here are general notes on the development of this blog's interface. Expect not a complete reference on blog design, of which there are plenty, here's one:
A nifty blog design resource...
Most bloggers use a two column format, probably because our gracious host provides at most two column templates as "standard" elections. Three-column formats, while supported, require bloggers to "roll their own" templates...
Tutorial on 3-column design...
3-column templates complementing preceding tutorial...
Be sure to keep a backup of your template in a text file off-line. Update periodically, particularly after major changes.
Blog Outline:
The apparent temporal sequence of these blog posts is an artifact of the medium. My goal is to build on a traditional outline framework that will be arguably coherent if not comprehensively complete in the accomplishment of stated objectives:
OBJECTIVES
- Produce an online reference document useful to working colleagues in the effective application of Autodesk Building Systems to produce quality deliverables for our clients.
- Capture arcane "wheels" invented specifically for ABS implementation to inform current and future CAD managers in the deployment and maintenance of the software.
Disclaimer: The content developed herein to fulfill the stated objectives is specific to the author's application of ABS to meet the challenges of a specific business environment. This content shall under no circumstance be interpreted by anyone as either a recommendation for action or guarantee of results.
OUTLINE
ABS Production Topics
- ABS Performance Tips
- Dynamic & Wipeout Blocks
- Customizing USER.LSP & JOB.LSP
- ABS Sections
- ABS Schedules
- New/Existing/Demo/Removal Work
- Client-Specific Workspaces
- Trace 700 and Carrier HAP
- Green Building Studio and eQuest
- National CAD Standard 3.1
ABS Support Applications
- DWG Trueview
- DWF Composer and Electronic Markups
- DWG Reference Editor
ABS Automation
- ABS Macros
- AutoLISP to ARX
- ABS Voice Commands
ABS Management
- Concurrent ABS Installations
- Configuring the Installation Image
- Repathing ABS Support Directories
- Networking the CUI (ref User_Interface_Change_Process.txt)
- Registry Manipulation
- Bringing Forward Customizations
- Client-Specific Customizations
- The MultiEdit Text Editor
- Team Administration
- Rolling Backups
Administrative
