質問編集履歴

7

文字の修正

2021/12/21 03:26

投稿

jy8666
jy8666

スコア2

test CHANGED
@@ -1 +1 @@
1
- pythonで3Dモデル上でのベクトル距離を求めたい
1
+ pythonでベクトル距離
test CHANGED
@@ -1,11 +1,3 @@
1
- n回目に3Dモデル上をクリックしたときに選択を確定するかしないか(Yes/No)判定を行いたいのですが、なぜか無制限に座標が取得されてうまく動きません。
2
-
3
-
4
-
5
- 実現させたいことは以下の通りです。
6
-
7
-
8
-
9
1
  ①n点目のクリック時に、選択確定の判定((__yes/no__)判定)を行う
10
2
 
11
3
  ②'__yes__'判定ならそのまま完了させる

6

文字の修正

2021/12/21 03:26

投稿

jy8666
jy8666

スコア2

test CHANGED
File without changes
test CHANGED
@@ -1,37 +1,19 @@
1
- ### 前提
2
-
3
- クリックしたときに選択を確定するかしないか(Y/N)判定をたいのですが、なぜか無制限に座標が取得されて
1
+ n回目に3Dモデル上をクリックしたときに選択を確定するかしないか(Yes/No)判定を行いたいのですが、なぜか無制限に座標が取得されてく動きせん
4
2
 
5
3
 
6
4
 
7
- ###実現たいこと
5
+ 実現させたいことは以下の通りです。
8
6
 
9
7
 
10
8
 
11
- 点目のクリック時に、選択確定の判定(__yes/no__)判定)を行う
9
+ n点目のクリック時に、選択確定の判定((__yes/no__)判定)を行う
12
10
 
13
- ②'__no__' 判定の時に、最初に戻って座標を選び直す
11
+ ②'__yes__'判定ならそまま完了させる
14
12
 
15
-
16
-
17
- ### 発生している問題
18
-
19
-
20
-
21
- 座標が無制限に取得されてしまう点。
13
+ ③'__no__' 判定なら、最初に戻って座標を選び直す
22
14
 
23
15
 
24
16
 
25
17
 
26
18
 
27
- ### 試したこと
28
-
29
-
30
-
31
- for文が回せないならdata[1],data[2]をつくってみるかーと思いましたが、書ける頭がなくて撃沈。
32
-
33
-
34
-
35
- ### 補足情報(FW/ツールのバージョンなど)
36
-
37
- Pyvistaはあまり使用されてのか、情報が少なす。
19
+ 上記のような結果が求めらる方法を教えくださ。よろしくお願いたします。

5

文字の修正

2021/12/19 16:10

投稿

jy8666
jy8666

スコア2

test CHANGED
File without changes
test CHANGED
@@ -1,36 +1,16 @@
1
1
  ### 前提
2
2
 
3
-
4
-
5
- Pyvistaを使ってSTLファイル上での座標取得を行っています。
6
-
7
- マウスクリックで座標位置2つ取得、2点間ベクトル距離求めたいです。
3
+ クリックしたときに選択確定するかないか(Y/N)判定たいですが、なぜか無制限に座標が取得されてしまいます
8
-
9
-
10
4
 
11
5
 
12
6
 
13
7
  ###実現したいこと
14
8
 
15
- 2点目をクリックしたときに選択を確定するかしないか(Y/N)の判定をしたいのですが、なぜか無制限に座標が取得されてしまいます。
16
9
 
17
-
18
-
19
- 実現したいことは大きく3つです。
20
10
 
21
11
  ①2点目のクリック時に、選択確定の判定((__yes/no__)判定)を行う
22
12
 
23
13
  ②'__no__' 判定の時に、最初に戻って座標を選び直す
24
-
25
- ③ベクトル距離を求める
26
-
27
-
28
-
29
-
30
-
31
- PyvistaやSTLファイルを扱ったプログラムについて情報が少なく解決方法が見つかりません。
32
-
33
- よろしくお願いします。
34
14
 
35
15
 
36
16
 
@@ -41,156 +21,6 @@
41
21
  座標が無制限に取得されてしまう点。
42
22
 
43
23
 
44
-
45
- クリック位置を取得する関数 `plotter.track_click_position` は左クリックで処理する関数なので、for文で無理やり回そうとしたのが原因だと思います。
46
-
47
-
48
-
49
- エラーメッセージは出ていません。
50
-
51
-
52
-
53
- ### 該当のソースコード
54
-
55
-
56
-
57
- ```Python
58
-
59
- import pyvista as pv
60
-
61
- import numpy as np
62
-
63
-
64
-
65
- # track_click_positionのコールバック関数
66
-
67
- # 左クリックしたらoutput関数を処理する
68
-
69
-
70
-
71
- for i in range(2):
72
-
73
-
74
-
75
- def left_click(data):
76
-
77
- if i==0 or 1:
78
-
79
- data = np.array(data)
80
-
81
- plotter.add_points(data, render_points_as_spheres=True, point_size=10.0, color='red')
82
-
83
-
84
-
85
- print('point:')
86
-
87
- print(data,i+1)
88
-
89
- print(type(data))
90
-
91
-
92
-
93
- elif i==1:
94
-
95
- while True:
96
-
97
- dic={'y':True,'yes':True,'n':False,'no':False}
98
-
99
- try:
100
-
101
- return dic[input('確定しますか? Yes/No >> ').lower()]
102
-
103
- except:
104
-
105
- pass
106
-
107
- if dic==True:
108
-
109
- print('OK!')
110
-
111
- else:
112
-
113
- print('continue')
114
-
115
-
116
-
117
- else:
118
-
119
- #座標取得に戻る
120
-
121
- print('error')
122
-
123
-
124
-
125
-
126
-
127
- # STLの平行移動をするコード
128
-
129
- def translation(points, Tx, Ty, Tz):
130
-
131
- T = np.array([Tx, Ty, Tz])
132
-
133
- for i in range(3):
134
-
135
- points[:, i] = points[:, i] + T[i]
136
-
137
- return points
138
-
139
-
140
-
141
-
142
-
143
- filename = "Lt_tibia.stl"
144
-
145
- mesh = pv.read(filename)# 3Dモデルのファイルを読み込み
146
-
147
- plotter = pv.Plotter() # プロッターを生成
148
-
149
- plotter.add_mesh(mesh) # 3Dモデルをプロッターに追加
150
-
151
- point_data = mesh.points # 3Dモデルの座標データを取得
152
-
153
- mesh.points = translation(point_data, -268, -203, 945) # モデル全体を平行移動 -> 原点を調整
154
-
155
-
156
-
157
- plotter.show_grid()
158
-
159
- cent = np.array([0, 0, 0])
160
-
161
- direction = np.array([0, 0, 1])
162
-
163
- plotter.add_arrows(cent, direction, mag=10)
164
-
165
-
166
-
167
- points = np.array([0, 0, 0]) #原点
168
-
169
- actor = plotter.add_points(points, render_points_as_spheres=True,
170
-
171
- point_size=10.0,color='yellow')
172
-
173
-
174
-
175
-
176
-
177
- print('座標位置を選択してください')
178
-
179
-
180
-
181
- plotter.track_click_position(callback=left_click, side='left') #コールバック関数呼び出し
182
-
183
-
184
-
185
- plotter.show()
186
-
187
-
188
-
189
-
190
-
191
-
192
-
193
- ```
194
24
 
195
25
 
196
26
 
@@ -205,13 +35,3 @@
205
35
  ### 補足情報(FW/ツールのバージョンなど)
206
36
 
207
37
  Pyvistaはあまり使用されてないのか、情報が少ないです。
208
-
209
-
210
-
211
- <環境>
212
-
213
- Windows10
214
-
215
- Anaconda
216
-
217
- Python3.8.1

4

文字の修正

2021/12/19 03:15

投稿

jy8666
jy8666

スコア2

