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

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

【FreeCADプログラミング】色の変更

本日のお題は『色の変更』です。

お察しの通り、オブジェクトの色を変更します。

前回お話しした透過度の変更よりは、使用する頻度が高いので、覚えておきましょう。

1. 環境

  • FreeCAD 0.18

2. 色を変更する方法

色を変更する場合は、ViewObjectのShapeColorプロパティを変更します。

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

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

f:id:appli-get:20200516104920p: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が存在したら、色を黄色に変更する
for history in histories:
    if history.TypeId == 'Part::Box':
        history.ViewObject.ShapeColor = (1.0, 1.0, 0.0)

 

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

色変更後のモデル

4. 補足

4.1. 色の指定方法にクセがある

まず色の指定には、Float型のTuple(タプル)を使用しています。

history.ViewObject.Rとかhistory.ViewObject.Gのような指定方法ではないので、お間違えの無いように。

まぁ間違えたらエラーが出るのですぐわかりますが。

そして、RGBの指定には0~255ではなく、0.0~1.0を指定します

例えば、黄色を指定したい場合は、RGBでは通常(255,0,255)と考えますが、これをShapeColorプロパティに当てはめる場合、それぞれの要素を255で割ってやる必要があります。

(例: (255/255, 255/255, 0/255) = (1.0, 1.0, 0))

FreeCADのプロパティビューから指定するときと、形式が少し違うので、ご注意ください。

4. まとめ

  • 色を変更するには、ViewObject.ShapeColorの値を変更する
  • ShapeColorに指定する値はFloat型のTuple
  • ShapeColorに指定するRGBの各値は0.0~1.0を指定する

5. 最後に

ちなみに、色変更のプログラム(マクロ)はFreeCADのPythonコンソールに表示・記録されるので、お時間のある方は確認してみてください。

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

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

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

www.interested-or-not.com