Code Monkey home page Code Monkey logo

idfplus's Introduction

IDF+ Editor

IDF+ is an enhanced editor for idf files—the text-based, simulation input files for EnergyPlus. In creating the tool, I've attempted to embrace the concepts and ideas that I find most useful in my every-day building energy modelling. I've written these ideas in a "manifesto" (rather, I discovered and developed the concepts as I created the tool and used others). I use the official IDF Editor that comes with EnergyPlus every day—it is the primary tool I use for interacting with IDF files. I have come to respect it and think it is probably the best tool out there right now for working with IDF files, however, it also has some significant limitations that I decided to address. The working name I've chosen is IDF+, but I am hoping to find something a bit more original as development progresses (suggestions are welcome!).

See the Releases section for installers. I'm currently working on deb and msi files for Ubuntu and Windows respectively. You can run the editor in its uncompiled form on any machine that has Python v3.7.x and the appropriate dependencies. See the Doc folder for more info.

resources/idfplusscreenshot.png

Open Source and Cross Platform

The tool is written in Python (v3.7.x) using PySide2 5.13.1 for a graphical library, and the source code is available under the GPLv3 open source licence. It is currently working on both Ubuntu 18.04+ and Windows 10, but should work on Mac OSX as well.

Lightweight Editor

The tool continues in the spirit of the official editor in that it's a lightweight tool that interacts as directly as possible with the contents of the IDF files.

Full Undo Support

All primary editing features will support undo. There are bugs at the moment, but cut, copy, paste, delete and duplicate will be 'undoable'. The undo history can be navigated allowing a user to return to previous points in the model's recent history (within the given editing session).

Filter and Transpose

Both the list of classes and objects are search/filterable. This means a user can show only objects or classes containing arbitrary bits of text. The editing actions can then be performed on this subset of objects. The object list can also be transposed (rows/columns reversed) to show a more traditional spreadsheet-like view.

Highly Flexible Interface

Each of the main interface elements, such as the class list or comments box, can be moved around and resized as a user prefers, or even "undocked" from the main interface altogether to be positioned on a secondary monitor.

Helpful But Not Annoying

I've tried, and continue, to build-in useful features like autocomplete in fields that display a large number of items in the dropdown box. Common features and help items will also be available from the context menu.

Future Development

On the roadmap are features such as search and replace, visualization of relationships between objects, enhanced contextual menus and help, as well as improvements to speed and visual appearance. Behind the scenes, I intend to implement a more offical development process based on test-driven development and automate testing and the installer building process.

Please Note!

This software is at an alpha stage! This means that it is for testing purposes only and should not be used for real projects! I would, however, appreciate any feedback and suggestions on how the editor can be improved. Please submit an issue if you find any bugs.

idfplus's People

Contributors

mattdoiron avatar dependabot[bot] avatar

Stargazers

Jianzhuang Li avatar  avatar Ricardo Rosal avatar  avatar Amanda D. Smith avatar Jason Glazer avatar  avatar Yiyuan Jia avatar Gleb Sizov avatar swint avatar Yi Zhang avatar  avatar

Watchers

Jason Glazer avatar  avatar Matt Steen avatar  avatar

Forkers

santoshphilip

idfplus's Issues

Accordion Menu for Common Tasks

It has been suggested that an accordion-type menu be included in some way to allow common tasks to be more easily accessible. Such a menu might look like the attached accordion.png

Track relationships between air and plant loop nodes

Use networkx or similar to track relationships between IDF nodes similarly to the way networkx is used to track relationships for object references and object-lists. This is important and will allow more advanced features later such as visualizing, analyzing and validating air loops and plant loops.

issue opening an idf file

I tries to open Exercise1A.idf from the example files of energyplus 8.2 while running your editor on windows 8.1:

Traceback (most recent call last): File "C:\Users\matt\Documents\idfplusnew\build\idfplus\out00-PYZ.pyz\idfplus.m ain", line 123, in open_file File "C:\Users\matt\Documents\idfplusnew\build\idfplus\out00-PYZ.pyz\idfplus.m ain", line 204, in load_file File "C:\Users\matt\Documents\idfplusnew\build\idfplus\out00-PYZ.pyz\idfplus.m ain", line 167, in load_idf File "C:\Users\matt\Documents\idfplusnew\build\idfplus\out00-PYZ.pyz\idfplus.p arser", line 851, in parse_idf TypeError: 'NoneType' object has no attribute 'getitem'

Problems with .idd parser (ubuntu 18.04)

The IDD parser seems to ignore the "!" in some cases. If I try to import an idd file I get the error:

bob@alice:~/idfplus$ python idfplus.py
Traceback (most recent call last):
  File "~/idfplus/idfplus/widgets/setupwiz.py", line 135, in load_idd
