見出し画像

Inventor / 外観に様々な色を登録する

以前に書いた記事の追記 (2021/04/30)になります。

半透明にする

Inventor で、込み入った部位の作業をするとき、コンポーネントが半透明になっていると構造がわかりやすい。アセンブリの場合は、「透明」という機能もあるが、興味が湧いたので、半透明の外観も作成するルールも作ってみた。基本色作成のルールに外観属性を追加するだけだけど。

Sub Main
	
	' Ver 2.0 By Octave.Lab Yoji Tanaka At 21/01/16 
	' Ver 2.1 By Octave.Lab Yoji Tanaka At 21/04/29
	
	' 反射と透過の設定をした外観を追加
	
	'	Logger.Trace("基本色の追加スタート")

	doc = ThisDoc.Document

	' ドキュメントの外観コレクションの確保
	Dim docAssets As Assets
	docAssets = doc.Assets

	' 外観オブジェクト(Asset)の新規作成
	Dim appearance As Asset
	Dim tobjs As TransientObjects
	Dim color As ColorAssetValue
	Dim floatValue As FloatAssetValue

	Dim indx As Integer
	Dim RR As Integer
	Dim GG As Integer
	Dim BB As Integer
	Dim ACADColor
	Dim ColorName As String = ""

	For indx = 1 To 7
		GetRGB(RR, GG, BB, indx, ColorName)
		Try
			appearance = docAssets.Add(AssetTypeEnum.kAssetTypeAppearance, "Generic", ColorName, ColorName)
		Catch ex As Exception
			MessageBox.Show("登録済み", "AddBasicColor")
       	Exit Sub
       End Try
		tobjs = ThisApplication.TransientObjects
		color = appearance.Item("generic_diffuse")
		color.Value = tobjs.CreateColor(RR, GG, BB)
		
		'Ver 2.1
		ColorName = ColorName + "_CL"
		Try
			appearance = docAssets.Add(AssetTypeEnum.kAssetTypeAppearance, "Generic", ColorName, ColorName)
		Catch ex As Exception
			MessageBox.Show("登録済み", "AddBasicColor")
       	Exit Sub
       End Try
' 		tobjs = ThisApplication.TransientObjects
		color = appearance.Item("generic_diffuse")
		color.Value = tobjs.CreateColor(RR, GG, BB)		
		
      	floatValue = appearance.Item("generic_reflectivity_at_0deg")
   	floatValue.Value = 0.1
   
	    floatValue = appearance.Item("generic_reflectivity_at_90deg")
	    floatValue.Value = 0.1	
		
	    floatValue = appearance.Item("generic_transparency")
	    floatValue.Value = 0.8		

	Next
	
End Sub

Private Sub GetRGB(ByRef RR As Integer, ByRef GG As Integer, ByRef BB As Integer, ByRef ACADColor As Integer, ByRef ColorName As String)
	Dim r As Double
	Dim G As Double
	Dim B As Double
	ColorName = "ACAD_" + LTrim(Str(ACADColor))
	Select Case ACADColor
		Case 1 : r = 1 : G = 0 : B = 0 : ColorName = "01_RED"
		Case 2 : r = 1 : G = 1 : B = 0 : ColorName = "02_YELLOW"
		Case 3 : r = 0 : G = 1 : B = 0 : ColorName = "03_GREEN"
		Case 4 : r = 0 : G = 1 : B = 1 : ColorName = "04_CYAN"
		Case 5 : r = 0 : G = 0 : B = 1 : ColorName = "05_BLUE"
		Case 6 : r = 1 : G = 0 : B = 1 : ColorName = "06_MAGENTA"
		Case 7 : r = 1 : G = 1 : B = 1 : ColorName = "07_WHITE"
	End Select

	RR = r * 255
	GG = G * 255
	BB = B * 255

End Sub 

外観の設定のうち、透明度と反射に関わる属性を設定するルールを追加することで設定できる。floatValue.Value の値を変えてやればふるまいを調整できる。

       	floatValue = appearance.Item("generic_reflectivity_at_0deg")
   	    floatValue.Value = 0.1
   
	    floatValue = appearance.Item("generic_reflectivity_at_90deg")
	    floatValue.Value = 0.1	
		
	    floatValue = appearance.Item("generic_transparency")
	    floatValue.Value = 0.8	

画像1

日本の伝統色とEnglish Color Name

基本色作成と同じで、RGB3色のByte情報がわかればどんな色でも外観を作ることができる。色の名前とRGB情報は、https://irononamae.web.fc2.com/ja/ を参考にした。

画像2

English Color Nameはこんな感じ

画像3




役に立った!という記事にはぜひサポートお願いします。サポート頂けると大変に励みになります。