前回は角度を参照して回転、移動、コピーすることを検討しましたが、今回はその続きで、参照した角度でブロックを挿入します。
Excelの事前設定は、前回、BricsCAD VBAを使ってみよう[16] Excelとの連携②-9 回転&移動orコピー をご参照ください。
基本設定
Worksheet の設定
前回の方位マークをブロックにして、角度を参照してブロック挿入しています。
垂直方向が基準の為、回転の角度を換算しています。
画層名一覧、ブロック名一覧取得に関しては、前回をご参照ください。
ちなみに回転用のシートとは別シートにしていますので、回転用のWorksheet に有るComboboxには画層一覧のリストは取得されていません。

ThisWorkbookに記述した、Excelのbookを開いた時に自動実行させるWorkbook_Open()のコードは、オープン時のWorksheet に有効のようです。
作図用のメインプロシージャ
ブロック挿入用のプロシージャです。
Sub Insert_block()
''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 CurLyr As String
CurLyr = BcadDoc.ActiveLayer.Name
''作図用画層名を取得
Dim SelLyr As String
SelLyr = ActiveSheet.ComboBox1.Value
''挿入ブロック名
Dim Insblk As String
Insblk = ActiveSheet.ComboBox2.Value
''挿入角度
Dim PI As Double
PI = WorksheetFunction.PI()
Dim Ang As Double
Ang = Cells(4, 2).Value * PI / 180
''BricsCADのキャプションを取得
Dim BcadCaption As String
BcadCaption = BcadDoc.Application.Caption
''===========================================
''作図実行
''===========================================
'' BricsCADの画面をアクティブ
AppActivate BcadCaption
On Error Resume Next
''作図開始点を取得
Dim pt() As Double
pt = BcadDoc.Utility.GetPoint(, "図形挿入点をクリック:")
''キャンセルの場合
If Err.Number <> 0 Then
Err.Clear
On Error GoTo 0
GoTo Errline
End If
''ブロックの変数設定
Dim blockRefObj As AcadBlockReference
''ブロック挿入
Set blockRefObj = BcadDoc.ModelSpace.InsertBlock(pt, Insblk, 1, 1, 1, Ang)
''InsertBlock(挿入位置, ブロック名, Xscale, Yscale ,Zscale, 回転「ラジアン」)
'' 画層変更
If SelLyr <> CurLyr Then
blockRefObj.Layer = SelLyr
blockRefObj.Update
End If
''図面を更新
BcadDoc.Application.Update
Errline:
Set BcadDoc = Nothing
Set BcadApp = Nothing
End Sub
・
・・・実際は、
”挿入ブロック名
Dim Insblk As String
Insblk = ActiveSheet.ComboBox2.Value
で、ComboBoxから取得するのはムズいので、
Excelのシート活用で、7行目からブロック名をずら~っと並べて、
アクティブセルから取得するようにしています。
Insblk = ActiveCell.Value
と言うつまらない落ちでした。。。。
又、ブロックの連続挿入に関しては、複数のブロックを一定の規則に従って挿入座標を計算しながら、一気に並べれるように設定して使用しています。
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
BricsCAD VBAを使ってみよう[15] Excelとの連携②-8 画層状態コントロール
「Excel VBA to BricsCAD」LayerStatusControl
BricsCAD VBAを使ってみよう[16] Excelとの連携②-9 回転&移動orコピー
「Excel VBA to BricsCAD」Rotate & move or copy
BricsCAD VBAを使ってみよう[17] Excelとの連携②-10 ブロック回転挿入
「Excel VBA to BricsCAD」Rotate & insert block
以下検討中です。
◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇
「この特集記事の内容につきましては、
こちらの環境のみの検討結果です。
動作保証は出来かねますため、ご参考
資料としてお扱いください。
Windows11(64bit)
BricsCAD pro V21(64bit)
Office2019(64bit)
◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇

