PDA

View Full Version : Block Insert tidy up



wpeacock
2005-04-19, 05:19 AM
I'm using the following code to inset a block in a grid (almost) like pattern thirteen times.
the code works fine but it's really messy .. (and very long too)

Can you condense the Dim statement to something like...
Dim SB103975_leg(i) (0 to 2) using a for loop statement for i = A to N????


Could this method be transfered to Dim SB103975RefObj_legA As AcadBlockReference
ie Dim SB103975RefObj_leg(i) As AcadBlockReference


And use a similar method for the set statement also???







Private Sub CmdDraw_Click()

'add soleboard
Dim SB103975_legA(0 To 2) As Double
Dim SB103975_legB(0 To 2) As Double
Dim SB103975_legC(0 To 2) As Double
Dim SB103975_legD(0 To 2) As Double
Dim SB103975_legE(0 To 2) As Double
Dim SB103975_legF(0 To 2) As Double
Dim SB103975_legG(0 To 2) As Double
Dim SB103975_legH(0 To 2) As Double
Dim SB103975_legJ(0 To 2) As Double
Dim SB103975_legK(0 To 2) As Double
Dim SB103975_legL(0 To 2) As Double
Dim SB103975_legM(0 To 2) As Double
Dim SB103975_legN(0 To 2) As Double
Dim SB103975PathName As String 'describe the path name of the block

SB103975_legA(0) = (-LHRBW - 112.5): SB103975_legA(1) = 2400: SB103975_legA(2) = 19
SB103975_legB(0) = (-LHRBW - 112.5): SB103975_legB(1) = 0: SB103975_legB(2) = 19
SB103975_legC(0) = (-112.5): SB103975_legC(1) = 2400: SB103975_legC(2) = 19
SB103975_legD(0) = (-112.5): SB103975_legD(1) = 1200: SB103975_legD(2) = 19
SB103975_legE(0) = (-112.5): SB103975_legE(1) = 0: SB103975_legE(2) = 19
SB103975_legF(0) = (1200 - 112.5): SB103975_legF(1) = 2400: SB103975_legF(2) = 19
SB103975_legG(0) = (1200 - 112.5): SB103975_legG(1) = 1200: SB103975_legG(2) = 19
SB103975_legH(0) = (1200 - 112.5): SB103975_legH(1) = 0: SB103975_legF(2) = 19
SB103975_legJ(0) = (2400 - 112.5): SB103975_legJ(1) = 2400: SB103975_legJ(2) = 19
SB103975_legK(0) = (2400 - 112.5): SB103975_legK(1) = 1200: SB103975_legK(2) = 19
SB103975_legL(0) = (2400 - 112.5): SB103975_legL(1) = 0: SB103975_legL(2) = 19
SB103975_legM(0) = (2400 + RHRBW - 112.5): SB103975_legM(1) = 2400: SB103975_legM(2) = 19
SB103975_legN(0) = (2400 + RHRBW - 112.5): SB103975_legN(1) = 0: SB103975_legN(2) = 19


SB103975PathName = "C:Temp103975xyz.dwg" 'path of block

' Insert soleboard
Dim SB103975RefObj_legA As AcadBlockReference
Dim SB103975RefObj_legB As AcadBlockReference
Dim SB103975RefObj_legC As AcadBlockReference
Dim SB103975RefObj_legD As AcadBlockReference
Dim SB103975RefObj_legE As AcadBlockReference
Dim SB103975RefObj_legF As AcadBlockReference
Dim SB103975RefObj_legG As AcadBlockReference
Dim SB103975RefObj_legH As AcadBlockReference
Dim SB103975RefObj_legJ As AcadBlockReference
Dim SB103975RefObj_legK As AcadBlockReference
Dim SB103975RefObj_legL As AcadBlockReference
Dim SB103975RefObj_legM As AcadBlockReference
Dim SB103975RefObj_legN As AcadBlockReference

