前回は角度を参照して回転、移動、コピーすることを検討しましたが、今回はその続きで、参照した角度でブロックを挿入します。
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)
◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