さて、SketchUpでは寸法を記入する機能が思い切り妥協されていますので、普段は寸法ツールをあまり使いません。寸法を測りたい時は線ツールかエンティティ情報かメジャーツールを使用します。しかし、他人が作ったモデルをコンポーネントとして使用する際に、その形状が正しいかを確認する作業は、やはり寸法が記入されている方が楽です。そんな訳で「見た目で邪魔にならないならばモデルには寸法が記入されている方が良い」と考え、このプラグインを開発しました。
ずばり、寸法を記入したら自動的にそのレイヤを「dimension」に変更するプラグインです。
下記をテキストファイルにコピペして拡張子を.rbに変更してPluginsフォルダに保存すると有効になります。これが有効な環境下で作成されたモデルでは、寸法がコンポーネントの中に記入されていようと、グループの中に記入されていようと、「レイヤ」ウィンドウでワンクリックで表示、非表示を切り換えできます。
class MyEntitiesObserver < Sketchup::EntitiesObserver
def onElementAdded(entities, entity)
if entity.kind_of?(Sketchup::Drawingelement) and (entity.typename=="DimensionLinear" or entity.typename=="DimensionRadial") then
layer = entity.model.layers.add "dimension"
entity.layer = layer
end #if
end #def
end #class
Sketchup.active_model.entities.add_observer(MyEntitiesObserver.new)
1行目:既存のクラスを参照する形式でクラスを作成
2行目:メソッドを作成(名前は変更できません)
3行目:追加されたエンティティが寸法かを判定
4行目:特定のレイヤを作成(既存だとしても問題なし)
5行目:エンティティのレイヤを変更
6,7,8行目:ブロック定義の終了を宣言
9行目:SketchUpのEntitiesクラスにObserverを追加
コンポーネントの中で寸法を追記してもObserverは無反応でした・・・。うわぁぁぁ予想外。中途半端ですんまそん。Googleが悪いんだから許してね。
返信削除ファイルを開いた時と新規作成した時にもこのObserverが機能しないことが判明。弱点だらけでしたが、これらの欠点は下記の追記により改善可能です。
返信削除class MyAppObserver < Sketchup::AppObserver
def onNewModel(model)
Sketchup.active_model.entities.add_observer(MyEntitiesObserver.new)
end #def
def onOpenModel(model)
Sketchup.active_model.entities.add_observer(MyEntitiesObserver.new)
end #def
end #class
Sketchup.add_observer(MyAppObserver.new)
処理の内容は、モデルを新規作成した時と開いた時にもこのクラスを実行してね、といったものです。
初めまして。
返信削除僕はsketchupで寸法をかなり使用します。
狭いところに使うと、寸法を消去できずに困っていました。
寸法だけを消去できるプラグインを探していたところ、のびちさんのブログを見つけました。
寸法を1つのレイヤにまとめ、不要となったときレイヤごと消去するというやり方で、目的が果たせました。本当に助かりました。ありがとう!
Macさんへ。
返信削除うは。放置してたブログにコメントもらえるなんて全く期待してませんでした。こんなもんがお役に立てたなら何よりです。
コメントありがとうございました。