JPH07200664A - 図面の塗り潰し方法 - Google Patents

図面の塗り潰し方法

Info

Publication number
JPH07200664A
JPH07200664A JP5336295A JP33629593A JPH07200664A JP H07200664 A JPH07200664 A JP H07200664A JP 5336295 A JP5336295 A JP 5336295A JP 33629593 A JP33629593 A JP 33629593A JP H07200664 A JPH07200664 A JP H07200664A
Authority
JP
Japan
Prior art keywords
line
offset
contour
aperture
lines
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP5336295A
Other languages
English (en)
Other versions
JP2870397B2 (ja
Inventor
Kazushi Tanaka
一至 田仲
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
NEC Corp
Original Assignee
NEC Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by NEC Corp filed Critical NEC Corp
Priority to JP5336295A priority Critical patent/JP2870397B2/ja
Publication of JPH07200664A publication Critical patent/JPH07200664A/ja
Application granted granted Critical
Publication of JP2870397B2 publication Critical patent/JP2870397B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Landscapes

  • Image Generation (AREA)

Abstract

(57)【要約】 【目的】 CADにより作成された多角形の図形の内、
複数の輪郭線を持つ物でも塗り潰せるようにし、また精
度は保ちつつ塗り潰しに必要な線の総延長を短縮する。 【構成】 多角形のすべての輪郭線に順位付けする処理
3と、各レベルのオフセット線の有効範囲を判別する処
理4と、アパーチャ(またはペン)の塗り幅を考慮した
時に、重複している部分を削除して、塗り潰し線の総延
長を短縮する処理8と、オフセット線を最小アパーチャ
から作成するので、次のオフセット線を2倍のアパーチ
ャにする処理7および処理11を持つ。アパーチャを倍
々にする事により精度を保ちつつデータ量およびハッチ
ング線の総延長を短縮できる。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は図面の塗り潰し方法に関
し、特に多角形の図形の図面の塗り潰し方法に関するも
のである。
【0002】
【従来の技術】従来、多角形の図形の塗り潰しは、図形
を塗り潰すために用意されたアパーチャ、あるいはペン
の中から最大径の物を選び、そのアパーチャ、あるいは
ペンで塗り潰せない部分は、アパーチャあるいはペンを
径の小さいものに替えて塗り潰していた。
【0003】フローチャートを図2に示す。
【0004】最初に処理13により、CADデータの中
から多角形のデータを読み込む。多角形のデータの内、
外形データのみを処理14にて取り出す。次にオフセッ
ト線作成処理15について説明する。
【0005】まず、処理15,19,20に関係するア
パーチャ(またはペン)テーブルを作成する。アパーチ
ャ(またはペン)テーブルは複数の多角形を含むCAD
データを処理するごとに用意してもよいし、予め固定の
テーブルを用意してもよい。アパーチャ(またはペン)
テーブルには、アパーチャ(またはペン)の大きさ、ア
パーチャ(またはペン)をそれぞれ区別できるコード、
色などの情報を持たせ、アパーチャ(またはペン)の大
きさを基に、大きいものから順に配列に並べる。配列の
個数がアパーチャ(またはペン)の数に相当するため個
数を記憶しておく。アパーチャ(またはペン)テーブル
の例を表1に示す。
【0006】
【表1】
【0007】各配列には、アパーチャ径、色、コード
(アパーチャ名称)などの情報を持たせておく。配列番
号はアパーチャの個数を知るために付けてあり、ここで
は、8個の配列がある事を記憶しておく。使用するアパ
ーチャは、大きさにより判別される。以下の説明では、
簡単のためにアパーチャのみとし、必要な色は黒のみと
する。また実用上は、コードが必要であるが、図形を塗
り潰す処理の説明には、コードは特に必要ないので、省
略する。(ペンの場合、アパーチャとペンを読み替えて
も何ら問題がないのは明白である。) アパーチャテーブル作成後(または固定のテーブルの場
合そのテーブルより)配列要素1番目よりアパーチャを
選択し、オフセットする量をアパーチャの半径とし、オ
フセット方向を外形に対して内側方向とし、オフセット
線を作成する。例を図3に示す。外形21に対し、アパ
ーチャの半径分の距離を保ったオフセット線分22を作
成し、外形21の線分の接続情報(またはデータ構成)
により、線分22の有効部分を接続して、オフセット線
23を得る。
【0008】次に処理16により、オフセット線の有効
範囲の判別を行う。まずオフセット線は、一筆書きでき
るループを形成しているので、自己交差が存在するかど
うかを調べる。存在しなければ、オフセット線の全てが
有効となる。自己交差が存在する場合、交差点によりオ
フセット線を分割して新しいループを形成する。ただ
し、この時各ループを形成する線分の方向は保存してお
く。各ループが右回り構成であるか左回り構成であるか
を調べて、外形の構成と同じ構成のループを有効範囲と
する。図3の例では、外形21の構成ループの方向24
が右回りとなっている。自己交差25,26により、オ
フセット線23を3つのループに分割する。この例では
自己交差25,26で挟まれたループだけが左回りとな
り、削除される。残ったループ2つがオフセット線有効
範囲となる。
【0009】次に判断17であるが、1回目の処理16
の直後は、必ずnoとなる。
【0010】次に処理18で有効オフセット線で閉じた
領域を塗り潰すためにハッチング線を作成する。ハッチ
ングピッチは、直前の処理15で使用したアパーチャの
直径(実用的には、機械の誤差を考慮して、アパーチャ
の直径マイナス許容誤差とするのが良い)とする。ハッ
チング方向は任意であるが、線分の総延長が最小となる
ようにするのが、一般的である。また、ハッチング線作
成の前に、ハッチングに使用するアパーチャの半径をオ
フセット量とするオフセット線を計算し、そのオフセッ
ト線の有効範囲が存在するかどうかを確認する。図3の
例では、この確認を行うとハッチング線が作成されな
い。(する必要がない) 次に判断19でより小さなアパーチャがあるか調べる。
表1のアパーチャテーブルを見ると使用可能なアパーチ
ャが存在する事がわかるのでyesとなる。アパーチャ
を小さくする事により、多角形の輪郭がより高精度に塗
り潰せるようになる。また、図3の例では、削除された
部分がまだ塗り潰せていないので、アパーチャを小さく
する事により、塗り潰せるようになる。ただし、最小の
アパーチャで塗り潰せない部分は、多角形を塗り潰す際
の誤差となる。
【0011】処理20によりアパーチャを小さくすると
ともに、オフセット量、アパーチャコードを変更する。
その後、2回目の処理15を行う。この様に順次アパー
チャがなくなるまで繰り返す。
【0012】図2のフローチャートでは、ハッチング線
の作成を1回しか行わないようにしているが、この実現
のためにはアパーチャの径を小さくする段階で、アパー
チャの径を50%未満にしてはならない。例として表1
のアパーチャテーブルで配列番号3がなかったとする
と、図2の処理20でアパーチャを1段階小さくすると
25%となる。このとき、1回目のアパーチャで塗り潰
せなかった部分を25%の大きさのアパーチャで塗り潰
そうとするとハッチング線が必要となる。図4において
オフセット線27が1回目のアパーチャの軌跡で、オフ
セット線28が25%の大きさのアパーチャの軌跡であ
る。円29,30は、各アパーチャの大きさのイメージ
を表しており、斜線部分31にハッチング線が必要にな
る事がわかる。
【0013】以上のような手順で多角形は塗り潰されて
いた。
【0014】なお、この種の塗り潰し方法に関連するも
のに、特開昭64−44580号公報が、オフセット線
作成に関連するものに、特開平2−51779号公報が
挙げられる。
【0015】
【発明が解決しようとする課題】従来技術では、アパー
チャ(またはペン)の大きさを小さくして塗り潰して行
く課程で、既に塗り潰せている部分にもオフセット線を
作成しているため、アパーチャ(またはペン)の軌跡の
総延長が長くなってしまう。また、用意された(また
は、処理ごとに作成された)アパーチャ(またはペン)
テーブルの中の最小のアパーチャ(またはペン)よりも
小さい多角形は塗り潰せないので、削除しなければなら
ないが、繰り返し処理が最小のアパーチャ(またはペ
ン)を使用するに至るまで、判断できず、計算処理に無
駄がある。
【0016】オフセット線作成方法においても、複数の
輪郭線を持つ多角形の場合や、オフセット線の閉ループ
の方向性による判別が不可能となるオフセット線が重な
ってしまう場合など、解決されていない課題がある。
【0017】
【課題を解決するための手段】上述した問題点を解決す
るため、本発明の図面の塗り潰し方法では、1つの多角
形に属する輪郭線が複数存在する時に、複数の輪郭線を
順位付けするステップと、オフセット方向を各輪郭線ご
とに判別するステップと、作成したオフセット線の有効
範囲を自己交差及び他のオフセット線との交差,重複な
どの条件により判別し、オフセット線の有効部分で形成
される新たな閉ループを抽出するステップと、塗り潰し
に必要な線分の総延長を短くするステップとを備えてい
る。
【0018】
【作用】まず、多角形の複数の輪郭線にそれぞれの包含
関係により最外に位置するものから、レベル一,レベル
2…と順位付けする。同様にそれぞれのオフセット線に
もレベルを付けることで、レベルの違うループ同志と関
係を判別できる。
【0019】オフセット量は、アパーチャ(またはペ
ン)テーブルの1番から順に選択して決まるので、径の
小さいものから使用できるようにテーブルを作成する。
これで、最初の判別で、塗り潰せる大きさより小さな多
角形を容易に削除できる。
【0020】オフセット線を作成する処理を繰り返す
と、アパーチャ(またはペン)の実際の軌跡が重なる部
分がでてくるので、その部分を削除することにより、塗
り潰しに必要な線分の総延長を短かくできる。
【0021】上記処理を適用することにより、課題を解
決することが可能となる。
【0022】
【実施例】以下、本発明の実施例に基づいて説明する。
【0023】図1に本発明のフローチャートを示す。入
力1により多角形データの読み込みを行う。
【0024】次に処理2において、多角形のすべての輪
郭線を抽出する。具体的には、輪郭線は閉ループとなっ
ているので、線分データの接続関係を調べ、ループがい
くつ形成されているかを調べる。図5の例では、輪郭線
32,33の3つのループが見つかる。
【0025】次に処理3において輪郭線の順位付けを行
う。輪郭線同志には、接続関係はなく包含関係のみが存
在している。よって各輪郭線を構成する要素の絶対座標
値のX方向成分の最大値,最小値とY方向成分の最大
値,最小値を各輪郭線ごとに求め、大小関係から包含関
係を判別する。外形をレベル1の輪郭線とすると、それ
に含まれる輪郭線を、レベル2とする。さらにレベル2
の輪郭線に含まれる輪郭線を、レベル3とする。このよ
うに包含関係により輪郭線にレベルを付けることで順位
付けする。次に輪郭線の方向を決める。レベル1の輪郭
線は右回りでも左回りでもよい。ただしレベル2以降の
輪郭線は、一段階上位レベルの輪郭線と逆方向とする。
図5では、輪郭線32がレベル1、輪郭線33(ループ
数2)がレベル2となる。各レベルの輪郭線のループの
方向は、レベル1が右回り、レベル2が左回りとする。
【0026】次に処理4において、オフセット線を作成
する。オフセットする方向は各輪郭線のレベルによって
決定する。奇数レベルのとき輪郭線で閉じた領域にオフ
セットする。偶数レベルのとき、輪郭線で閉じた領域の
外側にオフセットする。オフセット方向を決定した後、
輪郭線を線分ごとにオフセットする。オフセットする量
は、多角形を塗り潰すために用意したアパーチャ(また
はペン)テーブルに従って決定する。テーブルは、表1
に示すような配列であるが、本発明の場合、径の小さい
ものから順に使用し、オフセット量は径の1/2とす
る。
【0027】オフセットした線分は、輪郭線の接続関係
を保つように、交点でつなぐ。輪郭線上で接続していた
線分のオフセット線同志が交点を持たない場合、円弧で
つなぐ。図6の例で説明する。輪郭線分36,37,3
8は接続関係があり、輪郭線の方向は右回りとする。輪
郭線分をオフセットした各線分を破線で示す。輪郭線分
36,37をオフセットした線分は交点39を持つ。よ
って交点39でオフセットした線分同志をつなぐ。次に
輪郭線分37,38をオフセットした線分は、交点がな
いので、円弧40にて接続する。円弧40の中心は、輪
郭線分37の終点、または輪郭線分38の始点とする。
こうして隣接する輪郭線分をオフセットした線分を接続
し、オフセット線を作成する。このときオフセット線は
輪郭線の方向とレベルを受け継ぐ。
【0028】輪郭線の構成の中に円弧が含まれる場合
で、オフセット方向が円弧の中心座標が含まれる領域側
であり、オフセット量が円弧の半径より大きい場合、円
弧のデータを削除する必要がある。図7の例で説明す
る。オフセット線は輪郭線から等距離にある線だから、
円弧をオフセットする場合、図7(a),(b)のよう
に、円弧41に対してのオフセット線43は、円弧41
の中心42を中心座標とする同心円の一部となる。この
とき、図7(a)は、オフセット方向が円弧の中心座標
がある側と逆なので、オフセット量を考慮しなくてよ
い。しかし図7(b)の例では、オフセット方向が円弧
の中心座標がある側なので、オフセット量が円弧の半径
よりも大きくなった場合、円弧のデータを削除した方が
計算が楽になる。仮に、円弧の半径よりも大きいオフセ
ット量でオフセット線を作成すると図7(c)の一点鎖
線44のようになるが、これは図面上の話である。計算
機では、円弧の半径からオフセット量を差し引いた値を
半径とする円弧を作成しようとするが、図7(c)の例
では、負の大きさの半径を持つことになり、判断が複雑
になる。また図7(c)の側で判るように、仮円弧44
を含むループは、量の向きの判定で必ず削除される。よ
って最初から円弧データを無視してオフセット線を作成
しても問題はない。
【0029】次に処理5において、オフセット線の有効
範囲を判別し、新たな輪郭線を作成する。有効範囲はレ
ベル1より順に判別する。ただし、有効範囲同志が干渉
(交差)する事があるので、干渉(交差)の可能性があ
る奇数レベル、偶数レベル一組のオフセット線の有効範
囲を判別するごとに、オフセット線同志の干渉(交差)
を判別する。判別により決定された有効範囲を各レベル
の新しい輪郭線とする。
【0030】次に有効範囲の判別方法を説明する。まず
レベル1のオフセット線に自己交差が存在するかを調べ
る。自己交差が存在しなかった場合、レベル1のオフセ
ット線は、そのすべてが有効範囲となる。自己交差が存
在する場合、交差点でオフセット線を分割する。ただ
し、オフセット線の線分が重なる場合、これを交差とせ
ず、オフセット線の分割も行わない。オフセット線は、
1つのループであるが、分割によりループの数が増え
る。分割された各ループは、その方向がレベル1の輪郭
線の方向と同じ場合、有効とし、逆方向の場合は、無効
として削除する。図8(a)の例では、破線で示したオ
フセット線に対し、交差点45,46でループを分割
し、有効範囲であるループ47,48を得る。このよう
にしてレベル1のオフセット線有効範囲を決定する。
【0031】次にレベル2のオフセット線の有効範囲を
判別する。まず自己交差が存在するか調べる。この処理
は、レベル1と同様である。次にレベル2以降の処理と
して、同レベルのオフセット線同志の干渉(交差)を調
べる必要がある。この場合、交差点によりループのつな
ぎ替えを行う。複数存在するオフセット線の閉ループの
うち、任意の1つの閉ループの、任意の線分から、自身
のループの方向へたどって、交差点で自身以外の閉ルー
プへ接続する。この時、自身以外の閉ループへの接続
は、方向を保つようにする。これを最初の線分に戻るま
で続けると新たな閉ループが得られる。
【0032】次に最初に選んだ任意のループを、最初の
交差点からたどって、同様に閉ループを得る。これを分
割前の各ループの構成要素がすべて使用されるまで続け
る。図8(b)の例で説明する。図では、レベル1の輪
郭線49のオフセット線を簡単のために省略してある。
まずレベル2の輪郭線50に対し、破線で示すオフセッ
ト線を作成する。左右どちらか一方のループの任意の線
分からたどっていくと、交差点51、あるいは52のど
ちらかに当たる。そこで、ループの方向(ここでは左回
り)を保ちながら、ループのつなぎ替えをする。これを
最初に選んだ任意の線分に戻るまで続けると、閉ループ
53、あるいは54が得られる。次に左右のループのう
ち、最初に選んだループを交差点51,52のうち、最
初に当たった方からたどっていくと、閉ループ53,5
4のうち、先に得られたもの以外が得られる。
【0033】閉ループのつなぎ替えが完了したら、それ
ぞれの閉ループの包含関係を調べる。包含関係の判別
は、処理3の順位付けと同様に、最大、最小のX,Y方
向成分を求めて比較すればよい。これにより最外に位置
するループをレベル2のオフセット線有効範囲とする。
次に最外に位置するループに含まれるループ(複数ある
場合は、そのすべて)について、ループの方向を調べ
る。レベル2の輪郭線と同じ方向の場合削除する。逆方
向のものがあれば、このループもオフセット線の有効範
囲となる。図8(b)の例では閉ループ54は削除され
る。
【0034】ここで、レベル1及びレベル2のオフセッ
ト線有効範囲の干渉(交差)と包含関係を調べる。図形
を塗り潰すためのオフセットを考えれば、レベルの順序
が奇数、偶数という場合に、オフセット線同志に干渉
(交差)の可能性がある。まず干渉(交差)が存在する
かを調べる。干渉(交差)が存在しない場合、レベル1
及びレベル2のオフセット有効範囲の包含関係が、それ
ぞれの輪郭線の包含関係と同じであるか調べる。包含関
係が同じ場合、両オフセット線とも最終的に有効であ
り、逆転している場合、両オフセット線とも削除する。
図5の例では、レベル1のオフセット線34とレベル2
のオフセット線35は、干渉(交差)がなく包含関係に
逆転もないので、それぞれ新しい輪郭線となる。包含関
係が逆転した場合、オフセット線は作成されない事にな
るが、この多角形はアパーチャ(またはペン)の精度以
下という事でデータより削除してもよい誤差とする。干
渉(交差)が存在する場合、交差点でループを分割す
る。分割方法は、同レベルのオフセット線同志の干渉
(交差)がある場合と同じである。レベル1のオフセッ
ト線のループの線分からたどって、レベル2のオフセッ
ト線のループとの交差点で、ループの方向を保つように
つなぎ替え、レベル1のオフセット線の最初に選んだ線
分に接続するまでたどると、有効範囲が決まる。判断方
法は、分割されたループの方向が、レベル1の輪郭線と
同じ方向の場合有効とし、逆方向の場合無効として削除
する。図9の例では、レベル1のオフセット線55とレ
ベル2のオフセット線56を交差点でループのつなぎ替
えをした後、新しいループの方向から、有効範囲57を
得る。
【0035】レベル2とレベル3の輪郭線に対するオフ
セット線については、オフセットする方向が互いに遠ざ
かる方向にあるため、干渉(交差)や包含関係は調べる
必要がない。一般的に図形の塗り潰しに関し、オフセッ
ト線のレベルが偶数、奇数という順序の並び関係の時、
干渉(交差)や包含関係は調べない。調べる必要がある
のはオフセット線のレベルが奇数、偶数という順序の並
び関係(1,2および3,4…)にある場合である。
【0036】この処理5において有効範囲を判別するた
めに、干渉(交差)を調べたが、もし2つのループが線
分を共有する(線分要素の一部または全部が重複する)
場合、これを交差とせず、ループの分割も行わないもの
とする。これにより、重複した線分上をトレースできる
アパーチャ(またはペン)は、オフセット量を半径とし
なくてはならない。このことが後の処理のオフセット量
を2倍ずつ大きくするという根拠となる。
【0037】次に判断6で処理5を通過したのが1回目
であるかを調べる。1回目のとき、処理7を実行する。
2回目以降のときは、処理8を実行する。
【0038】処理7でオフセット量を1回目と同じにす
る。すなわち最初の輪郭線から見ると1回目の2倍の距
離とする。これは、1回目のオフセット線をアパーチャ
(またはペン)の軌道とした時、アパーチャ(またはペ
ン)で塗り潰された領域の輪郭線を次のオフセット線と
するためである。これにより、オフセット線を繰り返し
作成するときに、すでに塗り潰せた領域を判別しなくて
よくなる。また塗り残りがなくなる。例えば、図10の
例で説明する。図の長方形をアパーチャ58で塗り潰す
ための軌道を作成すると破線のようになる。アパーチャ
58で塗り潰せなかった領域59を塗り潰すために本発
明では領域59の輪郭線をオフセット線として、大きさ
がアパーチャ58の2倍のアパーチャで、そのオフセッ
ト線をトレースする。もし、アパーチャを2倍よりも大
きくした場合、次にオフセット線がすべて無効となり、
領域59を塗り残す可能性がある。その場合、またアパ
ーチャを小さくしてハッチング線を作成するなどの処理
が増えてしまうので、効率が悪くなる。よってオフセッ
ト量は、2倍ずつ大きくしていくのが効率が良い。ただ
し、実際の処理では、オフセット線を新しい輪郭線とし
て次のオフセット線を計算するので、1回目のみオフセ
ット量は、アパーチャの径の1/2となるが、2回目以
降のオフセット量はアパーチャの径の1/4となる。つ
まり、2回目のオフセット量が1回目と同じとなるの
は、径を2倍してさらに1/4倍する事で、結果アパー
チャ径の1/2となるからである。
【0039】この後、処理3,4,5を実行し、判断6
でnoとなるので判断9を実行する。
【0040】判断9では、多角形の塗り潰しが完了して
いるかを調べる。処理5において、新しい輪郭線が作成
されなかった場合で、オフセット線の作成が2回目以降
であるという条件を満たしていれば、塗り潰しが完了し
たと判断できる。
【0041】処理8では、塗り潰しに必要なアパーチャ
の軌道の総延長を短かくする処理を行う。まず2回目の
オフセット線を新しい輪郭線として残しておく。
【0042】次に2回目のオフセット線を、奇数レベル
のものは閉ループで閉じた領域の外側に、偶数レベルの
ものは閉ループで閉じた領域の内側にオフセットする。
つまり処理4でのオフセット方向と逆向きにオフセット
する。オフセット量は、処理4と同じとする。ここでオ
フセットした線は、その大部分が1回目のオフセット線
と重複するので、重複した線分を削除してしまう。これ
により、オフセット線の総延長は短かくなる。しかし、
データ量は増加してしまうので、データ量を優先する場
合、処理8を実行せずに判断10へ進むようにすればよ
い。データ量が増加するのは、単純に説明すれば1本の
線分を2本の線分に分割するからである。図11の
(a),(b),(c),(d)を例にして説明する。
図11(a)で外形64,65に対してレベル1のオフ
セット線60、レベル2のオフセット線61を作成す
る。図11(b)は、図11(a)のオフセット線6
0,61を新しい輪郭線として、2回目のオフセット線
を作成したものである。この2回目のオフセット線62
に処理8を実施すると、図11(c)の破線63が得ら
れる。この破線63を図11(a)の1回目のオフセッ
ト線60,61から差し引いて、オフセット線60,6
1の残った部分を示したものが図11(d)である。図
11(d)を得ることにより、処理8は終了する。
【0043】3回目以降も、処理4と逆向きにオフセッ
トした線と1回前のオフセット線との差分をとって1回
前のオフセット線を更新する。
【0044】判断10では、オフセット線の作成回数を
カウントしつつ、任意の設定値に達したかを調べる。達
していない場合、処理11でオフセット量を2倍にして
処理3へ移す。設定値になっていた場合、処理12を実
行する。
【0045】処理12では、ハッチング線を作成する。
ハッチングに使用するアパーチャ(またはペン)は、最
後のオフセット線作成に使用したものと同じにする。ハ
ッチングピッチは、アパーチャ(またはペン)の塗り幅
よりも少し小さめとする。これは、作画機やプロッタの
動作の誤差を考慮したためである。ピッチは、最後のオ
フセット量の4倍から、誤差を差し引いたものとなる。
次にハッチングの作成法について説明する。ハッチング
方向は、ハッチング線がX軸と平行になるときを0度方
向、Y軸と平行になるときを90度方向とする。ここで
は、簡単のためにハッチング方向を0度、90度のみと
して説明する。
【0046】まず、新しい輪郭線のデータから、X方向
成分の最大,最小値、Y方向成分の最大,最小値を求め
る。次にX,Y方向成分の最大値,最小値の差を計算
し、X方向の差とY方向の差の比較を行う。このとき、
レベル1の輪郭線が複数あったとしても便宜上1つのル
ープ(輪郭線)と考えて、最大,最小を求める。この計
算は奇数レベルの輪郭線でのみ行う。なぜなら、この最
大値,最小値で囲まれた長方形の領域は、ハッチングを
仮想的に作成するための最小領域を求めたものなので、
各偶数レベルの輪郭線は、必ず奇数レベルに含まれてい
るため判断する必要がなくなる。
【0047】この仮想の長方形は、対角座標の1組がX
方向,Y方向とも最大値の座標とX方向,Y方向とも最
小値の座標で構成される。先のX,Y方向成分の最大
値,最小値の差のX,Y方向での比較により、この長方
形の長辺ガX,Yのどちらの軸に平行なのかを調べてい
る。X軸に平行である場合、0度のハッチング線を、Y
軸に平行である場合、90度のハッチング線を作成す
る。
【0048】以下0度方向のハッチング線を作成する長
方形を基準に考える。ハッチング線は、X軸に平行なの
で、Y座標によってハッチング線は決定される。Y座標
の最大値,あるいは最小値からハッチングピッチずつY
座標をずらしてハッチング線を長方形の内部に作成す
る。次にレベル1の輪郭線で閉じた領域の外側のハッチ
ング線は削除する。レベル1の輪郭線で閉じた領域の内
側は、その中にレベル2以降の輪郭線が存在しない場
合、処理12を終了し、レベル2以降の輪郭線が存在す
るとき、レベルの大きい方を優先として偶数レベルの輪
郭線で閉じた領域に含まれるハッチング線は削除し、奇
数レベルの輪郭線で閉じた領域に含まれるハッチング線
は残すという処理をする。具体的には、ハッチング線上
をX座標の小さい方から大きい方へたどっていき、レベ
ル1の輪郭線に当たったら、そこまでのハッチング線を
削除し、さらにたどってレベル1、あるいはレベル2に
当たったらハッチング線を2度目の交点で2分割し、交
点の左側の線を残す。さらに右側の線分をたどる。また
輪郭線に当たったらそこまでの線分を削除し、さらにた
どって輪郭線に当たったらそこまでを残し、さらにたど
る。これをハッチング線上のX座標が最大値になるまで
行う。X座標が最大値になった時点で、最後の線分も削
除する。このときただ一点での交差(接触)は交点とし
て扱わない。また輪郭線の線分がハッチング線に重複し
た場合も、交点はないものとする。計算機で実現するた
めには、1本のハッチング線とすべての輪郭線との交点
を計算する。このとき輪郭線との接触および重複は無視
する。求めた交点をX座標の小さい順に並び替えて配列
にする。配列の奇数番目を始点、偶数番目を終点とし、
1番目から順に線分を作成する事により、輪郭線を塗り
潰すためハッチング線ができる。これを各ハッチング線
に適用すればよい。
【0049】次に90度方向のときの処理を説明する。
まず仮想長方形に含まれる輪郭線のすべてを、座標値
X,Y成分とも0である点、すなわち複数の多角形を含
むCADデータの原点を中心として90度回転してしま
う。このときの回転とは、数学でいう座標の回転と同じ
もので、反時計回りを正の方向とする回転の事である。
こうする事により、ハッチングの計算を0度方向のハッ
チング線を作成する処理と全く同じとなる。ハッチング
線を求めたら、各ハッチング線を原点を中心として−9
0度回転することにより、90度方向のハッチング線を
得られる。
【0050】以上0度,90度のハッチング線作成につ
いて説明したが、0度を基準とすれば任意の方向(角
度)のハッチング線も作成できる。ます輪郭線のすべて
を回転し、その後仮想長方形を計算し、その長方形の内
側に仮のハッチング線を作成し、0度の時と同様の処理
をすればよい。その後、ハッチング線を逆回転して戻
す。90度のハッチング線作成のときの仮想長方形は、
回転前の輪郭線で計算したものを回転したものと、回転
後の輪郭線から計算したものが同じなので、2度計算す
る必要はないので、輪郭線と一緒に回転している。
【0051】図12(a)には、仮想長方形66を示し
ている。図12(b)には、ハッチング線と輪郭線との
交点A,B,C,D,E,Fを示し、X座標の小さい方
から順番に奇数番目を始点、偶数番目を終点とする線分
が必要なハッチング線であることを示している。
【0052】ハッチング線作成処理で多角形の塗り潰し
は終了する。
【0053】
【発明の効果】以上、説明した様に、本発明は図面の塗
り潰し方法において、複数の輪郭線を持つ多角形の輪郭
線に順位付けを行い、それぞれの干渉(交差)を判断す
る事により、複数の輪郭線を持つ形状の複雑な多角形を
塗り潰す事が出来る。
【0054】また、最小の径のアパーチャ(またはペ
ン)から使用する事により、精度以下の多角形を最短の
処理で見つけて削除できるので、処理時間を短縮でき
る。
【0055】また、アパーチャ(またはペン)を2倍に
して、ハッチング線に使うためのアパーチャ(またはペ
ン)を大きくする事により、データ量および塗り潰し線
の総延長を短縮できる。2倍にした時に、重ねて塗り潰
される部分を前のオフセット線から削除する事でさらに
塗り潰し線の総延長を短縮できる効果がある。
【図面の簡単な説明】
【図1】本発明のフローチャート。
【図2】従来例のフローチャート。
【図3】従来のオフセット線作成イメージ図。
【図4】ハッチングが2回必要になる従来例の図。
【図5】本発明のオフセット線作成イメージ図。
【図6】オフセット線が交点を持たない時、円弧でつな
ぐイメージ図。
【図7】(a)(b)(c)とも輪郭線に円弧がある場
合。
【図8】(a)はレベル1のオフセット線の自己交差に
よる有効範囲判別の図。(b)はレベル2のオフセット
線の干渉(交差)点による有効範囲判別の図。
【図9】レベル1とレベル2のオフセット線の干渉(交
差)点による有効範囲判別の図。
【図10】アパーチャ(またはペン)を2倍よりも大き
くした時困る図。
【図11】(a)(b)(c)(d)の一連でオフセッ
ト線の重複部分削除法の図。
【図12】(a)ハッチング作成図の仮想長方形の図。 (b)ハッチング線分の図。
【符号の説明】
1 データ入力部 2 輪郭線抽出処理 3 順位付け処理 4 オフセット線作成処理 5 輪郭線の更新処理 6 判断(1回目の処理か) 7 オフセット量変更処理 8 重複線分削除処理 9 判断(完了したか) 10 判断(規定回数の処理をしたか) 11 オフセット量変更処理 12 ハッチング処理 13 データ入力部 14 データ抽出処理 15 オフセット線作成処理 16 有効範囲判別処理 17 判断(ハッチングしたか) 18 ハッチング処理 19 判断(アパーチャがあるか) 20 アパーチャを小さくする処理 21 外形線 22 オフセットした線 23 オフセット線 24 ループの方向 25 自己交差点 26 自己交差点 27 オフセット線(1回目) 28 オフセット線(2回目) 29 アパーチャイメージ(2回目) 30 アパーチャイメージ(1回目) 31 ハッチングが必要な部分 32 レベル1の輪郭線 33 レベル2の輪郭線 34 レベル1のオフセット線 35 レベル2のオフセット線 36 レベル1の輪郭線分 37 レベル1の輪郭線分 38 レベル1の輪郭線分 39 オフセットした線分の交点 40 補間円弧 41 輪郭の円弧部分 42 円弧の中心 43 オフセット線分の円弧 44 仮円弧を含むオフセット線 45 オフセットした線の自己交差点 46 オフセットした線の自己交差点 47 オフセット線有効ループ 48 オフセット線有効ループ 49 レベル1の輪郭線 50 レベル2の輪郭線 51 レベル2のオフセット線の交差点 52 レベル2のオフセット線の交差点 53 オフセット線(閉ループ) 54 オフセット線(閉ループ) 55 レベル1のオフセット線 56 レベル2のオフセット線 57 オフセット有効範囲 58 アパーチャ 59 アパーチャ58で塗れない領域 60 レベル1のオフセット線 61 レベル2のオフセット線 62 オフセット線有効範囲(2回目) 63 逆オフセット線 64 レベル1の輪郭線 65 レベル2の輪郭線 66 仮想長方形

Claims (2)

    【特許請求の範囲】
  1. 【請求項1】 1つの多角形に属する輪郭線が複数存在
    する時に、複数の輪郭線を順位付けするステップと、オ
    フセット方向を各輪郭線ごとに判別するステップと、作
    成したオフセット線の有効範囲を自己交差及び他のオフ
    セット線との交差,重複などの条件により判別し、オフ
    セット線の有効部分で形成される新たな閉ループを抽出
    するステップと、塗り潰しに必要な線分の総延長を短く
    するステップとを有することを特徴とする図面の塗り潰
    し方法。
  2. 【請求項2】 CADにより作成された図形より、
    (1)多角形の輪郭線データを抽出するステップと、
    (2)1つの多角形に属する輪郭線が複数存在する時
    に、複数の輪郭線を順位付けするステップと、(3)順
    位付けされた輪郭線とある一定の距離を保つ線(以下オ
    フセット線と呼ぶ)を作成する方向(以下オフセット方
    向と呼ぶ)を輪郭線で閉じた領域の内側か外側を判別す
    るステップと、(4)オフセット方向へオフセット線を
    最小のオフセット量から作成するステップと、(5)作
    成したオフセット線の有効範囲をオフセット線の自己交
    差及び他のオフセット線との交差、重複などの条件によ
    り判別し、オフセット線の有効部分で形成される新たな
    閉ループを抽出するステップと、(6)(5)で求めた
    閉ループを新たな輪郭線として、多角形の最初の輪郭線
    を基準とするオフセット量を1回前のオフセット量の2
    倍以下として、(2),(3),(4),(5)のステ
    ップを行うステップと、(7)(6)のステップの後、
    (6)のステップで行なったオフセット方向と逆方向
    に、オフセット量を(6)のステップのオフセット量と
    1回前のオフセット量の絶対値の差として、オフセット
    線を作成して、1回前の輪郭線と比較する事により、重
    複した部分を1回前の輪郭線から削除して、多角形の塗
    り潰しに必要な線を少なくするステップと、(8)
    (6),(7)のステップを任意の回数繰り返し、最新
    の輪郭線で閉じられた領域に、ハッチング線を作成する
    ステップとを有する事を特徴とする図面の塗り潰し方
    法。
JP5336295A 1993-12-28 1993-12-28 図面の塗り潰し方法 Expired - Fee Related JP2870397B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP5336295A JP2870397B2 (ja) 1993-12-28 1993-12-28 図面の塗り潰し方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP5336295A JP2870397B2 (ja) 1993-12-28 1993-12-28 図面の塗り潰し方法

Publications (2)

Publication Number Publication Date
JPH07200664A true JPH07200664A (ja) 1995-08-04
JP2870397B2 JP2870397B2 (ja) 1999-03-17

Family

ID=18297633

Family Applications (1)

Application Number Title Priority Date Filing Date
JP5336295A Expired - Fee Related JP2870397B2 (ja) 1993-12-28 1993-12-28 図面の塗り潰し方法

Country Status (1)

Country Link
JP (1) JP2870397B2 (ja)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007094456A (ja) * 2005-09-26 2007-04-12 Nissan Motor Co Ltd 断面形状データ作成方法
CN105652799A (zh) * 2014-12-05 2016-06-08 广西大学 基于边等距偏移的环切轨迹生成方法
WO2018029958A1 (ja) * 2016-08-09 2018-02-15 ブラザー工業株式会社 プロッタ及びプロッタプログラム
CN109887052A (zh) * 2019-01-29 2019-06-14 广联达科技股份有限公司 一种二维多边形偏移方法
US10796210B2 (en) 2016-08-09 2020-10-06 Brother Kogyo Kabushiki Kaisha Plotter, method for drawing with pen containing liquid using plotter, and pen mountable on plotter

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007094456A (ja) * 2005-09-26 2007-04-12 Nissan Motor Co Ltd 断面形状データ作成方法
CN105652799A (zh) * 2014-12-05 2016-06-08 广西大学 基于边等距偏移的环切轨迹生成方法
WO2018029958A1 (ja) * 2016-08-09 2018-02-15 ブラザー工業株式会社 プロッタ及びプロッタプログラム
US10796210B2 (en) 2016-08-09 2020-10-06 Brother Kogyo Kabushiki Kaisha Plotter, method for drawing with pen containing liquid using plotter, and pen mountable on plotter
CN109887052A (zh) * 2019-01-29 2019-06-14 广联达科技股份有限公司 一种二维多边形偏移方法
CN109887052B (zh) * 2019-01-29 2023-08-25 广联达科技股份有限公司 一种二维多边形偏移方法

Also Published As

Publication number Publication date
JP2870397B2 (ja) 1999-03-17

Similar Documents

Publication Publication Date Title
EP0905655B1 (en) Map editing apparatus enabling simplified editing through provision of user-selectable automatic editing functions
JPH07200664A (ja) 図面の塗り潰し方法
JP2828271B2 (ja) Cadシステムにおける形状生成方式
JPH077456B2 (ja) 重合度による図形の認識装置
US7439971B2 (en) Mesh generation method for numerical simulation
CN113052943A (zh) 一种矢量图形绘制方法、装置、计算机设备及存储介质
JP2571662B2 (ja) 線描画方法及び装置
CN114296591B (zh) 一种复合线条绘制方法、装置及相关设备
US7653517B2 (en) Design data generating apparatus and design data generating method
CN113590885B (zh) 一种矢量图形的栅格化方法
JP2671846B2 (ja) 図形配置関係チェック装置
CN116734874A (zh) 路径规划方法、装置、计算机设备和计算机可读存储介质
JP2852044B2 (ja) 記号認識装置
JP2726994B2 (ja) 多角形領域選択方法
JP2610828B2 (ja) 図形情報抽出方法
JP3494425B2 (ja) 画像変換方法およびそれを実行するデータ変換装置
JP3249652B2 (ja) 曲面分割方法および装置
CN117171826A (zh) 花样文件编辑方法
JP3700810B2 (ja) データ変換方法および装置
JPH10116347A (ja) 円弧描画方法
JPH02231686A (ja) 図形塗りつぶし方法
JPH06274308A (ja) ベジェ曲線均等肉付け作成処理方法
JP2613653B2 (ja) 画像処理装置
JPH0350686A (ja) 図形処理方式
JP2003123078A (ja) 多角形の内外点判定方法

Legal Events

Date Code Title Description
LAPS Cancellation because of no payment of annual fees