問題タブ [rhino3d]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - Rhino3d からレイヤを obj としてエクスポート
タスク
Rhino からレイヤを obj ファイルとしてエクスポートします。
問題
Python スクリプトを使用する場合、エクスポート コマンドを実行します。モデルをエクスポートする代わりに、インターフェースにダイアログが表示されます。エクスポート インターフェイスをクリックすると、正常に動作します。ただし、すべてのレイヤーのダイアログ ボックスが表示されます。ただし、多くのレイヤーがあり、エクスポートプロセス全体を自動化したいと考えています。
最終的な目標は、three.js を介して webGL で obj ファイルを表示することです。
私は Python と Rhino は初めてですが、PHP と JavaScript は知っているので、概念を十分に理解しており、Python のチュートリアルをいくつか見たので、このスクリプトの作業を開始できます。
私が試したこと
Rhino、Atom/Python を使用しています。
ノート
Python ネイティブ ファイル保存 (open("layername.json", "a") を使用することを考えていました。各レイヤーのオブジェクトからメッシュを取得し、それをthree.js jsonに変換して代わりに使用することを考えています。しかし、レイヤーからメッシュを取得する方法がわかりません. Rhino.Geometry をインポートして、それが役に立ったかどうかを確認しました. 変換するメッシュを見つける方法がわかりません.または、ネイティブ エクスポートをどうにかして使用できるかどうかもわかりません.自動化された方法でコマンドを実行し、obj ファイルのみを使用します。
c# - C#.net マルチスレッド
私は、Grasshopper (Rhino3D の一部) と呼ばれるパッケージ内で C#.net を使用して、いくつかの数学演算を最適化する実験を行っています。操作は非常に単純ですが、実行する必要があるリストは大きく、さらに大きくなる可能性があります。
C# スクリプトで Parallel.ForEach とリストを使用していますが、得られる最終結果の数が予想よりも少なくなっています。これはおそらく、list.add がスレッド セーフではない (または、私が構築しているソフトウェア内でスレッド セーフではない) ためです。
CPU マルチスレッドを使用して、数百の値に対してこの単純な数学演算を実行する簡単で効率的な方法を見つけてください (または、GPU CUDA に関する提案がある場合)。
私が知る限り、通常の C#.Net/Python/VB.Net と同じように動作するため、あいまいで特定のソフトウェアに悩まされないことを願っています。
c# - コレクション出力による C# 再帰
再帰関数を使用して、結果の値のリストを出力しようとしています。これは私が思いついたコードですが、それは私に与えます
エラー (CS0161): 'Script_Instance.wrapper(int, int, Grasshopper.DataTree, System.Collections.Generic.List)': すべてのコード パスが値を返すわけではありません (87 行目)
正常に動作するが、私のニーズには遅すぎる python スクリプトを改善しようとしています。これはパイソンコードです。
これは Rhino3d+Grasshopper 内にあります。
vbscript - ファイルを書き込まずに別のスクリプトから vbscript を実行する
現在、文字列の配列から「オンザフライ」で2番目のスクリプトを作成し、それを外部secondfile.vbs
ファイルに書き込むことにより、メインのvbscriptから新しいvbscriptWshShell.Run "C:\secondfile.vbs"
を実行しています。
私が抱えている問題は、何度も繰り返す必要があるため、FSO を使用して新しい vbs ファイルを書き込むと、プロセスが少し遅くなることです。これを解消しようとしています。物理ファイルを作成せずにメモリから vbscript を実行する方法はありますか? スクリプトを文字列として取得し、独立した vbscript として直接実行する方法を探しています。ご提案いただきありがとうございます。
現在の仕組みを簡略化したコードを次に示します。
python - Pythonはグラスホッパーで複数のネストされたループを短縮します
複数のネストされたループを使用せずにこの問題を解決する方法はまだ見つかりません。問題は、Rhinoceros の幾何学的手法を使用して 2 つのリストを比較していることです。基本的には、行のリスト、開始点と終了点のセット (ネストされたリスト) があります。すべての始点と終点が線に接しています。スクリプトは、先頭に最も近い行のインデックスと末尾に最も近い行のインデックスを比較し、一致する場合は を返しますTrue
。
これは私の現在のコードです:
ジェネレーター式で動作する可能性があると思ったのですが、実際には pullSt と pullEnd の値を比較する前に一時的に保存する必要があるようで、行き詰まりました。おそらくメモリが過負荷になっていることはわかっています。これを行うためのより高速な方法があるはずですが、方法がわかりません。
注: rc.Geometry.Curve.ClosestPoint はTrue
、線と点の間の距離が 0.0001 の許容値よりも小さい場合、つまり点が線上にある場合に戻ります。