for progress in idd_parser.parse_idd(dir_name):
  File "~/idfplus/idfplus/eplusio/parser.py", line 540, in parse_idd
set_length = int(obj_tag_dict['extensible:'][0])
ValueError: invalid literal for int() with base 10: '<'(idf)

Best,

Benjamin

IDF files take too long to load on Windows 8 and 8.1

These operating systems appear to take 2-3 times longer to load idf files under some circumstances. Linux and Windows 7 appear to load files very quickly. More testing would be appreciated if anyone reads this!

Contextual Help

Integrate help into a new widget and allow direct linking to topics through the context menu.

Improve IDD processing workflow

The first time and idd file of a specific version is needed the user is prompted for the location of the idd file. This is a confusing process and should be improved. Possibly incorporate this into a setup wizard. Each new version of idd that is required could trigger a "New IDD Wizard" to help users understand what is needed. Another good option would be to automatically search for EnergyPlus versions and process all found idd files.

Detect external edits to currently open file

Add a way for the editor to notify a user if the file they are editing was modified by another program (like the official IDF editor does). Probably want to use QFileSystemWatcher.

Improve Text Wrap Behaviour in Class Table Fields

The current behaviour of text fields in the class table does not allow wrapping of long field values. Wrapping should be enabled and both width and height of cells should adjust depending on contents so that the contents is always fully available.

Copied IDF objects are copied by reference

Copying/Pasting or Duplicating an object simply creates a reference to the object! This defeats the purpose because the values of all the fields will be linked. Need to deepcopy objects instead of shallow. This is a pain due to recursion errors so need to reimplement deepcopy().

Fonts are inconsistent

Standardize font faces, sizes and weights. Make them more consistent, predictable and allow them to be user definable.

Rewrite IDF/IDD Parser

The idd/idf is written entirely from scratch. It works, but is quite slow and probably fragile. The parser should be completely rewritten, probably using a well-established parsing library like PyParsing. This would be many times faster and more robust. A rewrite will likely be necessary anyway once EnergyPlus moves to the upcoming xml file format.

Unable to open IDF containing single object

GUI stalls when opening an IDF with a single object (e.g. ZoneHVACFourPipeFanCoil) from a blank IDF.

If an existing IDF is open and user tries to open a single object IDF it causes an unhandled exception.

IDFPlus_Issue34-1.png

IDFPlus_Issue34-2.png

Enhance and Clean Up Info Widget

Investigate making the info widget an html widget to allow formatting and html links. Possible improvements would be to allow directly linking to the html help file for the current object.

Create basic testing framework

There is currently not test framework in place. Implement it and start writing tests. Incorporate tests into build process as well. Investigate continuous integration.

Allow copy pasting cells/Range of cells

(I come here every year or so to see the progress you're making on this utility and try it out briefly. Seems like you're gone a long way already, good job!)

The Transpose function (CTRL+T) is a great idea. It'd be great if one could copy and paste like in excel. I may want to copy the construction from one cell and paste into the others, eg:

Copy Paste ex

Related to this would be to able to copy a range of cells from IDF+ to Excel and back. Currently it's copying the entire IDF text object

Crash when clicking on class tree.

Clicking around in the class tree will crash idfplus. The error seems to be related to the delegate assignment. Happens only when clicking from item to item quickly, so there could be a race condition in the delegates code?

Problem opening an idf in windows 10

Hi,

Firstly nice project, cheers.

I'm having trouble opening an idf file. possibly due to the idd import tool having troubles.

I'll have a go installing this tool in ubuntu.

Mike

Implement multi-document support

The editor can currently have only one document open at a time. Add the ability to have multiple documents open at once. Use tabs, windows or allow the user to choose. Provide ways to switch between currently open files. This feature requires a significant modification to how the various parts of the editor address an idf file--they currently assume there is only every one.

Provide a way to invalidate processed idd file

IDD files are processed only once per version, however, there will be times when changes are made to the way IDF+ processes/reads the IDD files. This will require a way to force the IDD files to be re-processed, for example after an update of the editor.

Add "Jump to Object" in Context Menu

It would be nice if you could jump to an object from the context menu. For example, you are in a SetpointManager:Scheduled object and trying to remember which schedule you need to assign. It would be nice if you could right-click while hovering over the Schedule Name drop down field and select "Jump to Object" to switch to the Schedule objects screen.

This is something that I tend to do often in the IDF Editor by selecting a specific schedule object then using the Find feature to jump to it.

Improve initial user experience

The first time the program loads it is awkward and needs to be customized. It's also unclear how to use it. Improve initial user experience. Potentially create a "setup wizard" to explain a few things and possibly pre-process IDD files instead of the first time they are needed.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.