質問編集履歴

4

ベストアンサー選択による追記

2016/04/04 02:17

投稿

butt5192
butt5192

スコア15

test CHANGED
File without changes
test CHANGED
@@ -115,3 +115,9 @@
115
115
 
116
116
 
117
117
  [2016/03/31] -> 回路AAの並列接続点がずれていたため修正
118
+
119
+
120
+
121
+ [2016/04/04]
122
+
123
+ 直接的な解決にはまだ至っていませんが、要求仕様が技術的に高いというアドバイスを頂けたので解決済みとさせていただきます。

3

誤字修正

2016/04/04 02:17

投稿

butt5192
butt5192

スコア15

test CHANGED
File without changes
test CHANGED
@@ -72,7 +72,7 @@
72
72
 
73
73
  例えば上の例だと、ノード名(x,y)と座標を示すとして、
74
74
 
75
- R0(0,0) R1(1,0) R4(2,0) R2(1,1) R3(2,1)
75
+ R0(0,0) R1(1,0) R4(2,0) R2(1,1) R3(1,2)
76
76
 
77
77
  と座標を振りたいのですが、深さ優先で潜った時に縦の深さでYを
78
78
 

2

回路AAの並列接続点がずれていたため修正

2016/03/31 05:12

投稿

butt5192
butt5192

スコア15

test CHANGED
File without changes
test CHANGED
@@ -34,17 +34,17 @@
34
34
 
35
35
  INPUT---R0---R1-+-R4---OUTPUT
36
36
 
37
- |
37
+ |
38
38
 
39
- R2
39
+ R2
40
40
 
41
- |
41
+ |
42
42
 
43
- R3
43
+ R3
44
44
 
45
- |
45
+ |
46
46
 
47
- GND
47
+ GND
48
48
 
49
49
  [テキスト表現]
50
50
 
@@ -111,3 +111,7 @@
111
111
  上記のような処理を行いたいのですが、もっと良い方法があるのではないかと
112
112
 
113
113
  考えなおしているところで、何かヒントを得られたら、、と質問をさせていただきました。
114
+
115
+
116
+
117
+ [2016/03/31] -> 回路AAの並列接続点がずれていたため修正

1

詳細を追記

2016/03/31 04:20

投稿

butt5192
butt5192

スコア15

test CHANGED
File without changes
test CHANGED
@@ -13,3 +13,101 @@
13
13
  または、こういった切り口で捉えたら良いというヒントでも結構ですので、
14
14
 
15
15
  ご教示いただけると助かります。
16
+
17
+
18
+
19
+ [2016/03/31追記]
20
+
21
+ ・実現したいことは大きく分けて2つあります。
22
+
23
+ 1.テキストで表現された回路をGUIで表現し直す機能
24
+
25
+ 2.GUIで表現された回路図をテキストに直す機能
26
+
27
+
28
+
29
+ 「テキストで表現された回路」とは、下記のような形式で表現されています。
30
+
31
+
32
+
33
+ [構成]
34
+
35
+ INPUT---R0---R1-+-R4---OUTPUT
36
+
37
+ |
38
+
39
+ R2
40
+
41
+ |
42
+
43
+ R3
44
+
45
+ |
46
+
47
+ GND
48
+
49
+ [テキスト表現]
50
+
51
+ S(P(S(R0,R1),S(R2,R3)),R4)
52
+
53
+
54
+
55
+ テキスト表現では、S(p1,p2)と表記した場合p1とp2が直列であることを示します。
56
+
57
+ P(p1,p2)と表記した場合は、並列接続であることを示します。
58
+
59
+ それぞれのカッコの中の引数は必ず2つです。
60
+
61
+
62
+
63
+ 1に関しては、従来の製品の入出力フォーマットがCUIで、テキスト回路表現のみサポートしているので、それに対応するために1の機能が必要です。
64
+
65
+ 私が最初考えたのは、先頭から文字列を読みながら多分木に変換して、(x,y)の論理座標をそれぞれのノードに与え、そこからGUIに転写する方法でした。
66
+
67
+
68
+
69
+ 先頭から多分木に変換することはできたのですが、X,Yの座標を与えるルーチンでつまづいて困っています。
70
+
71
+
72
+
73
+ 例えば上の例だと、ノード名(x,y)と座標を示すとして、
74
+
75
+ R0(0,0) R1(1,0) R4(2,0) R2(1,1) R3(2,1)
76
+
77
+ と座標を振りたいのですが、深さ優先で潜った時に縦の深さでYを
78
+
79
+ 増やしていくルーチンがうまく行きません。
80
+
81
+
82
+
83
+ 回路の形は、並列でつながっている素子に更に並列という構成も
84
+
85
+ あるので、その場合を考えると再帰が組みにくくて悩んでいます。
86
+
87
+
88
+
89
+ 2.に関しては、1で読み込んだ回路を編集する機能に当たります。
90
+
91
+
92
+
93
+ 1,2ともに簡単に解決する方法を求めて、電子回路CADのフォーマットに
94
+
95
+ テキスト回路を中間ファイルとして変換するのが簡単では?と考え、
96
+
97
+ 電子回路CADのフレームワークを探していました。
98
+
99
+
100
+
101
+ 自前実装の場合のGUIは、ユーザーが自由に素子の位置を移動させるのではなく、
102
+
103
+ 多分木への追加・削除・移動を指定するウィンドウからCUIチックに行うことを
104
+
105
+ 考えています。
106
+
107
+ 例えば、R1,R2にR3を直列に追加する、といったような操作を提供します。
108
+
109
+
110
+
111
+ 上記のような処理を行いたいのですが、もっと良い方法があるのではないかと
112
+
113
+ 考えなおしているところで、何かヒントを得られたら、、と質問をさせていただきました。