test CHANGED
File without changes
test CHANGED
@@ -1,8 +1,8 @@
1
- ### 前提・実現したいこと
1
+ ### 前提
2
-
3
-
4
-
2
+
3
+
4
+
5
- Pyvistaを使ってSTLファイル上での座標取得を行おうとしています。
5
+ Pyvistaを使ってSTLファイル上での座標取得を行ています。
6
6
 
7
7
  マウスクリックで座標位置を2つ取得し、2点間のベクトル距離を求めたいです。
8
8
 
@@ -10,9 +10,9 @@
10
10
 
11
11
 
12
12
 
13
+ ###実現したいこと
14
+
13
- 2点目をクリックしたときに選択を確定するかしないか(Y/N)の判定をしたいのですが、座標値の表示部分をfor文で回すと、なぜか無制限に座標が取得されてしまいます。
15
+ 2点目をクリックしたときに選択を確定するかしないか(Y/N)の判定をしたいのですが、なぜか無制限に座標が取得されてしまいます。
14
-
15
-
16
16
 
17
17
 
18
18
 

3

文字の修正

2021/12/16 17:52

投稿

jy8666
jy8666

スコア2

test CHANGED
@@ -1 +1 @@
1
- 3Dモデル上でベクトル距離を求めたい
1
+ pythonで3Dモデル上でベクトル距離を求めたい
test CHANGED
File without changes

2

文字の修正

2021/12/16 17:46

投稿

jy8666
jy8666

スコア2

test CHANGED
@@ -1 +1 @@
1
- 3Dモデル上での座標位置のベクトル距離を求めたい
1
+ 3Dモデル上でベクトル距離を求めたい
test CHANGED
@@ -4,9 +4,7 @@
4
4
 
5
5
  Pyvistaを使ってSTLファイル上での座標取得を行おうとしています。
6
6
 
7
-
8
-
9
- マウスクリックで2点座標位置を取得し、2点間のベクトル距離を求めたいです。
7
+ マウスクリックで座標位置を2つ取得し、2点間のベクトル距離を求めたいです。
10
8
 
11
9
 
12
10
 

1

文字の修正

2021/12/16 17:42

投稿

jy8666
jy8666

スコア2

test CHANGED
File without changes
test CHANGED
@@ -4,11 +4,17 @@
4
4
 
5
5
  Pyvistaを使ってSTLファイル上での座標取得を行おうとしています。
6
6
 
7
+
8
+
7
9
  マウスクリックで2点座標位置を取得し、2点間のベクトル距離を求めたいです。
8
10
 
9
11
 
10
12
 
13
+
14
+
11
- 2点目をクリックしたときに選択を確定するかしないか(Y/N)の判定を行いたいのですが、座標値表示する部分をfor文で回すと、なぜか無制限に座標が取得されてしまいます。
15
+ 2点目をクリックしたときに選択を確定するかしないか(Y/N)の判定をたいのですが、座標値表示部分をfor文で回すと、なぜか無制限に座標が取得されてしまいます。
16
+
17
+
12
18
 
13
19
 
14
20
 
@@ -24,18 +30,20 @@
24
30
 
25
31
 
26
32
 
27
- PyvistaやSTLファイルを扱ったプログラムについて情報が少なく解決方法が見つかりません。
33
+ PyvistaやSTLファイルを扱ったプログラムについて情報が少なく解決方法が見つかりません。
28
34
 
29
35
  よろしくお願いします。
30
36
 
31
37
 
32
38
 
33
- ### 発生している問題・エラーメッセージ
39
+ ### 発生している問題
34
40
 
35
41
 
36
42
 
37
43
  座標が無制限に取得されてしまう点。
38
44
 
45
+
46
+
39
47
  クリック位置を取得する関数 `plotter.track_click_position` は左クリックで処理する関数なので、for文で無理やり回そうとしたのが原因だと思います。
40
48
 
41
49
 
@@ -192,7 +200,7 @@
192
200
 
193
201
 
194
202
 
195
-
203
+ for文が回せないならdata[1],data[2]をつくってみるかーと思いましたが、書ける頭がなくて撃沈。
196
204
 
197
205
 
198
206