Set SB103975RefObj_legA = ThisDrawing.ModelSpace.InsertBlock(SB103975_legA, SB103975PathName, 1#, 1#, 1#, 0)
Set SB103975RefObj_legB = ThisDrawing.ModelSpace.InsertBlock(SB103975_legB, SB103975PathName, 1#, 1#, 1#, 0)
Set SB103975RefObj_legC = ThisDrawing.ModelSpace.InsertBlock(SB103975_legC, SB103975PathName, 1#, 1#, 1#, 0)
Set SB103975RefObj_legD = ThisDrawing.ModelSpace.InsertBlock(SB103975_legD, SB103975PathName, 1#, 1#, 1#, 0)
Set SB103975RefObj_legE = ThisDrawing.ModelSpace.InsertBlock(SB103975_legE, SB103975PathName, 1#, 1#, 1#, 0)
Set SB103975RefObj_legF = ThisDrawing.ModelSpace.InsertBlock(SB103975_legF, SB103975PathName, 1#, 1#, 1#, 0)
Set SB103975RefObj_legG = ThisDrawing.ModelSpace.InsertBlock(SB103975_legG, SB103975PathName, 1#, 1#, 1#, 0)
Set SB103975RefObj_legH = ThisDrawing.ModelSpace.InsertBlock(SB103975_legH, SB103975PathName, 1#, 1#, 1#, 0)
Set SB103975RefObj_legJ = ThisDrawing.ModelSpace.InsertBlock(SB103975_legJ, SB103975PathName, 1#, 1#, 1#, 0)
Set SB103975RefObj_legK = ThisDrawing.ModelSpace.InsertBlock(SB103975_legK, SB103975PathName, 1#, 1#, 1#, 0)
Set SB103975RefObj_legL = ThisDrawing.ModelSpace.InsertBlock(SB103975_legL, SB103975PathName, 1#, 1#, 1#, 0)
Set SB103975RefObj_legM = ThisDrawing.ModelSpace.InsertBlock(SB103975_legM, SB103975PathName, 1#, 1#, 1#, 0)
Set SB103975RefObj_legN = ThisDrawing.ModelSpace.InsertBlock(SB103975_legN, SB103975PathName, 1#, 1#, 1#, 0)

SB103975RefObj_legA.Layer = "3D_StretcherStair"
SB103975RefObj_legB.Layer = "3D_StretcherStair"
SB103975RefObj_legC.Layer = "3D_StretcherStair"
SB103975RefObj_legD.Layer = "3D_StretcherStair"
SB103975RefObj_legE.Layer = "3D_StretcherStair"
SB103975RefObj_legF.Layer = "3D_StretcherStair"
SB103975RefObj_legG.Layer = "3D_StretcherStair"
SB103975RefObj_legH.Layer = "3D_StretcherStair"
SB103975RefObj_legJ.Layer = "3D_StretcherStair"
SB103975RefObj_legK.Layer = "3D_StretcherStair"
SB103975RefObj_legL.Layer = "3D_StretcherStair"
SB103975RefObj_legM.Layer = "3D_StretcherStair"
SB103975RefObj_legN.Layer = "3D_StretcherStair"

SB103975RefObj_legA.Update
SB103975RefObj_legB.Update
SB103975RefObj_legC.Update
SB103975RefObj_legD.Update
SB103975RefObj_legE.Update
SB103975RefObj_legF.Update
SB103975RefObj_legG.Update
SB103975RefObj_legH.Update
SB103975RefObj_legJ.Update
SB103975RefObj_legK.Update
SB103975RefObj_legL.Update
SB103975RefObj_legM.Update
SB103975RefObj_legN.Update

EndSub

mtuersley
2005-04-19, 02:31 PM
Try something like this:

Sub Try()
Dim oBlkRef As AcadBlockReference
Dim dPt(2) As Double
Dim iCntr As Integer
Dim cInsPts As Collection
Set cInsPts = New Collection
Dim SB103975PathName As String
SB103975PathName = "C:Temp103975xyz.dwg"
dPt(0) = (-LHRBW - 112.5): dPt(1) = 2400: dPt(2) = 19
cInsPts.Add dPt
dPt(0) = (-LHRBW - 112.5): dPt(1) = 0: dPt(2) = 19
cInsPts.Add dPt
dPt(0) = (-112.5): dPt(1) = 2400: dPt(2) = 19
cInsPts.Add dPt
dPt(0) = (-112.5): dPt(1) = 1200: dPt(2) = 19
cInsPts.Add dPt
dPt(0) = (-112.5): dPt(1) = 0: dPt(2) = 19
cInsPts.Add dPt
dPt(0) = (1200 - 112.5): dPt(1) = 2400: dPt(2) = 19
cInsPts.Add dPt
dPt(0) = (1200 - 112.5): dPt(1) = 1200: dPt(2) = 19
cInsPts.Add dPt
dPt(0) = (1200 - 112.5): dPt(1) = 0: dPt(2) = 19
cInsPts.Add dPt
dPt(0) = (2400 - 112.5): dPt(1) = 2400: dPt(2) = 19
cInsPts.Add dPt
dPt(0) = (2400 - 112.5): dPt(1) = 1200: dPt(2) = 19
cInsPts.Add dPt
dPt(0) = (2400 - 112.5): dPt(1) = 0: dPt(2) = 19
cInsPts.Add dPt
dPt(0) = (2400 + RHRBW - 112.5): dPt(1) = 2400: dPt(2) = 19
cInsPts.Add dPt
dPt(0) = (2400 + RHRBW - 112.5): dPt(1) = 0: dPt(2) = 19
cInsPts.Add dPt

For iCntr = 1 To cInsPts.Count
Set oBlkRef = ThisDrawing.ModelSpace.InsertBlock _
(cInsPts.Item(iCntr), SB103975PathName, 1, 1, 1, 0)
With oBlkRef
.Layer = "3D_StretcherStair"
.Update
End With
Next

If Not oBlkRef Is Nothing Then Set oBlkRef = Nothing
End Sub

wpeacock
2005-04-20, 11:03 PM
Thanks mtuersley it works a treat!

Wayne