20170109

Shadeスクリプト 「図面を選択形状に合わせる」ができなかったので、重心座標を利用して対応した。

引き続き、Shadeのメモ。

選択形状に合わせるか、図面に合わせるか。

図形ウィンドウに、形状が表示されるけど、デフォルトの四面図で表示すると、

  • 形状が小さい。
  • モニタが小さいと、目が疲れる。
  • というか表示が小さすぎると、作業にならない。

という問題がありますので、拡大縮小するわけですが、単に拡大縮小すると、

  • 目的の形状がフレームアウトした。
  • 中心は、もっと…こう…右に、ああ行き過ぎた!

となる。

  • 選択形状に合わせる
  • 図面に合わせる

を利用すると、いい具合にズームしてくれる。

「選択形状に合わせる」(もしくは「図面に合わせる」)は、カメラメークの中に入っている。(GUI)

図形ウィンドウのカメラマーク>選択形状に合わせる(もしくは>図面に合わせる)を押せば、形状の表示が、図形ウィンドウにフィットしてくれる。
20170109.png

xshade.scene().fit_to_window()で、図面に合わせる。(CUI)

xshade.scene().fit_to_window()

は、図形ウィンドウを、図面に合わせてくれる。

fit_to_window()は、中に引数が入れられる。
省略されているときは、「図面に合わせる」と同じ挙動。

fit_to_window()が、効かなかった

xshade.scene().fit_to_window()が、効かなかった。

長いスクリプトの最後の方で、「図面を選択形状に合わせる」がしたかった。
しかし、なぜかできない。
仕方がないので、バウンディングボックスの中心で、拡大縮小しようと思ったが、やはりできない。
似たような挙動になる。

「図面を選択形状に合わせる」は、バウンディングボックスを利用して、拡大縮小しているのではないかと思った。

バウンディングボックスの中心座標がおかしい。

バウンディングボックスの中心座標が、スクリプトが終わるまで、更新されていなかった。
スクリプトの実行中に、

# 凄く長いコード
xshade.scene().select_parent(-1)
print xshade.scene().active_shape().center_position
  1. #凄く長いコードの部分に、z軸の+側のみにたくさん形状を作っている
  2. select_parent(-1)で、ルートパート選択。
  3. ルートパートのバウンディングボックスの、中心座標を、center_positionを使って、printで、標準出力に表示する。

とすると、なぜか(0,0,0)が返ってくる。

一旦全部消して、同じ処理をする。

# 一旦全部消して、下記のみ同じ処理
xshade.scene().select_parent(-1)
print xshade.scene().active_shape().center_position

すると、ちゃんとした数値が返ってきた。なんなの。

諦めて、「じゃあ、ここでスクリプトを一旦区切って使えばいい。」とはならない。
全部、全自動にする。一つのスクリプトで。

解決策 形状の重心座標で代用。

バウンディングボックスの中心座標は、なぜか、更新されない事がある。これはもう、原因が分からないので放っておく。
形状の重心座標を使って縮小したら、期待通りの結果になったので、そちらを使った。

centre = xshade.scene().active_shape().center_point
xshade.scene().select_all()
xshade.scene().fit_to_window()
xshade.scene().shrink(centre)
posted by yuchan at 07:00 | Comment(1) | Shade
この記事へのコメント
xshade.scene().fit_to_window()
の前に、図面ウィンドウの更新
xshade.scene().update_figure_window()
を掛ければいけるのではないでしょうか?
Posted by mimicn at 2021年01月07日 13:23
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント: