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さん、ありがとうございます! まだまだ勉強不足ッス
|