2

RubyでGoogleSketchUpプラグインをコーディングしていますが、少し問題が発生しました。次のようなすべてのポイントの説明を含む配列があります。

desc_array = ["anna ", "anna 45", "anna689", "anna36", "anna 888", "anna ",...]

すべてのポイントの座標を含む配列は次のとおりです。

todraw_su = [
  [-16.23317, -16.530533, 99.276929],
  [-25.142825, -12.476601, 99.237414],
  [-32.716122, -5.92341, 99.187951],
  [-38.964589, 4.181119, 99.182358],
  [-41.351064, 18.350418, 99.453714],
  [-40.797511, 33.987519, 99.697253],
  ...
]

ポイントごとにGoogleSketchUpにテキストを追加したいと思います。Sketchup APIによると、これは次の方法で実行できます。

Sketchup.active_model.entities.add_text "This is the text", [x, y, z]

私は試した:

todraw_su.each {|todraw| desc_array.each {|desc| Sketchup.active_model.entities.add_text desc,todraw }}

desc_arrayしかし、のすべての要素に対してすべての要素が返されるため、予期しないことが発生しましたto_draw

私が欲しいのは、のすべての要素desc_arrayのすべての要素ですto_draw

4

1 に答える 1

4
[desc_array, todraw_su].transpose.each do |desc, coord|
  # ...
end

次のようにこれを行うこともできます#zip...

desc_array.zip(todraw_su).each do |desc, coord|
  # ...
end

#zip手法を使用すると、結果には常に最初の配列の次元が含まれ、必要に応じて2番目の配列が切り捨てられるかnilが埋め込まれます。これはTRTである場合とそうでない場合があります。その場合、転置はIndexErrorを発生させます。

于 2013-02-07T15:42:01.340 に答える