C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

■103841 / 31階層)  Visual Basicで簡易CADを作成
□投稿者/ 魔界の仮面弁士 (3896回)-(2025/08/08(Fri) 09:40:56)

No103838 (shiro さん) に返信
> IndexはReadOnlyというエラーも。

はい。既に No103825 で指摘しているように、それについては
「Index を指定可能なコンストラクタ」を設けることで回避できます。
>>> また、現在は Index を自動採番としていますが、CSV 読み込み時は自動採番せずに CSV の Index を採用したい場合は
>>> Index を明示指定できるよう、Sub New の引数に Index も指定できるオーバーロードを追加するべきでしょう。


また、Index は自動採番としているのですから、CSV から読み込んだ後で
LastIndex を「CSV 内の最終番号(あるいはそれ以上の値)」にする必要もありますので
その点も考慮してみてください。これも既に指摘済みです。
>>> その場合、CSV 読み込み後に追加されるアイテムの Index 値も調整可能な設計にしないといけませんね。


No103839 (shiro さん) に返信
> この原因が分かりました。
> 柱・壁をSelect Case文で処理していましたが、その前に右クリック判定をしていました。

このあたり、掲示板に投稿いただいた範囲のコードでは無いため、
具体的な修正箇所を提示できず、前回の回答のように、
>>> もう一度デバッグしてみてください。
としか答えられませんでした。でも、解決できてよかったです。


> 修正したところ、削除ボタンで消えましたが、2回押さないと消えませんでした。
配置処理に問題があるのか、選択処理に問題があるのか、削除ボタンの処理に問題があるのか、でしょうね。

まずは削除ボタンの Click イベントの先頭に、各種変数の値を Debug.WriteLine するコードを書いておき、
1回目の Click と 2回目の Click とで、それぞれの変数の状態にどのような差異があるのか確認してみましょう。


> 空欄に右クリックすると、黄色の柱が配置されました。
> よって、右クリックでも柱が配置されるため、2つの柱が重なり2回処理を繰り返したようです。
柱と壁の List(Of ) 内に、重複した内容が含まれていないかどうか、Debug.WriteLine やウォッチウィンドウにて確認しましょう。
その上で重複しているようであれば、次にやることは重複した原因の調査です。

コーディングミスで誤って配置されているのであれば、要因を調べて直さねばならないでしょう。

あるいはユーザー操作によって同一座標に配置されたものであれば、
 案1) 重複位置に配置させようとしたら、単に無視して何もしない(List に Add しない)
 案2) 重複位置に配置させようとしたら警告メッセージを出し、本当に重複配置させるかどうかを Yes/No 選択させる
 案3) 重複配置をそのまま認めるが、重なっていることが分かるように描画を工夫する(重複数を柱の上に数字で表現するなど)
など、重複を認めるのかどうか、認めないならどうあるべきか、認めるのであれば見やすく改善するといったルールを定めます。

> 壁の方はMouseDownでstartpointが設定され(左右どちらのクリックでも)、upでwalllistに記録されるため、
> 右クリックで削除しようとすると可笑しな挙動になっていました。
それを避けるため、 No103825 では、壁配置モードや柱配置モードとは別に
>>> 既存の element モードについて、"wall" / "col" に加えて
>>> "sel" あるいは "del" を加えれば処理できませんか?
という指摘をさせていただいています。

もちろん、そうした専用モードを付けずとも、左クリックと右クリックを区別して処理することで、
この問題は防げるわけなので、そこはコーディング次第ですね。


> 壁も柱も左クリックだけで配置し、削除は右クリックと設定すれば改善するかもしれません。
ですね。


> それでも、柱・壁が混在すると柱と壁が同時に選択されてしまいます。
はい。ゆえにそうした点に対処するために、ヒットテスト領域をより厳密にするなど
 ・柱なら、円柱や角柱の領域をヒットテストエリアにする ( No103835 )
 ・壁なら、線分をヒットテストエリアにする ( No103828 )
 ・交点や重複配置点などで複数のアイテムが候補にあった場合の仕組みを検討する ( No103837 )
 ・クリック以外でも選択できる機能を検討する ( No103805 )
などといった、さまざまな提案をしてきたつもりです。
編集キー/

前の記事(元になった記事) 次の記事(この記事の返信)
←Re[30]: Visual Basicで簡易CADを作成 /shiro →Re[32]: Visual Basicで簡易CADを作成 /shiro
 
上記関連ツリー

