質問: SketchUp で新規ファイルを作ろうとすると、最初から人型のエンティティが配置されています (私は SketchUp Make しか使ったことがないので、他のバージョンでどうなのかはわかりませんが)。この人型エンティティを確実に特定する方法はないものでしょうか。 Ruby コンソールにて、 ``` Sketchup.active_model.definitions[0].name ``` とすることにより、SketchUp Make 2017 では、この人の名前が Chris とわかるので、 ``` Sketchup.active_model.definitions['Chris'].tap { |human| if human then ... end } ``` と特定し、操作することができます。 ただ、この名前はバージョンによって違うようで、前に使っていたバージョン、たしか SketchUp Make 2013 では、Derrick という名前でした。 SketchUp のバージョンに依存せずにこの人を特定するには、名前ではいけないということになります。たとえば、Chris がハードコーディングされていたとすると、SketchUp Make 2018 (になるのかは知りませんが) にバージョンアップして、人が Chris ではなくなったときに動作しなくなってしまいます。 かといって、 ``` Sketchup.active_model.definitions[0] ``` が必ず最初からいる「人」かどうかもわかりません。モデルをいじっているなかで、「人」を削除した結果、このコードでは別のエンティティを指してしまうかもしれません。 * SketchUp のバージョンに依らず、 * 存在すれば「人」を特定できる ようなスマートな方法はないものでしょうか。
回答: システムの用意した Component Definition を使った Component Instance ということで特定できるのかな、という感じです。もし、人型エンティティ (SketchUp Make 2017 であれば Chris) を削除していたとしても、すなわち、`Sketchup.active_model.entities` から Chris がいなくなったとしても、その定義は `Sketchup.active_model.definition[0]` に残されると思います。 で、`Sketchup.active_model.definition[0].path` がシステムディレクトリであり、それを親とするようなインスタンスがあれば、それをデフォルトの人型エンティティとみなして、ほぼ問題ないと思います。