Windowsのデスクトップアプリで、電子回路エディタ機能を実装したいのですが、
良い方法が思いつきません。
使用している環境はVS-C#2015、またはQt5.4です。
電子回路エディタ機能をまとめたフレームワークなどご存じないでしょうか?
または、こういった切り口で捉えたら良いというヒントでも結構ですので、
ご教示いただけると助かります。
[2016/03/31追記]
・実現したいことは大きく分けて2つあります。
1.テキストで表現された回路をGUIで表現し直す機能
2.GUIで表現された回路図をテキストに直す機能
「テキストで表現された回路」とは、下記のような形式で表現されています。
[構成]
INPUT---R0---R1-+-R4---OUTPUT
|
R2
|
R3
|
GND
[テキスト表現]
S(P(S(R0,R1),S(R2,R3)),R4)
テキスト表現では、S(p1,p2)と表記した場合p1とp2が直列であることを示します。
P(p1,p2)と表記した場合は、並列接続であることを示します。
それぞれのカッコの中の引数は必ず2つです。
1に関しては、従来の製品の入出力フォーマットがCUIで、テキスト回路表現のみサポートしているので、それに対応するために1の機能が必要です。
私が最初考えたのは、先頭から文字列を読みながら多分木に変換して、(x,y)の論理座標をそれぞれのノードに与え、そこからGUIに転写する方法でした。
先頭から多分木に変換することはできたのですが、X,Yの座標を与えるルーチンでつまづいて困っています。
例えば上の例だと、ノード名(x,y)と座標を示すとして、
R0(0,0) R1(1,0) R4(2,0) R2(1,1) R3(1,2)
と座標を振りたいのですが、深さ優先で潜った時に縦の深さでYを
増やしていくルーチンがうまく行きません。
回路の形は、並列でつながっている素子に更に並列という構成も
あるので、その場合を考えると再帰が組みにくくて悩んでいます。
2.に関しては、1で読み込んだ回路を編集する機能に当たります。
1,2ともに簡単に解決する方法を求めて、電子回路CADのフォーマットに
テキスト回路を中間ファイルとして変換するのが簡単では?と考え、
電子回路CADのフレームワークを探していました。
自前実装の場合のGUIは、ユーザーが自由に素子の位置を移動させるのではなく、
多分木への追加・削除・移動を指定するウィンドウからCUIチックに行うことを
考えています。
例えば、R1,R2にR3を直列に追加する、といったような操作を提供します。
上記のような処理を行いたいのですが、もっと良い方法があるのではないかと
考えなおしているところで、何かヒントを得られたら、、と質問をさせていただきました。
[2016/03/31] -> 回路AAの並列接続点がずれていたため修正
[2016/04/04]
直接的な解決にはまだ至っていませんが、要求仕様が技術的に高いというアドバイスを頂けたので解決済みとさせていただきます。

回答2件
あなたの回答
tips
プレビュー