Visual Basicで簡易CADを作成 / shiro (25/07/25(Fri) 20:50) #103783
Re[1]: Visual Basicで簡易CADを作成 / KOZ (25/07/27(Sun) 14:35) #103784
  └ Re[2]: Visual Basicで簡易CADを作成 / shiro (25/07/28(Mon) 20:17) #103785
    ├ Re[3]: Visual Basicで簡易CADを作成 / kiku (25/07/29(Tue) 08:49) #103786
    └ Re[3]: Visual Basicで簡易CADを作成 / 魔界の仮面弁士 (25/07/29(Tue) 14:06) #103791
      └ Re[4]: Visual Basicで簡易CADを作成 / shiro (25/07/30(Wed) 12:22) #103792
        └ Re[5]: Visual Basicで簡易CADを作成 / 魔界の仮面弁士 (25/07/30(Wed) 15:46) #103794
          └ Re[6]: Visual Basicで簡易CADを作成 / shiro (25/07/31(Thu) 07:34) #103795
            └ Re[7]: Visual Basicで簡易CADを作成 / 魔界の仮面弁士 (25/07/31(Thu) 10:48) #103796
              └ Re[8]: Visual Basicで簡易CADを作成 / shiro (25/08/01(Fri) 06:15) #103797
                ├ Re[9]: Visual Basicで簡易CADを作成 / kiku (25/08/01(Fri) 08:47) #103798
                │└ Re[10]: Visual Basicで簡易CADを作成 / shiro (25/08/02(Sat) 03:40) #103803
                └ Re[9]: Visual Basicで簡易CADを作成 / 魔界の仮面弁士 (25/08/01(Fri) 10:46) #103800
                  ├ Re[10]: Visual Basicで簡易CADを作成 / kiku (25/08/01(Fri) 10:50) #103801
                  └ Re[10]: Visual Basicで簡易CADを作成 / shiro (25/08/02(Sat) 03:38) #103802
                    └ Re[11]: Visual Basicで簡易CADを作成 / 魔界の仮面弁士 (25/08/03(Sun) 11:50) #103805
                      └ Re[12]: Visual Basicで簡易CADを作成 / shiro (25/08/04(Mon) 05:10) #103806
                        └ Re[13]: Visual Basicで簡易CADを作成 / 魔界の仮面弁士 (25/08/04(Mon) 11:36) #103808
                          └ Re[14]: Visual Basicで簡易CADを作成 / shiro (25/08/04(Mon) 18:59) #103811
                            └ Re[15]: Visual Basicで簡易CADを作成 / 魔界の仮面弁士 (25/08/04(Mon) 19:43) #103812
                              └ Re[16]: Visual Basicで簡易CADを作成 / shiro (25/08/05(Tue) 12:42) #103814
                                └ Re[17]: Visual Basicで簡易CADを作成 / shiro (25/08/05(Tue) 12:44) #103815
                                  └ Re[18]: Visual Basicで簡易CADを作成 / 魔界の仮面弁士 (25/08/05(Tue) 18:02) #103817
                                    └ Re[19]: Visual Basicで簡易CADを作成 / shiro (25/08/05(Tue) 19:28) #103819
                                      └ Re[20]: Visual Basicで簡易CADを作成 / 魔界の仮面弁士 (25/08/05(Tue) 20:39) #103821
                                        └ Re[21]: Visual Basicで簡易CADを作成 / shiro (25/08/06(Wed) 12:22) #103822
                                          └ Re[22]: Visual Basicで簡易CADを作成 / 魔界の仮面弁士 (25/08/06(Wed) 14:42) #103825
                                            ├ Re[23]: Visual Basicで簡易CADを作成 / 魔界の仮面弁士 (25/08/06(Wed) 17:53) #103828
                                            │└ Re[24]: Visual Basicで簡易CADを作成 / shiro (25/08/06(Wed) 19:13) #103830
                                            │  ├ Re[25]: Visual Basicで簡易CADを作成 / 魔界の仮面弁士 (25/08/06(Wed) 19:44) #103832
                                            │  │└ Re[26]: Visual Basicで簡易CADを作成 / shiro (25/08/07(Thu) 07:06) #103834
                                            │  │  └ Re[27]: Visual Basicで簡易CADを作成 / 魔界の仮面弁士 (25/08/07(Thu) 12:18) #103835
                                            │  │    └ Re[28]: Visual Basicで簡易CADを作成 / shiro (25/08/07(Thu) 19:14) #103836
                                            │  │      └ Re[29]: Visual Basicで簡易CADを作成 / 魔界の仮面弁士 (25/08/07(Thu) 20:25) #103837
                                            │  │        ├ Re[30]: Visual Basicで簡易CADを作成 / shiro (25/08/08(Fri) 03:34) #103838
                                            │  │        └ Re[30]: Visual Basicで簡易CADを作成 / shiro (25/08/08(Fri) 07:29) #103839
                                            │  │          └ Visual Basicで簡易CADを作成 / 魔界の仮面弁士 (25/08/08(Fri) 09:40) #103841 ←Now
                                            │  │            └ Re[32]: Visual Basicで簡易CADを作成 / shiro (25/08/09(Sat) 05:05) #103842
                                            │  │              └ Re[33]: Visual Basicで簡易CADを作成 / 魔界の仮面弁士 (25/08/09(Sat) 14:24) #103843
                                            │  │                └ Re[34]: Visual Basicで簡易CADを作成 / shiro (25/08/09(Sat) 19:18) #103844
                                            │  └ Re[25]: Visual Basicで簡易CADを作成 / 魔界の仮面弁士 (25/08/06(Wed) 19:53) #103833
                                            └ Re[23]: Visual Basicで簡易CADを作成 / shiro (25/08/18(Mon) 12:41) #103847
                                              └ Re[24]: Visual Basicで簡易CADを作成 / kiku (25/08/20(Wed) 15:09) #103848
                                                └ Re[25]: Visual Basicで簡易CADを作成 / shiro (25/08/20(Wed) 18:35) #103849
                                                  └ Re[26]: Visual Basicで簡易CADを作成 / kiku (25/08/21(Thu) 09:03) #103850
                                                    └ Re[27]: Visual Basicで簡易CADを作成 / shiro (25/08/21(Thu) 22:01) #103851
                                                      └ Re[28]: Visual Basicで簡易CADを作成 / kiku (25/08/22(Fri) 08:45) #103852
                                                        └ Re[29]: Visual Basicで簡易CADを作成 / shiro (25/08/22(Fri) 13:20) #103853
                                                          └ Re[30]: Visual Basicで簡易CADを作成 / kiku (25/08/22(Fri) 16:45) #103854
                                                            └ Re[31]: Visual Basicで簡易CADを作成 / shiro (25/08/22(Fri) 20:33) #103855
                                                              └ Re[32]: Visual Basicで簡易CADを作成 / kiku (25/08/25(Mon) 08:42) #103857

上記ツリーを一括表示 / 上記ツリーをトピック表示
 
上記の記事へ返信