AutoCAD VBA 橫斷面繪製自動化(疏濬用)

新版本請參考 VBA @ 一般渠道疏濬圖

前言:

因應筆者所在的灌溉給水區域為濁水系統,外加上坡度比較緩和,常需要有疏濬的工作要執行,每次在計算疏濬土方量的時候,畫一下縱橫斷面也是不可避免的。現地的狀況由該擔當區的人員最能理解土方分布情況,但又受限於繪製CAD斷面也是一門學問,因而引發我寫了一個side project將原本在CAD中設定斷面高程的部分以Excel表的形式代替,爾後再由CAD中的dvb檔去連結設定檔,達到參數化製圖的目的。



使用方法:

1. 設定該灌溉系統的起訖點、渠道形式(U型溝、內面工)及尺寸(Unit:M)。

圖一、排序必須由上到下遞增,不能有空白。

2. 點選 "斷面填寫" 後依照指示填寫。(會先偵測前次的最後樁號,填入樁號需比它後面)

圖二、Buttom位於工作表1:橫斷面繪製資料。

P.S:如左側有剩餘資料,請先點選 "刪除資料"。

3. 填寫時若是板橋、箱涵等較難疏濬的地方,請在樁號填寫上or下,代表上斷面or下斷面

4. 填寫左右環境參數後、各點高程以及是否為結束點(END?),如已知下一個的樁號可填寫 下      一個間距,點按OK後不會再進行詢問。

圖三、Excel VBA中的userform。

P.S2:結束點代表為板橋或箱涵的上斷面,在土石方計算表中會多安插一列空白行隔開。

5.如果要更改已經填寫的最後一道樁號資料,可以透過 "上一動 " 將其引入。

6.填寫完後點按 " 結束 " 再進行檢查各項資料後即可儲存備用。

7.進入AutoCAD中,將dvb檔引入後並且將該Excel開啟中,即可繪製一連續的斷面。

8.回到Excel中,點擊 "土石報表 " ,即可得到老大們需要的土石方報表。



'
'This project is to solve the complex and boring things in dredge event
'Made by Hank Lin 2018/3/19 @ MelinStation
'This version is for AutoCAD 2016 and Excel2016
'

Public plineobj As AcadPolyline
Public lineobj As AcadLine
Public tobj As AcadText
Public arcobj As AcadArc
Public lay As AcadLayer

Const ratio = 1
Const figLength = 4000
Const lastLength = 800
Const txtLength = 2000
Const txtheight100 = 100 * 2.5
Const digWidth = 300
Const rail = 300

Sub getHorizontalFile()

Dim spt(2) As Double
Dim ept(2) As Double
Dim filename As String
Dim insertpt() As Double
Dim vertices() As Double
Dim X_center As Double, Y_center As Double
Dim crossName As String, slopeDown As Double, LeftEnv As String, RightEnv As String, bottomDepth As Double, channelType As String, DigArea As Double
Dim r As Integer, channelSelect As Integer, BD As Double, BT As Double, H As Double, t As Double, rail As Double, LW As Double, RW As Double, LeftEnvHeight As Double, RightEnvHeight As Double
Dim retlineobj1 As AcadLine
Dim retlineobj2 As AcadLine
Dim ret As Variant

Call BasicSetting(1)

On Error Resume Next

Set excelapp = CreateObject("excel.application")

If err <> "" Then

    Set excelapp = GetObject(, "excel.application")

End If

On Error GoTo 0

With excelapp

    On Error GoTo GETFILE
    
    '.Workbooks.Open ("D:\Horizontal123.xlsm")
    
    On Error GoTo 0
    
continue:
    
    .Visible = True
    
    Set sht = excelapp.ActiveWorkbook.ActiveSheet
    
    lr = sht.Cells(sht.Rows.Count, 1).End(xlUp).Row
    
    ret = ThisDrawing.Utility.GetPoint(, "請選擇第一個渠道要生成的中心點")

    For r = 3 To lr Step 2
        
        crossName = sht.Cells(r, 1)
        LeftEnv = sht.Cells(r, 2)
        LeftEnvHeight = sht.Cells(r, 3)
        RightEnv = sht.Cells(r, 4)
        RightEnvHeight = sht.Cells(r, 5)
        slopeDown = sht.Cells(r, 6)
        channelType = sht.Cells(r, 7)
        channelSelect = sht.Cells(r, 7).Font.ColorIndex
        
        X_center = ret(0) + figLength * k * 1.5
        Y_center = ret(1) + -figLength * j
        
        j = j + 1
        
        If j Mod 4 = 0 Then
        
            k = k + 1
            j = 0
            
        End If
        
        i = 3
        
        X = X_center
        Y = Y_center
        
        If channelSelect = 3 Then
        
            Call PlotTrapzoidChannel(X, Y, channelType, sht, BD, BT, retlineobj1, retlineobj2, H)
            
            Call DigLineT(X, Y, slopeDown, r, sht, BD, retlineobj1, retlineobj2, DigArea)
            
            Call DescriptionT(X, Y, LeftEnv, RightEnv, LeftEnvHeight, RightEnvHeight, BT, H)
            
        Else
        
            Call PlotChannel(X, Y, channelType, sht, BT, LW, RW, t)
        
            Call DigLineU(X, Y, slopeDown, r, sht, BT, DigArea)
            
            Call DescriptionU(X, Y, LeftEnv, RightEnv, LeftEnvHeight, RightEnvHeight, BT, LW, RW, t)
        
        End If
        
        Call AddTitle(X, Y, crossName, slopeDown, DigArea)
        
        sht.Cells(r, 8) = Round(DigArea / 1000000, 2)
        
    Next
    
err:
    '.Workbooks(1).Close SaveChanges:=True
    '.Quit

End With

ZoomAll

Exit Sub

GETFILE:

filename = excelapp.GetOpenFilename

If filename Like "False*" Then Exit Sub

excelapp.Workbooks.Open (filename)

GoTo continue

End Sub

Sub PlotTrapzoidChannel(ByVal X_center As Double, ByVal Y_center As Double, ByVal channelType As String, ByVal sht As Worksheet, ByRef BD As Double, ByRef BT As Double, _
                        ByRef retlineobj1 As AcadLine, ByRef retlineobj2 As AcadLine, ByRef H As Double)

Dim lineobj As AcadLine, lineobj2 As AcadLine, lineobj3 As AcadLine
Dim plineobj As AcadPolyline
Dim spt(2) As Double, ept(2) As Double
Dim ret1 As Variant, ret2 As Variant
Dim vertices(23) As Double

ThisDrawing.ActiveLayer = ThisDrawing.Layers("中心線")

spt(0) = X_center: spt(1) = Y_center + 800
ept(0) = X_center: ept(1) = Y_center - 300

Set lineobj = ThisDrawing.ModelSpace.AddLine(spt, ept)

ThisDrawing.ActiveLayer = ThisDrawing.Layers("原渠道(疏濬)")


'---control coefficient----

With sht

For Each rng In .UsedRange

    If rng.Value = "Type" Then
    
        c = rng.Column
        
        Exit For
        
    End If

Next

r = 3

Do Until .Cells(r, c) = ""

    If .Cells(r, c) = channelType Then
    
        BT = .Cells(r, c + 8) * 1000
        BD = .Cells(r, c + 9) * 1000
        H = .Cells(r, c + 10) * 1000
        t = .Cells(r, c + 11) * 1000
            
        Exit Do
            
    End If

    r = r + 1
Loop

m = (BT - BD) / 2 / H
'----------------------
    spt(0) = X_center: spt(1) = Y_center - t
    ept(0) = spt(0) - 10: ept(1) = Y_center - t
    Set lineobj = ThisDrawing.ModelSpace.AddLine(spt, ept)

vertices(0) = X_center
vertices(1) = Y_center

vertices(3) = X_center - BD / 2
vertices(4) = Y_center

    spt(0) = vertices(3) - t * 1 / Sqr(m * m + 1): spt(1) = vertices(4) - m * t / Sqr(m * m + 1)
    ept(0) = spt(0) - 200 * m: ept(1) = spt(1) + 200
    Set lineobj2 = ThisDrawing.ModelSpace.AddLine(spt, ept)
    ret1 = lineobj.IntersectWith(lineobj2, acExtendBoth)

vertices(6) = X_center - BT / 2
vertices(7) = Y_center + H
    
    spt(0) = vertices(3): spt(1) = vertices(4)
    ept(0) = vertices(6): ept(1) = vertices(7)
    Set retlineobj1 = ThisDrawing.ModelSpace.AddLine(spt, ept)

vertices(9) = X_center - BT / 2 - rail
vertices(10) = Y_center + H

vertices(12) = X_center - BT / 2 - rail
vertices(13) = Y_center + H - t

    spt(0) = vertices(9): spt(1) = vertices(10) - t
    ept(0) = spt(0) - 10: ept(1) = spt(1)
    Set lineobj3 = ThisDrawing.ModelSpace.AddLine(spt, ept)
    ret2 = lineobj2.IntersectWith(lineobj3, acExtendBoth)
    
vertices(15) = ret2(0)
vertices(16) = ret2(1)

vertices(18) = ret1(0)
vertices(19) = ret1(1)

vertices(21) = vertices(0)
vertices(22) = vertices(1) - t

Set plineobj = ThisDrawing.ModelSpace.AddPolyline(vertices)

spt(0) = X_center
spt(1) = Y_center - 100

ept(0) = X_center
ept(1) = Y_center

Set plineobj2 = plineobj.Mirror(spt, ept)

Set retlineobj2 = retlineobj1.Mirror(spt, ept)

lineobj.Delete
lineobj2.Delete
lineobj3.Delete

Dim hatchobj As AcadHatch
Dim outerloop(0 To 1) As AcadEntity

Set hatchobj = ThisDrawing.ModelSpace.AddHatch(0, "SOLID", True)

Set outerloop(0) = plineobj
Set outerloop(1) = plineobj2

hatchobj.AppendOuterLoop (outerloop)

End With

End Sub


Sub PlotChannel(ByVal X As Double, ByVal Y As Double, ByVal channelType As String, ByVal sht As Worksheet, ByRef BT As Double, ByRef LW As Double, ByRef RW As Double, ByRef t As Double)

'ThisDrawing.ActiveLayer = ThisDrawing.Layers("新建渠道")

With sht

Dim rng As Range
Dim vertices(14 * 3 - 1) As Double
Dim spt(2) As Double, ept(2) As Double

ThisDrawing.ActiveLayer = ThisDrawing.Layers("中心線")

spt(0) = X: spt(1) = Y + 800
ept(0) = X: ept(1) = Y - 300

Set lineobj = ThisDrawing.ModelSpace.AddLine(spt, ept)

ThisDrawing.ActiveLayer = ThisDrawing.Layers("原渠道(疏濬)")

For Each rng In .UsedRange

    If rng.Value = "Type" Then
    
        c = rng.Column
        Exit For
    
    End If

Next

lr = .Cells(1, c).End(xlDown).Row

For r = 1 To lr

    If .Cells(r, c) = channelType Then
        
        t = .Cells(r, c + 4) * 1000
        
        BT = .Cells(r, c + 3) * 1000
        LT = t
        LW = .Cells(r, c + 5) * 1000
        BW = t
        RW = .Cells(r, c + 6) * 1000
        RT = t
        b = .Cells(r, c + 7) * 1000

        Exit For
    
    End If

Next

X_ch = X
Y_ch = Y
'pt1
vertices(0) = X_ch
vertices(1) = Y_ch
'pt2
vertices(3) = X_ch - BT / 2
vertices(4) = Y_ch
'pt3
vertices(6) = X_ch - BT / 2
vertices(7) = Y_ch + LW
'pt4
vertices(9) = X_ch - BT / 2 - LT
vertices(10) = Y_ch + LW
'pt5
vertices(12) = X_ch - BT / 2 - LT
vertices(13) = Y_ch
'pt6
vertices(15) = X_ch - BT / 2 - LT - b
vertices(16) = Y_ch
'pt7
vertices(18) = X_ch - BT / 2 - LT - b
vertices(19) = Y_ch - BW - bW2
'pt8
vertices(21) = X_ch + BT / 2 + RT + b
vertices(22) = Y_ch - BW - bW2
'pt9
vertices(24) = X_ch + BT / 2 + RT + b
vertices(25) = Y_ch
'pt10
vertices(27) = X_ch + BT / 2 + RT
vertices(28) = Y_ch
'pt11
vertices(30) = X_ch + BT / 2 + RT
vertices(31) = Y_ch + RW
'pt12
vertices(33) = X_ch + BT / 2
vertices(34) = Y_ch + RW
'pt13
vertices(36) = X_ch + BT / 2
vertices(37) = Y_ch
'pt14
vertices(39) = X_ch
vertices(40) = Y_ch

Set plineobj = ThisDrawing.ModelSpace.AddPolyline(vertices)


End With

Dim hatchobj As AcadHatch
Dim outerloop(0 To 0) As AcadEntity

Set hatchobj = ThisDrawing.ModelSpace.AddHatch(0, "SOLID", True)

Set outerloop(0) = plineobj

hatchobj.AppendOuterLoop (outerloop)

End Sub

Sub AddTitle(ByVal X_center As Double, ByVal Y_center As Double, ByVal crossName As String, ByVal slopeDown As String, ByRef DigArea As Double)

ThisDrawing.ActiveLayer = ThisDrawing.Layers("橫斷面說明")

Dim txtpt(2) As Double
Dim spt(2) As Double
Dim ept(2) As Double

txtpt(0) = X_center
txtpt(1) = Y_center + txtLength
txtpt(2) = 0

If crossName Like "*.*" Then

crossName = Format(crossName, "0+000.0")

Else

crossName = Format(crossName, "0+000")

End If

Set tobj = ThisDrawing.ModelSpace.AddText(crossName, txtpt, txtheight100)

tobj.Alignment = acAlignmentMiddleCenter

tobj.TextAlignmentPoint = txtpt

spt(0) = txtpt(0) - 800 / ratio
spt(1) = txtpt(1) - 200 / ratio

ept(0) = txtpt(0) + 800 / ratio
ept(1) = spt(1)

Set lineobj = ThisDrawing.ModelSpace.AddLine(spt, ept)

txtpt(1) = Y_center + txtLength - 400 / ratio

slopeDown = Format(slopeDown, "0.00")

If slopeDown >= 0 Then slopeDown = "-" & slopeDown

Set tobj = ThisDrawing.ModelSpace.AddText(slopeDown, txtpt, txtheight100)

tobj.Alignment = acAlignmentMiddleCenter

tobj.TextAlignmentPoint = txtpt

txtpt(0) = txtpt(0) + 2000
txtpt(1) = txtpt(1) + 200

A = "C= " & Round(DigArea / 1000000, 2) & "m3"

Set tobj = ThisDrawing.ModelSpace.AddText(A, txtpt, txtheight100)

tobj.Alignment = acAlignmentMiddleCenter

tobj.TextAlignmentPoint = txtpt

'ThisDrawing.ActiveLayer = ThisDrawing.Layers("0")

End Sub

Sub DigLineT(ByVal X As Double, ByVal Y As Double, ByVal slopeDown As Double, ByVal r As Integer, _
             ByVal sht As Worksheet, ByVal BD As Double, ByVal retlineobj1 As AcadLine, ByVal retlineobj2 As AcadLine, ByRef DigArea As Double)

Dim vertices(8 * 3 - 1) As Double
Dim ret As Variant
Dim spt(2) As Double, ept(2) As Double

ThisDrawing.ActiveLayer = ThisDrawing.Layers("開挖線")

With sht

spt(0) = X - BD / 2: spt(1) = Y + .Cells(r + 1, 1) * 1000
ept(0) = spt(0) - 10: ept(1) = spt(1) + 2

Set lineobj = ThisDrawing.ModelSpace.AddLine(spt, ept)

ret = lineobj.IntersectWith(retlineobj1, acExtendBoth)

lineobj.Delete

vertices(0) = ret(0)
vertices(1) = ret(1)

vertices(3) = spt(0)
vertices(4) = spt(1)

spt(0) = X + BD / 2: spt(1) = Y + .Cells(r + 1, 3) * 1000
ept(0) = spt(0) + 10: ept(1) = spt(1) + 2

Set lineobj = ThisDrawing.ModelSpace.AddLine(spt, ept)

ret = lineobj.IntersectWith(retlineobj2, acExtendBoth)

vertices(6) = X
vertices(7) = Y + slopeDown * 1000

vertices(9) = spt(0)
vertices(10) = spt(1)

vertices(12) = ret(0)
vertices(13) = ret(1)

vertices(15) = X + BD / 2
vertices(16) = Y

vertices(18) = X - BD / 2
vertices(19) = Y

vertices(21) = vertices(0)
vertices(22) = vertices(1)

Set plineobj = ThisDrawing.ModelSpace.AddPolyline(vertices)

DigArea = plineobj.Area

lineobj.Delete
retlineobj1.Delete
retlineobj2.Delete

End With

End Sub

Sub DigLineU(ByVal X As Double, ByVal Y As Double, ByVal slopeDown As Double, ByVal r As Integer, _
            ByVal sht As Worksheet, ByVal BT As Double, ByRef DigArea As Double)

ThisDrawing.ActiveLayer = ThisDrawing.Layers("開挖線")

With sht

DigCount = .Cells(r + 1, 1).End(xlToRight).Column - 1

    distance = BT / DigCount

    Dim vertices(8 * 3 - 1) As Double
    
    vertices(0) = X - 2 * distance
    vertices(1) = Y + .Cells(r + 1, 1) * 1000
    
    vertices(3) = X - distance
    vertices(4) = Y + .Cells(r + 1, 2) * 1000
    
    vertices(6) = X
    vertices(7) = Y + .Cells(r, 6) * 1000
    
    vertices(9) = X + distance
    vertices(10) = Y + .Cells(r + 1, 4) * 1000
    
    vertices(12) = X + 2 * distance
    vertices(13) = Y + .Cells(r + 1, 5) * 1000
    
    vertices(15) = X + 2 * distance
    vertices(16) = Y
    
    vertices(18) = X - 2 * distance
    vertices(19) = Y
    
    vertices(21) = vertices(0)
    vertices(22) = vertices(1)
    
    Set plineobj = ThisDrawing.ModelSpace.AddPolyline(vertices)

    DigArea = plineobj.Area

End With

End Sub


Sub DescriptionT(ByVal X As Double, ByVal Y As Double, ByVal LeftEnv As String, ByVal RightEnv As String, ByVal LeftEnvHeight As Double, ByVal RightEnvHeight As Double, ByVal BT As Double, ByVal H As Double)

Dim txtpt(2) As Double
Dim cpt(2) As Double
Dim fitpt(2) As Double
Dim basept(2) As Double
Dim endpt(2) As Double
Dim vertices(3 * 3 - 1) As Double

ThisDrawing.ActiveLayer = ThisDrawing.Layers("橫斷面說明")


For i = 1 To 2
    
    Select Case i
    
    Case 1
    
        basept(0) = X - BT / 2 - rail
        basept(1) = Y + H
        
        fitpt(0) = X - BT / 2 - 2 * rail
        fitpt(1) = Y + LeftEnvHeight * 1000
    
        endpt(0) = fitpt(0) - lastLength
        endpt(1) = fitpt(1)
        
        txtpt(0) = endpt(0)
        txtpt(1) = endpt(1) + 200
    
        vertices(0) = basept(0): vertices(1) = basept(1)
        vertices(3) = fitpt(0): vertices(4) = fitpt(1)
        vertices(6) = endpt(0): vertices(7) = endpt(1)
    
        Set plineobj = ThisDrawing.ModelSpace.AddPolyline(vertices)
    
        Set tobj = ThisDrawing.ModelSpace.AddText(LeftEnv, txtpt, txtheight100)
    
    Case 2
    
        basept(0) = X + BT / 2 + rail
        basept(1) = Y + H
        
        fitpt(0) = X + BT / 2 + 2 * rail
        fitpt(1) = Y + RightEnvHeight * 1000
        
        endpt(0) = fitpt(0) + lastLength
        endpt(1) = fitpt(1)
        
        txtpt(0) = endpt(0)
        txtpt(1) = endpt(1) + 200
    
        vertices(0) = basept(0): vertices(1) = basept(1)
        vertices(3) = fitpt(0): vertices(4) = fitpt(1)
        vertices(6) = endpt(0): vertices(7) = endpt(1)
    
        Set plineobj = ThisDrawing.ModelSpace.AddPolyline(vertices)
    
        Set tobj = ThisDrawing.ModelSpace.AddText(RightEnv, txtpt, txtheight100)
    
    End Select
    
    tobj.Alignment = acAlignmentBottomCenter
    tobj.TextAlignmentPoint = txtpt
    
    Radius = 50
    
    cpt(0) = endpt(0)
    cpt(1) = endpt(1) + Radius
    
    Set arcobj = ThisDrawing.ModelSpace.AddArc(cpt, Radius, 3.14 / 2, -3.14 / 2)
    
    arcobj.Rotate endpt, -3.14 / 6
    
    cpt(0) = endpt(0)
    
    cpt(1) = endpt(1) - Radius
    
    Set arcobj = ThisDrawing.ModelSpace.AddArc(cpt, Radius, -3.14 / 2, 3.14 / 2)
    
    arcobj.Rotate endpt, -3.14 / 6

Next

'ThisDrawing.ActiveLayer = ThisDrawing.Layers("0")


End Sub

Sub DescriptionU(ByVal X As Double, ByVal Y As Double, ByVal LeftEnv As String, ByVal RightEnv As String, ByVal LeftEnvHeight As Double, ByVal RightEnvHeight As Double, ByVal BT As Double, ByVal LW As Double, ByVal RW As Double, ByVal t As Double)

Dim txtpt(2) As Double
Dim cpt(2) As Double
Dim basept(2) As Double
Dim spt(2) As Double

ThisDrawing.ActiveLayer = ThisDrawing.Layers("橫斷面說明")

For i = 1 To 2
    
    Select Case i
    
    Case 1
    
        basept(0) = X - BT / 2 - t - lastLength
        basept(1) = Y + LeftEnvHeight * 1000
        
        txtpt(0) = basept(0)
        txtpt(1) = basept(1) + 200
        
        spt(0) = basept(0) + lastLength
        spt(1) = basept(1)
    
        Set tobj = ThisDrawing.ModelSpace.AddText(LeftEnv, txtpt, txtheight100)
    
    Case 2
    
        basept(0) = X + BT / 2 + t + lastLength
        basept(1) = Y + RightEnvHeight * 1000
        
        txtpt(0) = basept(0)
        txtpt(1) = basept(1) + 200
        
        spt(0) = basept(0) - lastLength
        spt(1) = basept(1)
    
        Set tobj = ThisDrawing.ModelSpace.AddText(RightEnv, txtpt, txtheight100)
    
    End Select
    
    Set lineobj = ThisDrawing.ModelSpace.AddLine(spt, basept) '地盤線
    
    tobj.Alignment = acAlignmentBottomCenter
    tobj.TextAlignmentPoint = txtpt
    
    Radius = 50
    
    cpt(0) = basept(0)
    cpt(1) = basept(1) + Radius
    
    Set arcobj = ThisDrawing.ModelSpace.AddArc(cpt, Radius, 3.14 / 2, -3.14 / 2)
    
    arcobj.Rotate basept, -3.14 / 6
    
    cpt(0) = basept(0)
    
    cpt(1) = basept(1) - Radius
    
    Set arcobj = ThisDrawing.ModelSpace.AddArc(cpt, Radius, -3.14 / 2, 3.14 / 2)
    
    arcobj.Rotate basept, -3.14 / 6

Next

'ThisDrawing.ActiveLayer = ThisDrawing.Layers("0")

End Sub

Sub BasicSetting(ByVal i As Integer)

On Error Resume Next

Dim txtStyle As AcadTextStyle
Dim txtStyles As AcadTextStyles

Set txtStyles = ThisDrawing.TextStyles

For Each txtStyle In txtStyles

    If txtStyle.Name = "工程用仿宋體" Then
    
        IsAdded = True
    
    End If

Next

If IsAdded = False Then

    Set txtStyle = txtStyles.Add("工程用仿宋體")
    txtStyle.fontFile = "c:\windows\fonts\simfang.ttf"

End If

Set txtStyle = txtStyles("工程用仿宋體")

If ThisDrawing.ActiveTextStyle.Name <> "工程用仿宋體" Then

    ThisDrawing.ActiveTextStyle = txtStyle

End If

If ThisDrawing.ActiveLayer.Name <> "0" Then

    ThisDrawing.ActiveLayer = ThisDrawing.Layers("0")

End If

ThisDrawing.Linetypes.Load "DASHDOT", "acad.lin"
ThisDrawing.Linetypes.Load "CENTER", "acad.lin"

Set lays = ThisDrawing.Layers

Set lay = lays.Add("原渠道(疏濬)")

    lay.color = acWhite

Set lay = lays.Add("中心線")

    lay.color = acRed
    lay.Linetype = "CENTER"

Set lay = lays.Add("開挖線")

    lay.color = acGreen

Set lay = lays.Add("橫斷面說明")

    lay.color = acWhite

ThisDrawing.ActiveLayer = ThisDrawing.Layers("0")

End Sub



留言

張貼留言

Popular Posts

Excel VBA @ 監造日報表、查驗表 -2

ExcelVBA@施工照片整理的應用範例

Excel VBA@ 監造日報表、查驗表