パソコンを用いた会話型汎用図面入力システム
(昭和59年8月30日受理) 伊藤誠 蓼沼良一 内藤良浩 三浦浩A General Purpose Interactive Graphic System
for Personal Computers
MakotoITOU RyouichiTADENUMA YoshihiroNAITOU HiroshiMIURA Abstract An interactive Graphic system for personal computers is developed. With this system, the user has available a set of commands such as following:(1)to insert or delete or modify lines, polygons, arcs and curves.(2)to expand, delete and move any rectangular portion of a diagram. (4)to define graphic segments(5)to insert or delete characters with arbitrary size and eight directions.(6)to insert or delete Japanese character with the aid of dictionary which convert t{ iapanese reading”to Chinese characters. The interactive graphic system like this system will take place of simple mechanical drawing tools. 1. まえがき ワープロは事務処理機械化(OA)における文書作成 の重要なツールとなっている。しかし,設計現場で重 要な図面作成に関しては,電算化した図面処理装置が 高価であるため,ドラフタやコンパスに頼ることが多 い。 最近,急速に普及しているパソコンはかなり高度の 画面表示機能を持っている。したがって,実用的な図 面入力プログラムを備えたパソコンは,従来の製図器 を置き換える可能性がある。 われわれはすでに論理回路図や部品配置図を作成す る専用システムを作成しているが,本論文では,日本 語処理機能を持つ汎用図面入力システムを開発したの で報告する。 以下に,本システムの特長をまとめる3)4)。 (1)16ビットパソコンを用いた簡単な機器構成であ る。 *電子工学科,Department of Electronics (2)直線,多角形(塗りつぶし可),円,自由曲線の二 次元図形を会話方式で入力,編集ができる。画面は 図面全体または一部を拡大して表示する。 (3)図形の一部を切り出し,名前をつけたセグメント として登録できる。セグメントは任意の位置に,必 要なら反転や繰返し操作をして配置できる。 (4)簡易ワープロ機能により日本語(漢字)入力がで きる。この漢字は任意の大きさ(縦,横,間隔)で 画面中に表示できる。 (5)多重の層構造を持ち,各図形は特定の層に作画さ れる。画面表示は指定した複数の層に限定されるた め,複雑な図面でも編集が容易である。 (6)図面中の図形の数は最大数万個を想定している。 窓操作により,図面の任意の部分を画面全体に表示 できる。 ワープロの中には,図形を入れられるものもあるが 図面の大きさが画面の大きさで制限されるし,文字の 大きさ,方向も本システムほどは自由に設定できない。 また,セグメントの機能も本システムほど強力ではな い。なお,本論文の図面はすべて本システムを用いて作 成した。
2.機器構成
本システムは16ビットパソコンPC9800シリーズ を用いている。メモリは384KB必要であり,612 KB の実装が好ましい。ディスクはハードディスクが望ま しいが,フロッピー上でも動作する。ディスプレイは 高解像カラーディスプレイ(600×400点)とし,他に 漢字ROMとマウスが必要である。 画面へのハードコピー装置としてはプリンタまたは XYプロッタを利用する。プリンタは白黒のドット描 画となる。多ペンXYプロッタを接続すれば多色図面 が得られる。 ソフトウェアはモニタとしてCP/M86を用いてい るが,MS/DOSへの移行も可能である。本図面入力シ ステムはPASCALで記述され, PASCALコンパイラ MT十を用いている(図14参照)。 3.本システムの機能 3.1 画面の構成 本システムは会話型で図形入力を行う。システムを 起動すると図一1のような画面となる。左上はシステム からのメッセージ領域で,システムからのメッセージ や利用者の応答はここに表示される。右上は図面全体 に対する画面の位置(図面上の窓)を表示する。利用 者はこの窓を通して図面を見ることになる。窓を大き くすると図面全体が見られるが,画面上の図形は小さ くなる。 右下はコマンド表示領域である。利用者はマウスに より画面上の図形カーソルを移動して,コマンドを選 択する。選択したコマンドがサブコマンドを持つとき, コマンド領域はサブコマンドの表示に変化する。 左下が図形の表示部である。設定した窓を通して見 える図面の一部がこの領域に表示される(図一2)。表示 する層の指定により,図面の特定の層のみを表示する 恩 メソセージ領域 表示 コ 図面の表示 ; ド 「 表 一 示 図形カーソル 図一1 画面の構成 Fig. l Construction of display Z1−3/C7ヲ画.
←二s ,4
st ’ 図一2層構造と窓 Fig.2 Layer and window ことができる。 3.2 線図形の入力と入力点拘束 線の入力コマンドを選択すると,マウスの位置が十 字の図形カーソルとして表示される。位置を定めた後, マウスのスイッチsw 1を押すと次々と点が入力され, 先の点と結んだ線となる。 しかしながら,マウスで正確な位置を設定するのは 困難なので,入力格子および方向の拘束を受けること ができる(図一3)。格子は指定した間隔で画面上に表示 され,図形カーソルはこの格子上に拘束されながら移 動する。この格子は最小単位の目盛として利用できる。 方向拘束は前の点から見た次の点の方向を4または 8に拘束する。4方向拘束の場合,図形カーソルは前の 点に対し,水平または垂直にしか移動しないため,線 は水平または垂直線となる。8方向拘束の場合も同様 であり,前の点から見て,45度刻みの最寄りの線分に 拘束される。ただし,この方法では,最終点の位置が 定まっているときは具合が悪い。そこで,最終点を尊 重し,逆に前の点を拘束に合致するよう移動すること もできる(図一4)。 線はあらかじめ指定した層上に作画される。層に対 してはあらかじめ線の色と線種(実線,点線,鎖線等 の種類)が定まっている。この対応関係は,必要なら コマンドで変更できる。 3.3多角形,塗りつぶし 多角形は閉じた直線群であり,最終点を指定すると,(a)格子拘束
X :}旨定し寸こ点 ×一一
(b)方向拘束
o:実際の点 図一3 入力点拘束 Fig.3 Position restriction by grids..一一.一.// P1 P2 P3 P4 P3 P4
/x /
ノ /
●一一一一一一一i←−e・ P2 P2P4を優先した方向拘束
図一4 方向による拘束 Fig.4 Line constraint by direction 開始点と最線点が自動的に接続される。この場合も, 方向拘束が指定されていると自動的にこの拘束を満た すよう最終点が補正される。この多角形に対しては塗 りつぶしが指定できる。塗りつぶしはscan line手法1) を用いている。塗りつぶす多角形が重なると,塗りつ ぶす順序で結果の画面が異なることになる。ここでは 層番号順に描画することとする。したがって,大きな 層番号の多角形に重なる小さな層番号の多角形は隠さ れて見えなくなる。 3.4 円,自由曲線 円は中心と半径,弧の場合は加えて開始点と終了点 を指定する。自由曲線はべシェ曲線とスプライン曲線 を選択して利用する。円も自由曲線も内部では多点の 折線として近似する。この近似の度合(折線の線素の 長さ)はコマンドで指定できる。したがって,コマン ド入力後は円や自由曲線も線図形として扱われる。円 や自由曲線については,円に接する直線や,円や直線 間の交点等の細かいコマンドが必要であるが,これら はまだ用意されていない。 3.5英数字 英数字は利用者が指定した高さ,幅,間隔で表示す ることができ,文字列の表示方向も8方向が指定でき る。このために,英数字や記号は直線の集合としてメ モリ上に記憶した。 利用法は文字列の先頭位置をマウスで定め,文字列 は鍵盤より入力する。文字列の方向,サイズはあらか じめ別コマンドで設定しておく。表示する枠を先に定 め,その中に文字を均等配置することもできる。図一6 o⊃ 巴 匡 図一6 英字表示例 Fig.6 Example of characters に表示例を示す。 3.6 日本語 通常のワープロでは日本語は16×16または24×24 の点の集合で定義されるが,これでは,任意形状(幅, 高さ)が要求される画面上の表示には不適当である。 ここでは,英数字と同様,漢字も線図形の集合で定義 する(現在,主なJISの第一水準の漢字パタンが用意 されている)。 図面での利用法は,まず,メッセージ領域に日本文 一行を編集する。この段階では,パソコンの漢字表示 (16×16)機能を用いる。入力法はローマ字仮名変換, 音読みから漢字一字への変換,辞書を用いた読みから 熟語への変換が利用できる。 編集した文字は指定した高さ,幅,間隔で図面上に, 線分の集合として描画される。このとき,漢字のパタ ンをディスクから読みながら書くため,表示速度は秒 2∼3文字程度となる。図一7に例を示す。 漢字パタンや辞書の編集は,図形システムとは独立 した保守プログラムで行う。本システムの日本語編集 機能は高級なワープロと比してまだ貧弱ではあるが, 図面入力システムの中での日本語処理機能の重要性は 高い。 3.7 セグメント,図形ライブラリ__」一一一4加拘束直線
∠≡二]8方一一
一_ノ(スプライン曲緯
図一5 直線,多角面,曲線の入力側 Fig.5 Example of line, polygow, curve Eヨ本
語
入
力
・<悟
口日本語入力
あいうえお
図一7 漢字表示例 Fig.7 Examples of chinese characters図形の任意の部分を切り取り,それを新しい図形と して名前により利用できる。これを図形セグメントと 呼ぶ。定義された図形セグメントは名前の指示により 任意の位置に配置できる。また,セグメントはファイ ルに保存されるため,必要に応じてファイルから取り 出すこともでき,取り出すときにXまたはY軸で反 転(ミラ)したり,各軸にそってくり返し配置するこ ともできる(図一8)。 配置には二種類の方法が利用できる。一つはセグメ ント呼び出しで,内部的にはセグメントそのものの配 置をする一つの図形コマンドとして記憶される。した がって,セグメント全体の消去や移動等の編集は可能 であり,必要な記憶量も少ないがセグメントの個々の 図形要素の編集はできない。他の方法は展開によるセ グメントの配置で,この場合,そのセグメントの個々 の図形をコマンドで入力したことと同等になる。この 場合,各図形は別々の図形コマンドとして記憶される ため,個々の図形の編集は可能であるが,記憶容量は 増加し,セグメント単位の処理はできなくなる。 3.8 各種の設定 入力点の格子間隔や方向拘束,各層の表示色や線種, 窓の大きさや位置,表示する層等はコマンドで随時変 更できる。 窓の設定は右上の窓表示部で行う。窓設定コマンド を選択すると図形カーソルは窓表示部に移る。左下と 右上で窓を指定する。画面は指定した窓に応じて書き 直される。画面の一部を拡大するには,右上の窓表示 部で指定するより,直接画面内で窓を設定する方が容 易なので,この方法で窓を設定することもできる。 3.9 図形の編集,移動,消去
ヰ}
( ∈L)辰車云(t章f象 ) 図一8 Fig.8KK《
当や1
〔b)繰り返し(〔3十2) セグメントの利用例 Examples of segment operation[=rm]
入力した線図形や文字は位置の変更,修正,消去が 可能である。線図形の場合,折線の一部を別の折線に 修正できる(図一9)。移動や消去は一図形単位または指 定した長方形内の図形全体に対して行うが,対象図形 を一度点線におきかえ,確認後消去する。 3.10 ファイル 図形全体をファイル名をつけて保存することができ るし,逆に,保存された図形ファイルを読み取り,編 集することができる。このとき,前の図形を消して読 みとるか,重ね合わすかの指定もできる。 セグメント図形は一つのファイルに複数保存でき る。セグメントを保存するファイルは切り換え可能な ので,異なるファイル上のセグメントも利用可能であ る。ディスク上のファイル名や,ファイル上のセグメ ント名はコマンドで一覧できる。 4.データ構造 4.1 図形の内部構造 図形はそれを入力したコマンド単位に記憶される。 コマンドは一般に 〈コマンド長〉〈コマンド種別〉〈層〉〈図形データ〉の 形となる。たとえば,線図形の場合は図形データは点 の列となり,文字の場合は,〈幅〉〈高さ〉〈間隔〉〈方 向〉〈原点〉〈文字列〉となる。図面はこれらのコマン ドの集合となるが,コマンドを無秩序に並べると図形 の取り出しに時間がかかる。ここでは,まず,全図面 を16×16のブロックに分割する。つぎに,各コマンド に対しビットマップを求める。ビットマップはXY方 向に各ブロックに対応したビットを持つ32ビットの データである。図形コマンドに対するビットマップの 各ビットの値は図形が各ビットに対応するブロック内 に存在するとき1,そうでないとき0とする。図一10に 4×4のブロックに分割した場合のビットマップの例 を示す。 コマンドは同一のビットマップを持つ固定長(現在 512バイト)のレコードに記憶する。レコードは,先頭 にビットマップ,最後に次のレコードを示すポインタ 〔a.)多角形 (b〕修正後 図一9 線分の修正 Fig.9 Line modification 00]o
∈〕 ユ 1 日
図一10 ビットマップ(4×4) Fig.10 Bitmap(4×4)卜11
CllC12
定数 レコード1 レコード2 レコード3帽2c21c22≡=三巳〕
(lil)図形ファイル M:ビットマップ まtこは セグメント名 (::コマンド 図一11 図形の内部構造 Fig.11 1nternal structure of figure デ{レク1リ1ディレクトリ2 レコード1 レコー}‘2 を持つ(図一11)。図形コマンドは同一のビットマップ を持つレコードに記憶する。したがって,十分な空領 域を持つ同一ビットマップを持つレコードが存在しな いときは,動的にレコード領域を確保し,そのレコー ドのビットマップを定めた後,図形コマンドを記憶す る。 各図形コマンドを同一ビットマップを持つレコード に分割記憶するのが,本システムのデータ構造の特長である。ここで用いている16ビットマイコンと
PASCALシステムではデータ領域は64KBに制限さ
れる。しかし,動的なメモリ領域(ヒープ領域)を用 いると,データ領域は64KB以下の単位でメモリ実装 量まで確保できる。本システムのデータ構造をレコー ドに分割した主な理由はここにある。本データ構造の 他の特徴を以下にまとめる。 1.窓が変更されたとき,画面を書き直す必要がある が,窓に対応するビットマップがすべて0のレコー ドは画面には含まれないから描画が不要である。 2.カーソルで指定された図形をさがす場合,カーソ ル点のビットマップを0とするレコードはさがす必 要がない。 3.各レコードは容易に直編成(ランダム)ファイル に保存したり,取り出したりできる。 4.特殊なビットマップを持つ図形が一つでもあれ ば,それだけで1レコードを占有するため,メモリ の利用効率が悪くなる。 このデータ構造は,木構造による階層化データ構造 ではない。ICのマスクパタンのように,明確な区分構 造を持つ場合は,機械的な分割ではなく,木構造によ る管理が必要であろう。 4.2図面のファイル構造 本システムは二種のファイルを生成する。一つは主 図面ファイルで先頭にシステム定数や使用したライブ ラリファイル名を記憶したヘダレコードがあり,以下 にビットマップ付の図形レコードが続く。 他のファイルはライブラリファイルで,先頭の2レ〔b)ライプラリファイル
図一12 図形とライブラリファイル Fig.12 Figure and library file コードにセグメント名とそのセグメントの先頭レコー ドとサイズを示すディレクトリを持つ。定義したセグ メントはコマンドにより随時ライブラリファイルに書 き出すことができる。 したがって,セグメントを利用した図面は,一つの 主図面ファイルと複数のライブラリファイルに分散し て保存される。 4.3漢字のデータ構造 (a)漢字のパタン 漢字は直線の集合として記憶さ れるが,このデータは直編成ファイル上に記憶される。 メモリ上には漢字のJISコード(第一水準)に対して, 対応するパタンを記憶したレコードの索引表を持ち, この表はシステムの起動時にメモリに読み込まれる。 漢字のパタンは32×32の点列上に端点を持つ直線 の集合で表現される。各点の座標(x,y)は100・x十 yの値を持つ一つの整数で表わされ,線分の最初の点 には負符号をつけた後,16点をまとめてファイル上の 1レコードとする。 (b)単漢字変換表 読み一漢字変換は音読み一単漢字 変換と読み一熟語辞書変換の二種を持つ。単漢字変換 はJISの第一水準が音読みの順に配列されていること を利用し,音読みとその圧縮JISコードの範囲を表で 持っている。この方法は最小のプログラムとデータで 第一水準の漢字を選択できるが,一つの漢字に対し, 一種の音読みしか許さないため,求める漢字の読みが 不明となる場合もある。 (c)熟語辞書 熟語辞書は音読み一熟語ファイルと音 読み索引ファイルからなる。音読み一熟語ファイルは 音読みと熟語を並べた直編成ファイルで,各レコード は次のレコード番号をポインタとして持つ。音読み索 引ファイルは音読みによるB氏木2)(固定レコードを 持つ順序木)で音読み一熟語ファイルの先頭レコード を持つ(図一13)。 B氏木による索引ファイルとリンクされたレコード による熟語辞書は辞書への追加や検索の高速化に役立 ち,8インチディスクを用いても1秒程度でアクセス\\ /
「 アイル
640*400 Co10r dtsplay頭欝知M
三=ユ}・...一 かんじ 漢字 音読み一i熟語ファ〆fル 図一13 熟語辞書 Fig.13 Structures of dictionary N±1El−ICPC9801 M●mory 512Kbンto O【8k unL士 K●y board MeUs● F〔三i日YS システム構成 Prtnt●r CP/M86 図一14 XYフ゜ロッタ出力例 Fig.14 Sample output of XY PIotter を完了することができる。 5. グラフィックルーチン PC9800は専用のグラフィックプvセサを用いてい るため,直線の描画は速いが,プロセサへ送付するコ マンドが複雑なため,コマンド作成に時間がかかる。PC9800にはモニタROM中に多くの図形機能を持っ
ているが,本システムでは直接グラフィックプロセサ ヘコマンドを送っている。 5.1 直線表示 本システムが利用したマイコンはグラフィック専用 のプロセサを持っている。このプロセサは,画面(640× 400点)内の1/8象限で,指定された線種(実線,点線), モード(AND, OR, EXOR)で直線を表示する。この 直線表示を利用し,クリップ処理,窓変換等をする直 線表示ルーチンを用意した。 ワールド座標系は2バイト整数空間とし,窓空間(ウ インドウ),表示空間(ビューポート),モード,層に より表示を行う。窓空間,表示空間の処理のため,X・ y/Zの形の計算が必要である。これを実数空間上で行 うと描画速度が遅くなるので,この計算を4バイトの 整数演算命令を利用し,アセンブラで記述した。クリ ップ処理も同様である。 モードは標準(AND)モードと反転(EXOR)モー ドがある。反転モードはすでに描画されていればそれ を消し,描画されていなければ表示するモードである。 カーソルは反転モードで書き,このカーソルを消すに は,もう一度反転モードで書き直す。一度書いた図形 を消すにも,反転モードで書き直すが,この場合,重 複した図形では必要な線まで消してしまう。層は色と 線種を持つ。線種は16ビットのビットパタンで指定 できる。たとえば,16進5555では一番細かい点線とな り,3333では2点単位の点線となる。 5.2 文字表示,その他 文字,円,自由曲線はすべて直線表示に帰着される。 多角形の塗りつぶしはスキャンライン法1)によるが, 多角形の一部が画面外に出る場合があるため,スキャ ンラインの表示もクリップ処理を通している。塗りつ ぶしに要する時間は,BASICインタプリタ内での塗り つぶしと大差はない。 5.3マウス入力 図形入力の位置指示はマウスで行う。マウスは1バ イトのX,yカウンタと二つのスイッチを持つ。カウン タの値を読むことにより,現在位置からの相対移動方 向を知り,ワールド座標系の図形カーソルの値を補正 する。点の指定(確定)のためスイッチを押すが,こ のときマウスの位置が変化することが多く,格子拘束 をしないと不正確な点指定になり易い。 本システムでは,マウスの代わりに鍵盤キーでも図 形カーソルの指定ができる。上下左右の移動はコント v一ルシフトした文字E,X, S, Dで,さらにその10 倍の移動をR,C, A, Fで行う。このキーは鍵盤配置 位置と合致しており,英文スクリーンエディタの操作 とも一致している。マウスの二つのスイッチはスペー スとCRキーで代用する。 5.4 ハードコピー 画面のハードコピーはドットプリンタを用いて随時 とることができる。また,本システムと独立に図形ファイルを多ペンXYプuッタに出力することも可能
で,OHPの透明フィルムに直接作画するとカラー
OHP原稿ができ上がる。 XYプロッタの出力例を図一 14に示す。 6.本システムの操作法 実行ファイルとしてFGSYS. CMDとオーバーレイ ファイルFGSYS. nnn(nnnは0∼12で計160 KB)が 必要である。漢字を使用する場合は三種のファイル, KAN. IDX. KAN. PAT(計160 KB)とKAN. DIC(300KB)が必要である。コマンドは FGSYS〔ファイル名〕 で,ファイル名を指定するとそのファイルを初期図面 とする。起動すると図面の最大サイズを問い合わせて くるから,2バイトの整数値で答える。また,点指定を マウスで行うか,鍵盤で行うかも指示する。初期設定 が終了すると図一1の画面となる。マウスのsw 1を押 すと点位置の指示となる。sw 2を押すと次のマウス指 示はコマンドの指示となる。たとえば,多角形を入力 するには,主メニューで,LINEを選択し(ここでメニ ューはサプメニューに変わる),画面上で多角形の点を 指示した後,サブメニューPOLYを指示すると多角形 の入力が終わる。主メニューに戻るにはサブコマンド ENDを選択する。 7. あとがき 本システムは,研究発表のOHP原稿の作図に利用 し,有用性を確認している。また,本システムはICの マスクパタン作成がアナログを含むプリント基板のパ タン作成の基本システムとして利用する予定である。 今後,本システムは電算化製図器として細部を仕上げ る予定である。 なお,本システムはPASCALで記述され,15 K行 程度である。メモリ節約のため,主なコマンドごとに オーバレイ配置されている。