-
The only way I see to do it without API is send the arrays to a sub/function and let it combine them.
I also included an alternate way but the points var will need to be global or passed.
[VBA]
Private pt1(2) As Double
Private pt2(2) As Double
Private pt3(2) As Double
'Private points(0 To 8) As Double 'an alternate
Private Sub wsuser()
Dim varRet() As Double
varRet = ThisDrawing.Utility.GetPoint(, "Leader start point: ")
CombineArr varRet, pt1
'CombineArr varRet, points 'alternate
' pt1(0) = varRet(0)
' pt1(1) = varRet(1)
' pt1(2) = varRet(2)
varRet = ThisDrawing.Utility.GetPoint(pt1, "Leader second point: ")
CombineArr varRet, pt2
'CombineArr varRet, points,3 'alternate
' pt2(0) = varRet(0)
' pt2(1) = varRet(1)
' pt2(2) = varRet(2)
varRet = ThisDrawing.Utility.GetPoint(pt2, "Leader last point: ")
CombineArr varRet, pt3
'CombineArr varRet, points,6 'alternate
' pt3(0) = varRet(0)
' pt3(1) = varRet(1)
' pt3(2) = varRet(2)
'MsgBox varRet(0) & ", " & varRet(1) & ", " & varRet(2)
Dim NoNull As Integer
NoNull = 1 ' Disallow null
ThisDrawing.Utility.InitializeUserInput NoNull, "Fillet Groove Plug"
ThisDrawing.Utility.Prompt "Specify Weld Name "
wldName = ThisDrawing.Utility.GetKeyword("[Fillet/Groove/Plug]: ")
ThisDrawing.Utility.InitializeUserInput NoNull, "Field All None Reference Back"
ThisDrawing.Utility.Prompt "Specify Weld Type "
wldType = ThisDrawing.Utility.GetKeyword("[Field/All/Reference/Back]: ")
ThisDrawing.Utility.InitializeUserInput NoNull, "Near Far Both"
ThisDrawing.Utility.Prompt "Specify Weld Side "
wldSide = ThisDrawing.Utility.GetKeyword("[Near/Far/Both]: ")
End Sub
Sub weldsymbol()
wsuser
drwleader
'MsgBox wldName & " " & wldType & " " & wldSide
End Sub
Private Sub drwleader()
'draws a leader in model space, no annotation
Dim leaderObj As AcadLeader
Dim points(0 To 8) As Double
Dim pt(0 To 2) As Double
Dim width As Double
Dim text As String
Dim leaderType As Integer
Dim annotationObject As AcadObject
CombineArr pt1, points 'not required for alternate
CombineArr pt2, points, 3 'not required for alternate
CombineArr pt3, points, 6 'not required for alternate
' points(0) = pt1(0): points(1) = pt1(1): points(2) = pt1(2)
' points(3) = pt2(0): points(4) = pt2(1): points(5) = pt2(2)
' points(6) = pt3(0): points(7) = pt3(1): points(8) = pt3(2)
CombineArr pt, pt3
'pt(0) = pt3(0): pt(1) = pt3(1): pt(2) = pt3(2)
width = 1
text = "help"
leaderType = acLineWithArrow
Set annotationObject = ModelSpace.AddMText(pt, width, wldSide)
'create the leader object in model space
Set leaderObj = ThisDrawing.ModelSpace.AddLeader(points, annotationObject, leaderType)
ZoomAll
End Sub
Private Sub CombineArr(iArr() As Double, ioArr() As Double, Optional iArrStart = 0)
Dim I As Integer
For I = LBound(iArr) To UBound(iArr)
ioArr(iArrStart) = iArr(I)
iArrStart = iArrStart + 1
Next
End Sub
[/VBA]
Posting Permissions
- You may not post new threads
- You may not post replies
- You may not post attachments
- You may not edit your posts
-
Forum Rules