Consulting

Results 1 to 2 of 2

Thread: Re: insert actocad drawings according to cordinates

  1. #1
    VBAX Contributor
    Joined
    May 2008
    Location
    bangalore
    Posts
    199
    Location

    Re: insert actocad drawings according to cordinates

    hi

    by mistake i closed the thread.

    there is error message still in this line

    iDWG.ModelSpace.InsertBlock pts, iBlock, 1#, 1#, 1#, 0#

    i have create 3 layer in auto cad and named part1,part2,part3,then in this layer i have create 3 drawings, from vb i am calling the excel..i have attached the excel below

    please guide me regarding this..


    [VBA]
    Dim AcadApp As AcadApplication, WrkBk As Workbook, WrkSh As Worksheet
    Dim ExcelApp As Excel.Application, Dwg As AcadDocument, mI As Long
    Dim Blk As String, X As Double, Y As Double
    GetAcad AcadApp
    OpenDWG AcadApp, "C:\Testing\Drawing1.dwg", Dwg
    GetExcel ExcelApp
    OpenXls ExcelApp, "C:\Testing\block.xls", WrkBk
    ActivateSh1 WrkBk, WrkSh
    mI = 5
    While CStr(WrkSh.Cells(mI, 2).Value) <> "-"
    Blk = CStr(WrkSh.Cells(mI, 2).Value)
    X = CDbl(WrkSh.Cells(mI, 3).Value)
    Y = CDbl(WrkSh.Cells(mI, 4).Value)
    InsBlk Dwg, Blk, X, Y
    mI = mI + 1
    AcadApp.ZoomExtents
    Wend
    AcadApp.ZoomAll
    End Sub
    Sub InsBlk(iDWG As AcadDocument, iBlock As String, iX As Double, iy As Double)
    Dim pts(0 To 2) As Double
    pts(0) = iX: pts(1) = iy: pts(2) = 0
    'iDWG.ModelSpace.InsertBlock pts, "C:\Testing\" & iBlock & ".dwg", 1#, 1#, 1#, 0#
    iDWG.ModelSpace.InsertBlock pts, iBlock, 1#, 1#, 1#, 0#
    End Sub
    Sub OpenDWG(iAcadApp As AcadApplication, iDwgNm As String, ioDWG As AcadDocument)
    Dim mI As Long, IsThere As Boolean
    For mI = 0 To iAcadApp.Documents.Count - 1
    If iAcadApp.Documents(mI).Name = Right(iDwgNm, Len(iDwgNm) - InStrRev(iDwgNm, "\")) Then
    IsThere = True
    Set ioDWG = iAcadApp.Documents(mI)
    End If
    Next
    If Not IsThere Then
    Set ioDWG = iAcadApp.Documents.Open(iDwgNm)
    ioDWG.Activate
    End If
    End Sub
    Sub ActivateSh1(ioWrkBk As Workbook, iActSht As Worksheet)
    ioWrkBk.Worksheets("Sheet1").Activate
    Set iActSht = ioWrkBk.Worksheets("Sheet1")
    End Sub
    Sub OpenXls(iXlApp As Excel.Application, iWrkBkNm As String, ioWrkBk As Workbook)
    Dim mI As Long, IsThere As Boolean
    For mI = 1 To iXlApp.Workbooks.Count
    If iXlApp.Workbooks(mI).Name = Right(iWrkBkNm, InStrRev(iWrkBkNm, "\")) Then
    IsThere = True
    Set ioWrkBk = iXlApp.Workbooks(mI)
    End If
    Next
    If Not IsThere Then
    Set ioWrkBk = iXlApp.Workbooks.Open(iWrkBkNm)
    End If
    End Sub
    Sub GetAcad(iAcadApp As AcadApplication)
    On Error Resume Next
    Set iAcadApp = GetObject(, "AutoCAD.Application")
    If Err.Number > 0 Then
    Err.Clear
    Set iAcadApp = CreateObject("AutoCAD.Application")
    End If
    iAcadApp.Visible = True
    On Error Goto 0
    End Sub
    Sub GetExcel(iExcelApp As Excel.Application)
    On Error Resume Next
    Set iExcelApp = GetObject(, "Excel.Application")
    If Err.Number > 0 Then
    Err.Clear
    Set iExcelApp = CreateObject("Excel.Application")
    End If
    iExcelApp.Visible = True
    On Error Goto 0

    [/VBA]

  2. #2
    Moderator VBAX Master Tommy's Avatar
    Joined
    May 2004
    Location
    Houston, TX
    Posts
    1,184
    Location
    Hi Sam,

    I reran this just to test it. With the code you posted. I placed all of the files in a directory called C:\testing (block.xls,drawing1.dwg,part1.dwg,part2.dwg and part3.dwg). Everything worked when I checked the references for excel and acad.

    btw you can continue to post in the other thread. just because you marked it solved doesn't mean you can't post.

    there is a zip file that I uploaded on the other thread for you to test with. remember that I have everything in the c:\testing folder

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •