PyCompEditor

From TNtech Wiki
Revision as of 10:29, 11 June 2014 by Tntech (Talk | contribs)

Jump to: navigation, search

Contents

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.

pyCompEditor the basic blocks for creating of

  • different schematic editors, additionally with the possibility of code generation (SPICE, XSPICE, Open Modelica etc...)
  • interactive block simulator based on Scipy and Matplotlib
  • real-time SCADA applications


  • Internal structure
  • Example of implementation
  • Creating new block/components
  • Source code
  • Licence

Gallery / Galéria

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

Description / Popis

pyCompEditor je programový modul (softwarový komponent) - grafický editor vytvorený v jazyku Python a knižnici 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.

Terminológia


Vlastnosti editoru

  • vytvorený výhradne v jazyku Python s podporou knižnice 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 štandarných postupov v C/C++ prostredníctvom generátora rozhraní 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 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:

Štruktúra

Modul je dedený z triedy 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.

Použitie modulu v aplikácii

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.

Diagram tried modulu

Použitie

Jednoduchá aplikácia

Zdrojový kód jednoduchého použitia modulu.

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()

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.

Jednoduchá aplikácia

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

Logo 01.png www.vyskumnecentrum.sk

www.researchcentre.sk

Logo 02.png wiki.tntech.eu

Zdrojové texty k programu sú open-source. Licencia k programu je zhodná s licenciou L-GPL k 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ť.

Personal tools
Namespaces

Variants
Actions
Navigation
Toolbox