コミュニティ
Dynamo - 日本語
製品テクニックや情報を共有、質問、解答したり、情報を検索など使い方は様々です。お役立てください。
キャンセル
次の結果を表示 
表示  限定  | 次の代わりに検索 
もしかして: 

複数のビューで特定の部材を赤色着色したい

2件の返信2
解決済み
返信
メッセージ1/3
kotaniX4N2A
444 件の閲覧回数, 2 件の返信

複数のビューで特定の部材を赤色着色したい

お世話になります。

REVITからある部材をDynamo上で抽出して、赤色着色することを試みています。

例題ではfilterbyboolmaskで取り出した梁部材を「OverrideGraphicSettings.ByProperties」→「Element.OverrideInView」で赤に着色ということを試しましたが、複数の各ビューごとにDynamoを実行する必要があります。

 

複数のビューをまとめて赤に着色することを目指しており、英語版DynamoForumで類似のPythonを作成しましたが、「SetProjectionFillColor」の属性不具合の警告メッセージが出て当該ビューも着色できません。

 

【Pythonの内容】

import clr
clr.AddReference("RevitAPI")
from Autodesk.Revit.DB import OverrideGraphicSettings, Color
clr.AddReference("RevitServices")
import RevitServices
from RevitServices.Persistence import DocumentManager
from RevitServices.Transactions import TransactionManager
doc = DocumentManager.Instance.CurrentDBDocument

elements = UnwrapElement(IN[0])
views = UnwrapElement(IN[1])
line_pattern = UnwrapElement(IN[2])
fill_pattern = UnwrapElement(IN[3])
color_input = IN[4]
color_l= color_input.split(" ")
color = Color(int(color_l[0]),int(color_l[1]),int(color_l[2]))
TransactionManager.Instance.EnsureInTransaction(doc)
for i in elements:
    for view in views:        
        ogs = OverrideGraphicSettings()    
        ogs.SetProjectionFillColor(color)
        ogs.SetProjectionFillPatternId(fill_pattern.Id)
        ###ogs.SetProjectionLineColor(color)
        #ogs.SetProjectionFillColor(color)
        #ogs.SetProjectionFillPatternId(fill_pattern.Id)
        #ogs.SetCutFillPatternId(fill_pattern.Id)
        ###ogs.SetCutLineColor(color)
        #ogs.SetCutFillColor(color)
        ###ogs.SetHalftone(False)
        #ogs.SetProjectionLinePatternId(line_pattern.Id)
        #ogs.SetCutLinePatternId(line_pattern.Id)
        ogs.SetSurfaceTransparency(IN[5])
        view.SetElementOverrides(i.Id, ogs)    
TransactionManager.Instance.TransactionTaskDone()

 

 

Pythonについてご教示いただくか、複数のビューをまとめて赤に着色する他の方法のアドバイスをお願いできれば幸いです。

 

以上、宜しくお願い致します。

 

タグ(2)
2件の返信2
メッセージ2/3
AITS-miura
次のアカウントへの返信: kotaniX4N2A

@kotaniX4N2A 様

Pythonの内容について、APIが古いものを使用しているため、

おそらく思ったような結果にはならないと思います。

こちらで改良してみました。スクリプト内にコメントを少しつけています

import clr
clr.AddReference("RevitAPI")
from Autodesk.Revit.DB import OverrideGraphicSettings, Color
clr.AddReference("RevitServices")
import RevitServices
from RevitServices.Persistence import DocumentManager
from RevitServices.Transactions import TransactionManager
doc = DocumentManager.Instance.CurrentDBDocument

elements = UnwrapElement(IN[0])
views = UnwrapElement(IN[1])
line_pattern = UnwrapElement(IN[2])
fill_pattern = UnwrapElement(IN[3])
color_input = IN[4]
#表示非表示の設定(Bool)
visible = IN[5]
#色の設定はそのままstring型でスペースで分けるように設定されています。
color_l= color_input.split(" ")
color = Color(int(color_l[0]),int(color_l[1]),int(color_l[2]))
#グラフィックの設定です。OverrideGraphicSettingsのMembersが古いものになっていたので修正しています
ogs = OverrideGraphicSettings()    
ogs.SetSurfaceForegroundPatternColor(color)
ogs.SetSurfaceForegroundPatternId(fill_pattern.Id)
ogs.SetSurfaceForegroundPatternVisible(visible) #追加設定
ogs.SetSurfaceTransparency(IN[6])
TransactionManager.Instance.EnsureInTransaction(doc)

for i in elements:
    for v in views:
        v.SetElementOverrides(i.Id, ogs)
    
TransactionManager.Instance.TransactionTaskDone()

OUT = views

 

AITSmiura_0-1706665439849.png

 

よろしくお願いいたします

メッセージ3/3
kotaniX4N2A
次のアカウントへの返信: kotaniX4N2A

お世話になっております。
迅速なご回答ありがとうございました。

一回のDynamo実行で複数のビューの部材を赤色着色できました。

問題解決しました!

スクリーンショット 2024-01-31 111245.png

お探しの情報が見つからないときは、コミュニティで質問しましょう。困っている人がいたら、情報を教えてあげましょう。

フォーラムに投稿  

State of Design & Make 2024

EE RESOURCES