Indexへ
(2531)//【2530】→(2533)
------------------------
【タイトル】ブロックの反転と編集
【記事番号】 2530 (*)
【 日時 】05/07/06 11:57
【 発言者 】スター

ツリーが長くなりましたので別に立ち上げました。
先日ブロックの反転を相談室で行いましたので今回チェックしてみました。

バージョン情報でデータ形式を見ると、ブロックの定義データで名前と通し番号等持っており、各ブロックデータで位置、x,y倍率、回転、通し番号のように記述してありました。

jwfでは倍率等の・・・で名前を付けないにしてあります。
まずブロックを定義し名前を付けました。これを複数複写しました。
斜線を引き反転複写しました。これを複数複写しました。

これらを範囲選択、ブロック名前選択で、名前有りと無名でグループ分けが可能です。
TABキーによる属性取得でも名前表示と無名になります。

ここで元図、反転複写それぞれブロック編集を実行しました。
元図を編集し図形を追加した場合、元図と反転複写図両方に反映されました。(反転は反転したようになります)
しかし、反転複写図を編集すると反転複写図のみ反映されました。

ちょっと理解出来ない結果となりました。


Indexへ
(2530)←【2533】→(2536)
------------------------
【タイトル】オブジェクト指向
【記事番号】 2533 (2530)
【 日時 】05/07/06 15:04
【 発言者 】joker
【 リンク 】http://www.atsmile.com/jw/



▼スターさん:
>しかし、反転複写図を編集すると反転複写図のみ反映されました。
>
>ちょっと理解出来ない結果となりました。

オブジェクト指向的に考えたら、まぁ、これが当然かな、という感じ?

無名で複写の状態が、親図形から派生したもの、と考えれば、
親図形が変化したのなら、子図形もそれに応じて変化される。
子図形が変化しても、子の変化は親には影響しない。派生先の話だから。

反転複写の方を変えたら、元図形の方を変えたい、というのは
オブジェクト指向的には、子図形→親図形 と言うのは有り得ないので
同じ図形でなければなりませんから、
無名ではなく、ブロック名を付ける、にして、同じブロックを使っている
という事にしなければならない、
ってことになります。

もし、子図形を変えたら、親図形も変えて欲しい、というのなら、それは
オブジェクト指向という考えそのものを全否定している事になります。
まぁ、アプリレベルでそういう事を可能にさせる、という手法はアリ、
かもしれませんが。


Indexへ
(2533)←【2536】→(2537)
------------------------
【タイトル】Re(1):オブジェクト指向
【記事番号】 2536 (2533)
【 日時 】05/07/06 15:41
【 発言者 】スター

▼jokerさん:
>
>オブジェクト指向的に考えたら、まぁ、これが当然かな、という感じ?
>
>無名で複写の状態が、親図形から派生したもの、と考えれば、
>親図形が変化したのなら、子図形もそれに応じて変化される。
>子図形が変化しても、子の変化は親には影響しない。派生先の話だから。
>
>反転複写の方を変えたら、元図形の方を変えたい、というのは
>オブジェクト指向的には、子図形→親図形 と言うのは有り得ないので
>同じ図形でなければなりませんから、
>無名ではなく、ブロック名を付ける、にして、同じブロックを使っている
>という事にしなければならない、
>ってことになります。
>
>もし、子図形を変えたら、親図形も変えて欲しい、というのなら、それは
>オブジェクト指向という考えそのものを全否定している事になります。
>まぁ、アプリレベルでそういう事を可能にさせる、という手法はアリ、
>かもしれませんが。

ひょっとしてこれですかね?
ブロック定義データにある「参照されているかのフラグ」


Indexへ
(2536)←【2537】→(2539)
------------------------
【タイトル】参照フラグ
【記事番号】 2537 (2536)
【 日時 】05/07/06 18:12
【 発言者 】joker
【 リンク 】http://www.atsmile.com/jw/



▼スターさん:
>ブロック定義データにある「参照されているかのフラグ」

確認していませんが、それは多分、
定義したけれども使っていないブロック、を識別するためのフラグ
じゃないかと思います。
今回の件には関係ないと思いますが、、、

まず、
ブロックAを作る → 通し番号:0 ブロック名:A@@SfigorgFlag@@4 が出来る
ブロックBを作る → 通し番号:1 ブロック名:B@@SfigorgFlag@@4 が出来る
ブロックCを作る → 通し番号:2 ブロック名:C@@SfigorgFlag@@4 が出来る
これらを反転複写(無名ブロック)する。
すると、
反転されたブロック定義データが新たに出来る。
ブロックAの反転された図形 通し番号:3 ブロック名:@@SfigorgFlag@@4
ブロックBの反転された図形 通し番号:4 ブロック名:@@SfigorgFlag@@4
ブロックCの反転された図形 通し番号:5 ブロック名:@@SfigorgFlag@@4
但しこれは、生データがコピーされるのではなく、
それぞれのブロック図形が挿入されたデータになっている。
だから、
ブロックAの内容が変わると、それを挿入しているだけの通し番号3の図形も
内容が変わる。

また、無名で反転された図形 例えば 通し番号3 の図形を編集しても
ブロックA のデータを挿入しているが、別段、関係はないので、
ブロックA に影響を与える事はない。

オブジェクト指向的に行くから、こういう事になるのであって、
要するに、オブジェクト指向的にしたくないのなら、
元図形をブロック挿入したブロック定義データを作るのではなく、
元図形の生データをそのまんまコピーしたブロック定義データを作って
コピーしたブロック同士は一切、関係無し、にするしか無い。
つまり、ブロック編集しても、無名ブロックでコピーした他の図形には
一切反映されない。

仮に、子図形を編集したら自動的に親図形も編集される、のであれば、
子図形編集→親図形自動編集 → 更にその親図形が自動編集 → ・・・
  →同じ親を持つ子図形が自動編集
    →更にその孫図形が自動編集→・・・
  →同じ親を持つ子図形が自動編集
    →更にその孫図形が自動編集→・・・
  ・・・
という具合に、ルート管理がちゃんとされていれば無限ループにはならないと
思いますが、結構、おそろしい事になると思いますよ。
オブジェクト指向で、前方参照のみ可能、となっているのは、それだけの理由が
あるからであって、後方参照も出来るとなると、まさに根本的に、おかしく
なってしまいます。

だから、無名ブロック=派生ブロック=子図形 を編集したら、
元図形=親図形 も変わって欲しい、というのは、無理、
と答えるしかありません。


Indexへ
(2537)←【2539】//(2532)
------------------------
【タイトル】Re(1):参照フラグ
【記事番号】 2539 (2537)
【 日時 】05/07/06 18:37
【 発言者 】スター

▼jokerさん:
>▼スターさん:
>>ブロック定義データにある「参照されているかのフラグ」
>
>確認していませんが、それは多分、
>定義したけれども使っていないブロック、を識別するためのフラグ
>じゃないかと思います。
>今回の件には関係ないと思いますが、、、
>
>まず、
>ブロックAを作る → 通し番号:0 ブロック名:A@@SfigorgFlag@@4 が出来る
>ブロックBを作る → 通し番号:1 ブロック名:B@@SfigorgFlag@@4 が出来る
>ブロックCを作る → 通し番号:2 ブロック名:C@@SfigorgFlag@@4 が出来る
>これらを反転複写(無名ブロック)する。
>すると、
>反転されたブロック定義データが新たに出来る。
>ブロックAの反転された図形 通し番号:3 ブロック名:@@SfigorgFlag@@4
>ブロックBの反転された図形 通し番号:4 ブロック名:@@SfigorgFlag@@4
>ブロックCの反転された図形 通し番号:5 ブロック名:@@SfigorgFlag@@4
>但しこれは、生データがコピーされるのではなく、
>それぞれのブロック図形が挿入されたデータになっている。
>だから、
>ブロックAの内容が変わると、それを挿入しているだけの通し番号3の図形も
>内容が変わる。
>
>また、無名で反転された図形 例えば 通し番号3 の図形を編集しても
>ブロックA のデータを挿入しているが、別段、関係はないので、
>ブロックA に影響を与える事はない。
>
>オブジェクト指向的に行くから、こういう事になるのであって、
>要するに、オブジェクト指向的にしたくないのなら、
>元図形をブロック挿入したブロック定義データを作るのではなく、
>元図形の生データをそのまんまコピーしたブロック定義データを作って
>コピーしたブロック同士は一切、関係無し、にするしか無い。
>つまり、ブロック編集しても、無名ブロックでコピーした他の図形には
>一切反映されない。
>
>仮に、子図形を編集したら自動的に親図形も編集される、のであれば、
>子図形編集→親図形自動編集 → 更にその親図形が自動編集 → ・・・
>  →同じ親を持つ子図形が自動編集
>    →更にその孫図形が自動編集→・・・
>  →同じ親を持つ子図形が自動編集
>    →更にその孫図形が自動編集→・・・
>  ・・・
>という具合に、ルート管理がちゃんとされていれば無限ループにはならないと
>思いますが、結構、おそろしい事になると思いますよ。
>オブジェクト指向で、前方参照のみ可能、となっているのは、それだけの理由が
>あるからであって、後方参照も出来るとなると、まさに根本的に、おかしく
>なってしまいます。
>
>だから、無名ブロック=派生ブロック=子図形 を編集したら、
>元図形=親図形 も変わって欲しい、というのは、無理、
>と答えるしかありません。

丁寧な解説ありがとうございます。
最初に書く順番を間違えて子から親へが変と誤解されましたが、私もそのようなことは望んでいません。
親から子へに疑問を持ったので投稿しました。

>但しこれは、生データがコピーされるのではなく、
>それぞれのブロック図形が挿入されたデータになっている。

この概念がなく

>元図形をブロック挿入したブロック定義データを作るのではなく、
>元図形の生データをそのまんまコピーしたブロック定義データを作って
>コピーしたブロック同士は一切、関係無し、にするしか無い。

こうなってると思っていました。
大変よく解りました。ありがとうございます。