この質問には誰もが答えることができると思いますが、より多くの背景を説明するために、python を使用して rhino のコーディングを行っています。私の目標は、X ポイントから作成された多数の曲線を作成することです。ポイントは、10 x 80 x 20 単位の直角プリズム内にランダムに配置する必要もあります。私はこれから始めました:
import rhinoscriptsyntax as rs
import random
crvNumber = 300
numRandPts = 5
xLength = 10
yLength = 80
zLength = 20
crvArray = []
crvPtArray = []
for j in range(0,numRandPts):
ptj = [xLength*random.random(),yLength*random.random(),zLength*random.random()]
crvPtArray.append(ptj)
for i in range(0,crvNumber):
curves = rs.AddCurve (crvPtArray, degree = numRandPts)
crvArray.append(curves)
ランダム ポイントの生成は最初の for ループ内で発生し、その結果、2 番目の for ループは単純に同じランダム カーブを 300 回出力するため、これが機能しないことがすぐにわかると思います。最初のループで特定の数のポイントを生成し、実際に 2 番目の for ループでそれらの値を割り当てて、j のランダムなポイントを持つ 300 の曲線になるようにする方法を知っている人はいますか? 私はこれを過去2時間調査してきましたが、役に立ちませんでした。私の最初の回避策のアイデアは、たとえば 1000 個のランダム ポイントのセットを生成し、2 番目の for ループでそれらの j を選択する方が簡単かもしれないということでした。ただし、このコードではリストから選択できないという問題に遭遇しました (「リスト オブジェクトはハッシュできません」というエラー) (基本的に for k をランダムにコピーしました。
for j in range(0,randomLevel):
ptj = [xLength*random.random(),yLength*random.random(),zLength*random.random()]
crvPtArray.append(ptj)
for i in range(0,crvNumber):
crvPtArray2 = (crvPtArray[k] for k in random.sample(xrange(0,len(crvPtArray)), numRandPts))
curves = rs.AddCurve (crvPtArray2, degree = numRandPts)
crvArray.append(curves)
ここから、どういうわけかPythonで辞書のトピックに出くわし、これらをテストしましたが、辞書に保存されている「定義」のリストを印刷する方法を見つけることができませんでした。定義」。そして、それができたとしても、曲線を生成する for ループではなく、ディクショナリ for ループでランダム化が引き続き発生することに気付きました (私が間違っていて、2 番目の for ループでランダム化しない限り)。そこで、pt[j] = [] を使用して空白のポイントを生成しようとし、曲線を生成する for ループで何らかの方法でランダム化を実行しようとしました。残念ながら、私はこの時点で完全に深みを失い、機能するように思われるコードを作成しようとしていたため、実際には成功しませんでした.
X個の空白の変数またはポイントを作成し、それらをさかのぼって定義/ランダム化する方法はありますか? セットとランダム サンプルのアイデアを機能させる方法はありますか? ある種のクレイジーなネストされたコーディングや、これでうまくいく可能性のあるものはありますか? 皆さんが提供できる洞察をいただければ幸いです。
(私のコードには本当に本当に馬鹿げたエラーがありますが、それらはおそらく転写によるものですが、本当に馬鹿げたエラーがある場合は私のものかもしれません;))