投稿日:2021-11-14
#Rhinoceros
#Python
#Basic
今回は Python を使用して、レイヤを1クリックで設定するスクリプトを書いていきたいと思います。
RHpython の基礎の記事になりますが、Python の基本的な説明は省いておりますので、Progate などを使用して Python の基礎を学習してからこの記事を読んでいただけるとより理解できるかと思います。
上画像1枚目のように、Rhinoceros で新規プロジェクトを開くとデフォルトのレイヤがあるのみかと思います(※そうでない場合もあるかもしれませんが、基本的には特に影響はないです。)。
この状態から、Python で書いたスクリプトを実行することで、上画像2枚目の様にしていきたいと思います。
大まかな流れは以下のようになります。
今回は Rhinoceros であらかじめ用意されているエディターを使用します。 VScode など外部のエディターを使用することも可能ですので興味ある人は試してみてください。
1# -*- coding: utf-8 -*- 2import rhinoscriptsyntax as rs 3 4layerNames = rs.LayerIds() 5rs.RenameLayer(layerNames[0], "00作図用オブジェクト")
初めにあらかじめ用意されている「デフォルトレイヤー」の名前を変えてみます。
(※現状のレイヤを消して、新たにかけばいいので Rename する必要もないのですが、今回は Rename の仕方も紹介します。)
このコードを実行すると、あらかじめ用意されている「デフォルトレイヤー」を Rename することができます。
※Rhinoceros で使用できるメソッドについては
をぜひ参照してみてください。エディターのヘルプから飛ぶこともできます。
1# -*- coding: utf-8 -*- 2import rhinoscriptsyntax as rs 3from System.Drawing import Color 4 5layerNames = rs.LayerIds() 6rs.RenameLayer(layerNames[0], "00作図用オブジェクト") 7 8InitLayerNames=[ 9 "壁", 10 "床", 11 "天井", 12 "建具", 13 "造作", 14 "什器", 15 "電気", 16 "空調", 17 "給排水衛生", 18 "ガス", 19 "防災", 20 "その他" 21] 22Colors = [ 23 Color.Red, 24 Color.Green, 25 Color.Blue, 26 Color.Yellow, 27 Color.Orange, 28 Color.Aqua, 29 Color.DarkViolet, 30 Color.GreenYellow, 31 Color.HotPink, 32 Color.LightSalmon, 33 Color.Magenta, 34 Color.MediumBlue 35]
1# -*- coding: utf-8 -*- 2import rhinoscriptsyntax as rs 3from System.Drawing import Color 4 5layerNames = rs.LayerIds() 6rs.RenameLayer(layerNames[0], "00作図用オブジェクト") 7 8InitLayerNames=[ 9 "壁", 10 "床", 11 "天井", 12 "建具", 13 "造作", 14 "什器", 15 "電気", 16 "空調", 17 "給排水衛生", 18 "ガス", 19 "防災", 20 "その他" 21] 22Colors = [ 23 Color.Red, 24 Color.Green, 25 Color.Blue, 26 Color.Yellow, 27 Color.Orange, 28 Color.Aqua, 29 Color.DarkViolet, 30 Color.GreenYellow, 31 Color.HotPink, 32 Color.LightSalmon, 33 Color.Magenta, 34 Color.MediumBlue 35] 36 37for index,(NewLayerName,selectColor) in enumerate(zip(InitLayerNames,Colors)): 38 AddLayerName = str(index+1) + NewLayerName 39 rs.AddLayer(AddLayerName,selectColor)
それではレイヤーを追加する処理を書いていこうと思います。
これでレイヤを追加する処理は完了です。
1# -*- coding: utf-8 -*- 2import rhinoscriptsyntax as rs 3from System.Drawing import Color 4 5def LayerInit(layerNames): 6 rs.RenameLayer(layerNames[0], "00作図用オブジェクト") 7 8 InitLayerNames=[ 9 "壁", 10 "床", 11 "天井", 12 "建具", 13 "造作", 14 "什器", 15 "電気", 16 "空調", 17 "給排水衛生", 18 "ガス", 19 "防災", 20 "その他" 21 ] 22 Colors = [ 23 Color.Red, 24 Color.Green, 25 Color.Blue, 26 Color.Yellow, 27 Color.Orange, 28 Color.Aqua, 29 Color.DarkViolet, 30 Color.GreenYellow, 31 Color.HotPink, 32 Color.LightSalmon, 33 Color.Magenta, 34 Color.MediumBlue 35 ] 36 37 for index,(NewLayerName,selectColor) in enumerate(zip(InitLayerNames,Colors)): 38 AddLayerName = str(index+1) + NewLayerName 39 rs.AddLayer(AddLayerName,selectColor) 40 41layerNames = rs.LayerIds() 42LayerInit(layerNames)
1# -*- coding: utf-8 -*- 2import rhinoscriptsyntax as rs 3from System.Drawing import Color 4 5def LayerInit(layerNames): 6 7 rs.RenameLayer(layerNames[0], "00作図用オブジェクト") 8 9 InitLayerNames=[ 10 "壁", 11 "床", 12 "天井", 13 "建具", 14 "造作", 15 "什器", 16 "電気", 17 "空調", 18 "給排水衛生", 19 "ガス", 20 "防災", 21 "その他" 22 ] 23 Colors = [ 24 Color.Red, 25 Color.Green, 26 Color.Blue, 27 Color.Yellow, 28 Color.Orange, 29 Color.Aqua, 30 Color.DarkViolet, 31 Color.GreenYellow, 32 Color.HotPink, 33 Color.LightSalmon, 34 Color.Magenta, 35 Color.MediumBlue 36 ] 37 38 for index,(NewLayerName,selectColor) in enumerate(zip(InitLayerNames,Colors)): 39 AddLayerName = str(index+1) + NewLayerName 40 rs.AddLayer(AddLayerName,selectColor) 41 42if rs.MessageBox("レイヤー名を初期化しますか?",3) == 6: 43 layerNames = rs.LayerIds() 44 LayerInit(layerNames)
これで完了です!自動化するほどの処理ではないかもしれませんが、Rhinoceros 上で python を使用する簡単な例として紹介しました。Python を使用すれば、単純作業は自動化でき、デザインの幅も広げることができると思います。是非使いこなしていきましょう。
【参考サイト】
Rhino Developer Docs: