Code:
Option Explicit
Const dblWidth As Double = 141.42 '<--change the constant width of roll here
Const pi As Double = 3.14159265358979
Sub DrawDetail()
Dim pt1 As Variant, pt2 As Variant
Dim pt3 As Variant, pt4 As Variant
Dim pt5 As Variant, pt6 As Variant
Dim pt7 As Variant, pt8 As Variant
Dim lpt1 As Variant, lpt2 As Variant
Dim lpt3 As Variant, lpt4 As Variant
Dim dp1 As Variant, dp2 As Variant
Dim dp3 As Variant, dp4 As Variant
Dim ang As Double
Dim dblGap As Double
Dim oLine As AcadLine
Dim oDim As AcadDimAligned
Dim strColor As String
Dim intOsm As Integer
Dim strLayer As String
With ThisDrawing
intOsm = .GetVariable("OSMODE")
strColor = .GetVariable("CECOLOR")
strLayer = .GetVariable("CLAYER")
.SetVariable "OSMODE", 0
.SetVariable "CLAYER", "ANNO-DETAIL" '<--change the layer name for detail here
.SetVariable "CECOLOR", "256"
pt1 = .Utility.GetPoint(, vbCr & " >> Pick first point: ")
pt2 = .Utility.GetPoint(pt1, vbCr & " >> Pick second point: ")
dblGap = CDbl(InputBox(vbCr & "Enter offset distance (shown as " & """A""" & "):", "Custom Rectang", "25"))
ang = .Utility.AngleFromXAxis(pt1, pt2)
pt3 = .Utility.PolarPoint(pt1, ang + (pi / 2), dblWidth / 2)
pt4 = .Utility.PolarPoint(pt2, ang + (pi / 2), dblWidth / 2)
pt5 = .Utility.PolarPoint(pt1, ang - (pi / 2), dblWidth / 2)
pt6 = .Utility.PolarPoint(pt2, ang - (pi / 2), dblWidth / 2)
lpt1 = .Utility.PolarPoint(pt1, ang + (pi / 2), dblGap)
lpt2 = .Utility.PolarPoint(pt2, ang + (pi / 2), dblGap)
lpt3 = .Utility.PolarPoint(pt1, ang - (pi / 2), dblGap)
lpt4 = .Utility.PolarPoint(pt2, ang - (pi / 2), dblGap)
dp1 = .Utility.PolarPoint(pt3, ang + (pi / 2), dblGap)
dp2 = .Utility.PolarPoint(pt4, ang + (pi / 2), dblGap)
dp3 = .Utility.PolarPoint(pt3, ang + pi, dblGap)
dp4 = .Utility.PolarPoint(pt2, ang, dblGap)
With .ModelSpace
Set oLine = .AddLine(pt3, pt4)
Set oLine = .AddLine(pt5, pt6)
Set oLine = .AddLine(pt3, pt5)
Set oLine = .AddLine(pt4, pt6)
Set oLine = .AddLine(lpt1, lpt2)
Set oLine = .AddLine(lpt3, lpt4)
End With
.SetVariable "CLAYER", "ANNO-DIM" '<--change the layer name for dimensions here
With .ModelSpace
Set oDim = .AddDimAligned(pt3, pt4, dp1)
Set oDim = .AddDimAligned(pt3, pt5, dp3)
Set oDim = .AddDimAligned(pt2, lpt2, dp4)
Set oDim = .AddDimAligned(pt2, lpt4, dp4)
End With
.SetVariable "OSMODE", intOsm
.SetVariable "CLAYER", strLayer
.SetVariable "CECOLOR", strColor
End With
End Sub