ようこそゲストさん | ログイン |

掲示板

トップページ > 過去ログ > 記事閲覧
VXYファイルをレイヤ単位に上書き
日時: 2007/12/13 15:07
名前: Kita

複数のレイヤを持つVXYファイルに、別のVXYから取得したレイヤを
挿入することは可能でしょうか?

例えば、複数のレイヤを持つVXYに作図を行う場合、作図の対照
となったレイヤを別のVXYへ保存します。
作業終了後にユーザーが「キャンセル」した場合、別に保存した
レイヤを基のVXYへ上書き(基に戻すという意味)したいと思います。

このような、レイヤ単位の入れ替えは可能でしょうか?

Page: 1 | 2 |

Re: VXYファイルをレイヤ単位に上書き ( No.4 )
日時: 2007/12/15 17:50
名前: Kita

返答ありがとうございます

レイヤー単位のバックアップは返答していただいた内容で行ってみたいと思います!

UNDO処理については返答をお待ちします
Re: VXYファイルをレイヤ単位に上書き ( No.5 )
日時: 2007/12/18 14:53
名前: NCG

Kita様

返信が遅くなってしまい申し訳御座いません。

UNDOを実装する為に以下の様にしてみては如何でしょうか。
ご参考になれば幸いです。

/////////////////////////////////////////////////////////////////////////////////////
単純な方法としては、編集毎にVXYファイルを別名で保存しておく事が考えられます。

■処理の流れ
元VXYファイル名をDEMO.VXYとします。

編集開始
 ↓
VXYファイルを保存(仮にDEMO_U1.VXY)
 ↓
編集
 ↓
編集終了
 ↓
編集開始
 ↓
VXYファイルを保存(仮にDEMO_U2.VXY)
 ↓
編集
 ↓
編集終了
 ↓
UNDO
 ↓
1つ前に保存したVXYファイル(DEMO_U2.VXY)を今のVXYファイル(DEMO.VXY)に上書きし、削除
 ↓
UNDO
 ↓
更に1つ前に保存したVXYファイル(DEMO_U1.VXY)を今のVXYファイル(DEMO.VXY)に上書きし、削除
Re: VXYファイルをレイヤ単位に上書き ( No.6 )
日時: 2007/12/18 14:58
名前: NCG

中間ファイルを用いてUNDO機能を実装するには、以下の様な方法が考えられます。
ただしこの方法は下記の条件を前提としています。
・単一VXYファイル内での編集
・編集を行う図形にEL又はキーコードが付与されている
・複数の図形に対して同時に編集を行わない

・UNDOリストを作成する
メモリ又はデータベース上にUNDO用のリストを作成しておきます。
リストに格納する内容は
・編集動作(どの様な編集を行ったか)
・ELやキーコード等、図形を識別できる情報
・編集前の図形を格納した中間ファイル名
・編集後の図形を格納した中間ファイル名

・編集動作によってUNDOリストに編集内容を登録する
編集動作は大きく分けて以下の3つに分類されます。
・登録
・削除
・変更
例えば各編集動作よるUNDOリストの登録を以下の様にします。
・登録・・・・・INPUT,EL,,U1.TMP
・削除・・・・・DEL,EL,U1.TMP,
・変更・・・・・MOD,EL,U1.TMP,U2.TMP
※UNDOリストに登録する中間ファイル名は任意

・UNDO時の処理
編集動作に対応するUNDO処理は
・登録→削除
・削除→登録
・変更→現図形の削除→前図形の登録
となります。

図形を削除する場合には、登録してある中間ファイルをそのまま利用して削除するのではなく
その中間ファイルを検索範囲として、その中に含まれる同一ELの図形を取得し、
取得された中間ファイルで削除する必要があります。
これはUNDOで図形の削除、登録を行う為、VXYファイル内の図形を識別するポインタが変わってしまい、
保存しておいたポインタが無効になってしまう為です。

---------次に続きます-------------
Re: VXYファイルをレイヤ単位に上書き ( No.7 )
日時: 2007/12/18 14:59
名前: NCG

■編集時の処理の流れ
編集開始

編集

編集に応じた情報をUNDOリストに登録

編集終了

■UNDO時の処理の流れ
UNDO開始

UNDOリストから最も最近の情報を取得

UNDOの情報に応じた処理を行う

UNDOリストから情報を削除

UNDO終了

以上長文になってしまい申し訳御座いませんが、ご参考になれば幸いです。
Re: VXYファイルをレイヤ単位に上書き ( No.8 )
日時: 2007/12/18 16:50
名前: Kita

返答ありがとうございます。

かなり複雑な動きになりますね
VXYファイルを別名で保存していく方法が一番安全そうなので、
この方法で試してみたいと思います
ありがとうございます!

Re: VXYファイルをレイヤ単位に上書き ( No.9 )
日時: 2007/12/18 17:27
名前: Kita

レイヤー単位でのバックアップですが、
保存したいレイヤーの全図形を中間ファイルに取得し、FGCOPYで別のVXYへ保存してみました!

保存したいレイヤーの図形が全てポリゴン図形や、シンボル図形の場合は、
成功したのですがポリゴン図形と注記が存在するレイヤーは「不正な図形データです」
とエラーが出てしまいます。
図形の種類ごとに中間ファイルを作成し、保存しないといけないのでしょうか?

もしくは、中間ファイルの作成方法がよくないのでしょうか?
中間ファイルは、保存したいレイヤー内の図形を全て取得したかったので、
FGGETFIGで全域の中間ファイルを指定して作成しました。

わかる方は教えてください
Re: VXYファイルをレイヤ単位に上書き ( No.10 )
日時: 2007/12/19 14:55
名前: NCG

エラーコード49(不正な図形データ)が返っている原因として以下の事が考えられます。

・ポリゴンデータ自身でねじれ箇所や糸状になっている箇所がある。
・異なるキーコードやELのグループ図形データが中間ファイル内で連続したレコードとして存在する。

FGCOPYに渡す中間ファイルは、FGGETFIGでグループで取得したものを使用して下さい。

又、エラーとなっている図形は中間ファイルのカレントレコードの1つ前の図形となりますので
FGCOPYでエラー発生直後に

FGSEEK TMP DEC
FGPANS TMP
(TMPはエラーが出た中間ファイル名)

とする事でエラーとなった図形の位置がわかります。
Re: VXYファイルをレイヤ単位に上書き ( No.11 )
日時: 2007/12/19 17:36
名前: Kita

レイヤーのコピーに成功しました!

ポリゴンによじれ箇所があり、修正を行ったらコピーに成功しました。
ありがとうございました

尚、ユーザーが入力する図形にはよじれポリゴンが発生する可能性があると思いますが、
よじれポリゴンなどの修正や、発生した時点での警告を出すことは可能ですか?
中間ファイルから計算して・・・ という事になりますか?

余談かもしれませんが、よろしくお願いいたします。
Re: VXYファイルをレイヤ単位に上書き ( No.12 )
日時: 2007/12/19 17:42
名前: GEOGEO

ねじれチェックなら、コマンドFGPOLTWISTでできますよ〜
どのバージョンから使えるかちょっとわからないですけど
Re: VXYファイルをレイヤ単位に上書き ( No.13 )
日時: 2007/12/19 18:10
名前: Kita

知りませんでした

GEOGEOさん、ありがとうございます!
まだまだ勉強不足ッス

Page: 1 | 2 |



| 利用規約 |

(C) 2024 AS Locus INC.