興味があろうがなかろうが。

なるべく役に立つ、とがった内容を記していきたいと思います。

【FreeCADプログラミング】透過度の変更

本日のお題は『透過度の変更』です。

お察しの通り、オブジェクトの透け具合を変更します。

カスタマイズプログラミングをする際、あまり需要がない機能ですが、こんなこともできるということを頭の片隅に入れておきましょう。

1. 環境

  • FreeCAD 0.18

2. 透過度を変更する方法

透過度を変更する場合は、ViewObjectのTransparencyプロパティを変更します。

3. プログラムを書いてみよう

今回は、すべての立方体の透過度を50に変更するプログラムを書いてみました。

色や透過・表示状態といったものは、ViewObject配下のプロパティをいじるということを頭の片隅に入れておくとよさそうですね。

f:id:appli-get:20200516104920p:plain

変更前のモデル

f:id:appli-get:20200516104933p:plain

変更前のモデルツリー
# -*- coding: utf-8 -*-

import ptvsd
print("Waiting for debugger attach")
# 5678 is the default attach port in the VS Code debug configurations
ptvsd.enable_attach(address=('localhost', 5678), redirect_output=True)
ptvsd.wait_for_attach()

import FreeCAD

# アクティブなドキュメントを取得
activeDoc = App.ActiveDocument

# アクティブドキュメントから作成履歴群を取得
histories = activeDoc.Objects

# Boxが存在したら、透過度を50にする
for history in histories:
    if history.TypeId == 'Part::Box':
        history.ViewObject.Transparency = 50

f:id:appli-get:20200516105337p:plain

変更後のモデル

f:id:appli-get:20200516105351p:plain

変更後の透過度パラメータ

4. 補足

4.1. フェース単位の透過はできない?

デバッグなどで調べてみたところ、フェースにはViewObjectもTransparencyプロパティも存在しないようです。(私の調べ方が悪いだけかもしれませんが)

もしそうだとしたら、ソリッド単位でしか透過ができないことになりますね。

合間を見て、もう少し調べてみます。

※ フェース単位で透過する方法をご存じの方がいらっしゃいましたら、コメントを頂けると幸いです。

5. まとめ

  • 透過度を変更するには、ViewObject.Transparencyの値を変更する

6. 最後に

少しずつやれることを増やして、知識のインデックスを付けていきましょう。

更なる情報をお探しの方は!

下記のリンクから、FreeCADプログラミングのトップページに飛びます。

よろしければご参照くださいませ。

www.interested-or-not.com