PyCompEditor

From TNtech Wiki
(Difference between revisions)
Jump to: navigation, search
Line 22: Line 22:
  
 
'''[[Source code & Licence]]'''
 
'''[[Source code & Licence]]'''
 +
 +
''' Upozornenie'''
 +
Program je v štádiu vývoja, dátové štruktúry, formáty súborov ako vlastná štruktúra programu sa môžu vyvíjať a meniť.
  
 
'''Gallery'''
 
'''Gallery'''
Line 79: Line 82:
 
|-
 
|-
 
|}
 
|}
 
== Description / Popis ==
 
 
'''pyCompEditor''' je programový modul (softwarový komponent) - grafický editor vytvorený v jazyku [http://www.python.org Python] a knižnici [http://www.wxpython.org wxPython] pre tvorbu a úpravy diagramov, zapojení a schém tvorených komponentami a prepojeniami medzi nimi. Modul je možné rozširovať o nové komponenty pomocou dedenia a definovania ich vlastností a chovania v jazyku Python.
 
 
[[File:pyc_terminologia.png |thumb|center|400px| <div align="center"> Terminológia </div> ]]
 
 
 
'''Vlastnosti editoru'''
 
* vytvorený výhradne v jazyku [http://www.python.org Python] s podporou knižnice [http://www.wxpython.org wxPython]
 
* jednoduchý zásuvný modul pre iné aplikácie v jazyku Python
 
* platformovo nezávislý
 
* voľne rozšíriteľný o nové komponenty
 
* nové komponenty je možné vytvárať priamo v jazyku Python, bez potreby špeciálneho kompilátora
 
* funkcionalitu časovo kritických alebo algoritmicky náročných komponentov je možné implementovať pomocou [http://www.wxpython.org/OSCON2008/Python%20C++%20and%20SWIG.pdf  štandarných postupov] v C/C++ prostredníctvom generátora rozhraní [http://www.swig.org/  SWIG]
 
* vlastnosti komponentov je možné parametrizovať
 
* komponenty na ploche editora môžu meniť svoj vzhľad počas behu aplikácie (grafické zobrazenie stavu alebo hodnoty, chybové stavy a pod.)
 
 
 
''' Aplikácie'''
 
* grafický editor schém a diagramov založený na preddefinovaných komponentoch a perpojeniach medzi nimi
 
* generátor skriptov pre simulačné programy (SPICE, XSPICE, MODELICA a iné)
 
* interaktívny blokový simulátor s využitím podpory knižníc [http://www.scipy.org/ SciPy]
 
* SCADA aplikácie
 
* zber a riadenie technologických procesov, vedeckých experimentov, zber a spracovanie dát v reálnom čase
 
 
 
'''Závislosti'''
 
 
pyCompEditor vo verzii pre wxPython využíva podporu výhradne open source knižníc:
 
 
* programovaci jazyk [https://www.python.org/ Python 2.7.3]
 
* knižnicu [http://www.wxpython.org/ wxPython 3.0]
 
* knižnice [http://www.scipy.org/ SciPy] a [http://matplotlib.org/ matplotlib]
 
* knižnica [https://code.google.com/p/wxpsvg/wiki/ReadMe wxpsvg] pre renderovanie SVG obrazkov
 
 
== Štruktúra ==
 
 
Modul je dedený z triedy [http://www.wxpython.org/docs/api/wx.PyPanel-class.html wx.PyPanel] a v aplikácii sa používa ako štandardný panel. Pre komunikáciu s modulom sa používajú nasledujúce postupy
 
 
* volanie metód triedy ComponentEditor (API) určených pre manipuláciu s komponentami a prepojeniami
 
** ''addComponent''
 
** ''copyComponent''
 
** ''addNet'' ...
 
* nastavením módu editora pomocou premennej ''editorMode'', určenej pre riadenie chovania a reakcií na udalosti myši a klávesnice
 
** ''MODE_MOVE_VERTEX''
 
** ''MODE_MOVE_COMPONENT'' ...
 
 
Modul generuje zoznam komponentov a zoznam prepojení, ktoré sú dostupné z aplikácie, v ktorej je modul použitý. Modul obsahuje metódy pre uloženie a nahratie do-zo súboru.
 
 
[[File:pyc_pouzitie.png |thumb|center|400px| <div align="center"> Použitie modulu v aplikácii </div> ]]
 
 
Základom modulu sú triedy Component a Net, Component agreguje zoznam objektov triedy Terminal, ktore tvoria pripojovacie body komponentov. Prepojenie medzi komponentami je tvorené referenciou na počiatočný a koncový terminál a zoznamom vrchlov tvoriacich geometrický tvar prepojenia. Vzťahy medzi triedami ukazuje diagram tried.
 
 
[[File:pyc_class_diagram.png |thumb|center|400px| <div align="center"> Diagram tried modulu </div> ]]
 
 
== Použitie ==
 
 
'''Jednoduchá aplikácia'''
 
 
Zdrojový kód jednoduchého použitia modulu.
 
 
<pre>
 
import wx
 
from src.compEditor import *
 
 
app = wx.App(False)
 
frame = wx.Frame(None)
 
editor = ComponentEditor(frame)
 
 
editor.addComponent('R', 50, 50)
 
editor.addComponent('C', 150, 150)
 
 
frame.Show()
 
app.MainLoop()
 
</pre>
 
 
Po vytvorení objektu triedy ''ComponentEditor'' sú do zoznamu komponentov zaradené dva objekty,
 
''' 'R' ''' a ''' 'C'  ''' sú mená tried, z ktorých sú vytvorené ich inštancie. Po spustení je modul možné ovládať myšou a klávesnicou.
 
 
[[File:pyc_simple_app.png |thumb|center|400px| <div align="center"> Jednoduchá aplikácia </div> ]]
 
 
Klávesami je možné prepínať módy editora
 
* q - výpis zoznamu komponentov na konzolu
 
* w - výpis zoznamu prepojení na konzolu
 
* m - posúvania komponentov
 
* s - výber komponentu
 
* c - kópia komponentu
 
* n - pridanie nového prepojenia
 
* b - pridanie spojky medzi prepojeniami
 
* r - rotovanie komponentu
 
* t - zrkadlenie komponentu
 
* ESC - zrušenie zadávania prepojenia
 
 
== Licencia a zdrojové kódy ==
 
 
Program je vyvíjaný v spolupráci s nasledujúcimi organizáciami
 
 
{|class="wikitable"
 
| align="center" | [[File:logo_01.png | 250px ]]
 
| align="center" | [http://www.vyskumnecentrum.sk www.vyskumnecentrum.sk]
 
[http://www.researchcentre.sk www.researchcentre.sk]
 
|-
 
| align="center" | [[File:logo_02.png | 250px ]]
 
| align="center" | [http://wiki.tntech.eu wiki.tntech.eu]
 
|}
 
 
Zdrojové texty k programu sú open-source. Licencia k programu je zhodná s licenciou L-GPL  k
 
[http://www.wxwidgets.org/about/licence/ wxWidgets].
 
Zdrojové texty získate po zaslaní žiadosti na e-mailovú adresu fabo.peter@gmail.com. Uvedte prosím Vaše meno,
 
oblasť použitia a prípadne meno firmy, ak bude použitý pre komerčnú aplikáciu.
 
Tieto informácie mebudú bez Vašeho súhlasu zverejnené.
 
 
''' Upozornenie'''
 
Program je v štádiu vývoja, dátové štruktúry, formáty súborov ako vlastná štruktúra programu sa môžu vyvíjať a meniť.
 

Revision as of 12:15, 11 June 2014

Description

pyCompEditor is a program module – graphic block editor created in pure Python with support libraries wxPython, Scipy and Matplotlib for creation and treatment diagrams, involvements and schemes created with components and links between them.

Applications

pyCompEditor the basic blocks for creating of

  • different schematic editors, additionally with the possibility to generate code for simulation engines (SPICE, XSPICE, Open Modelica etc...)
  • interactive block simulator based on Python, Scipy and Matplotlib
  • real-time SCADA applications
  • data processing
  • control of scientific devices and experiments
  • configuration of complex systems with blocks


Internal structure

Example of implementation

Creating new block/components

Source code & Licence

Upozornenie Program je v štádiu vývoja, dátové štruktúry, formáty súborov ako vlastná štruktúra programu sa môžu vyvíjať a meniť.

Gallery

Pyc obr2.png Pyc demo.png Pyc obr12.png
Plugin as schematic editor Simple simulator Set of differential equations
Pyc e001.png Pyc e002.png Pyc e003.png
Scalar & Vector Demo Clock and ADC Sampling Continuous Transfer Function
Pyc e004.png Pyc e006.png Pyc e008.png
Diff. equation - RC Circuit Diff. equation - RLC Circuit Harmonic oscillator
Pyc e009.png Pyc e011.png Pyc e014.png
Mathematical functions Bus and Net Terminal Demo Real Time Pipe Operations
Pyc e015.png Pyc e016.png Pyc e017.png
2D Bifurcations Henon's System SVG Image Generator
Personal tools
Namespaces

Variants
Actions
Navigation
Toolbox