BricsCAD VBAを使ってみよう[15] Excelとの連携②-8 画層状態コントロール

画層数が多く、作業で表示やスリーズやロックを切り替える処理が繰り返しになるとき時間の無駄が多くなります。

そこで、同じ処理の繰り返しになる場合での対処法として、表題の画層状態コントロール用ExcelVBAを作成しました。

テスト用の画層

画層状態コントロール用のシート

実行用のボタンを1つ作成します。
OptionButton1,OptionButton2、OptionButton3 を
取得・戻す・変更とします。

まず、●取得でBCD列とEFG列に現在の状態を取得します。

事前にデーター欄のセルに入力規制で〇と●を設定してクリアで空欄にしています。

〇●の表示は以下にしています。

画層ON:〇、画層OFF:●
フリーズFALSE:〇、フリーズTRUE:●
ロックFALSE:〇、ロックTRUE:●

EFG列を変更する設定にします。

画層状態が変更設定通りに変更されました。

元の画層状態に戻す場合は、・戻るで、ABC列の元の状態に戻します。

更にOptionButton4、HIJ列と増やせば、別の組み合わせ処理もできますね。

Sub LayerStateControl()

''【BricsCADのオブジェクト変数を宣言】
Dim BcadApp As BricscadApp.AcadApplication
Dim BcadDoc As BricscadApp.AcadDocument
''現在開いているBricsCADを取得する
Set BcadApp = GetObject(, "BricscadApp.AcadApplication")
BcadApp.Visible = True
Set BcadDoc = BcadApp.ActiveDocument

Dim LayObj As AcadLayer
Dim LyrName As String
Dim i As Long

''==========【画層状態取得】========
If ActiveSheet.OptionButton1.Value = True Then
i = 3
    For Each LayObj In BcadDoc.Layers
        i = i + 1
        Cells(i, 1).Value = LayObj.Name
        If LayObj.LayerOn = True Then
            Cells(i, 2).Value = "〇"
            Cells(i, 5).Value = "〇"
        Else
            Cells(i, 2).Value = "●"
            Cells(i, 5).Value = "●"
        End If
        If LayObj.Freeze = False Then
            Cells(i, 3).Value = "〇"
            Cells(i, 6).Value = "〇"
        Else
            Cells(i, 3).Value = "●"
            Cells(i, 6).Value = "●"
        End If
        If LayObj.Lock = False Then
            Cells(i, 4).Value = "〇"
            Cells(i, 7).Value = "〇"
        Else
            Cells(i, 4).Value = "●"
            Cells(i, 7).Value = "●"
        End If
        
    Next

''==========【画層状態復旧】==========

ElseIf ActiveSheet.OptionButton2.Value = True Then
i = 3
    For Each LayObj In BcadDoc.Layers
    i = i + 1
    If Cells(i, 1).Value = LayObj.Name Then
        If Cells(i, 2).Value = "〇" Then
            LayObj.LayerOn = True
        Else
            LayObj.LayerOn = False
        End If
        If Cells(i, 3).Value = "〇" Then
            LayObj.Freeze = False
        Else
            LayObj.Freeze = True
        End If
        If Cells(i, 4).Value = "〇" Then
            LayObj.Lock = False
        Else
            LayObj.Lock = True
        End If
    End If

    Next

''==========【画層状態変更】==========

ElseIf ActiveSheet.OptionButton3.Value = True Then
i = 3
    For Each LayObj In BcadDoc.Layers
    i = i + 1
    If Cells(i, 1).Value = LayObj.Name Then
        If Cells(i, 5).Value = "〇" Then
            LayObj.LayerOn = True
        Else
            LayObj.LayerOn = False
        End If
        If Cells(i, 6).Value = "〇" Then
            LayObj.Freeze = False
        Else
            LayObj.Freeze = True
        End If
        If Cells(i, 7).Value = "〇" Then
            LayObj.Lock = False
        Else
            LayObj.Lock = True
        End If
    End If

    Next

End If
  
End Sub

Sub DataClear()

If Cells(7, 2).Value > 1 Then
    ''取得データーをクリア
    Dim LastDataRow As Long
    LastDataRow = Cells(Rows.Count, 1).End(xlUp).Row
    ActiveSheet.Range(Rows(4), Rows(LastDataRow)).ClearContents
    Range("A2").Activate
End If
BcadDoc.Application.Update
End Sub

 

 

BricsCAD VBAを使ってみよう INDEX

BricsCAD VBAを使ってみよう[1] VBAのインストール

BricsCAD VBAを使ってみよう[2] UserFormその1
「BricsCAD VBA 」Creating UserForm

BricsCAD VBAを使ってみよう[3] UserFormその2
「BricsCAD VBA 」SerialNumber drawing with UserForm

BricsCAD VBAを使ってみよう[4] VBAの基本コード①

BricsCAD VBAを使ってみよう[5] VBAの基本コード②

BricsCAD VBAを使ってみよう[6] Excelとの連携①
「BricsCAD VBA to Excel」Get_CoordinateValues

BricsCAD VBAを使ってみよう[7] Excelとの連携② 
「Excel VBA to BricsCAD」Get_Area

BricsCAD VBAを使ってみよう[8] Excelとの連携②-2 
「Excel VBA to BricsCAD」Draw_ChannelSteel

BricsCAD VBAを使ってみよう[9] TABLEの自動作成と値入力
「BricsCAD VBA 」AutomaticCreation of TABLE

BricsCAD VBAを使ってみよう[10] Excelとの連携②-3
「Excel VBA to BricsCAD」SerialNumber_Ⅱ

BricsCAD VBAを使ってみよう[11] Excelとの連携②-4 
「Excel VBA to BricsCAD」Draw_Rectang

BricsCAD VBAを使ってみよう[12] Excelとの連携②-5 指定画層にOffset
「Excel VBA to BricsCAD」Continuous Offset to Specified Layer

BricsCAD VBAを使ってみよう[13] Excelとの連携②-6 指定画層にHATCH
「Excel VBA to BricsCAD」Continuous Hatch to Specified Layer

BricsCAD VBAを使ってみよう[14] Excelとの連携②-7 長さ計測
「Excel VBA to BricsCAD」Get Length

 

以下検討中です。

◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇
「この特集記事の内容につきましては、
こちらの環境のみの検討結果です。
動作保証は出来かねますため、ご参考
資料としてお扱いください。
Windows11(64bit)
BricsCAD pro V21(64bit)
Office2019(64bit)
◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