Тема: Рисование в Акаде через Excel

Открыл Автокад через Эксель, далее требуется передать значения из него в автокад. Не получается даже линию нарисовать. Помогите кто может!

Re: Рисование в Акаде через Excel

> serg
Проверь почту
~'J'~

Re: Рисование в Акаде через Excel

У меня в почте ничего нет

Re: Рисование в Акаде через Excel

> serg
Отправил повторно пару примеров
Fatty
>'J'<

Re: Рисование в Акаде через Excel

Может быть лучше открыть Автокад и из него обращаться к Excel.

Re: Рисование в Акаде через Excel

> [Re:] pol
Смотря какая задача. Если главное расчеты, то лучше из Excel

Re: Рисование в Акаде через Excel

Все получилось. Огромное всем спасибо

Re: Рисование в Акаде через Excel

А мне можно примеры на мыло
alexcam@ua.fm

Re: Рисование в Акаде через Excel

> alex
Ёлы, я удалил уже
Спроси serg'a
~'J'~

Re: Рисование в Акаде через Excel

Люди, а можете мне скинуть пример скинуть на sws_korp@mail.ru. Буду благодарен!

Re: Рисование в Акаде через Excel

> Константин
Предлагаю создать новую тему, что нужно конкретно?
~'J'~

Re: Рисование в Акаде через Excel

а можна и мне примеры.

Re: Рисование в Акаде через Excel

> Vasily
Это сделать несложно, но какие действия конкретно,
ведь можно рисовать в Автокаде из Экселя,
а можно наоборот из Автокада считывать данные
в Экселе и по ним что-то делать
Две большие разницы, плюс я не могу придумывать
за кого-то что написать в качестве примера
~'J'~

Re: Рисование в Акаде через Excel

Вот накидал небольшой пример самый простой,
надеюсь все будет понятно
Блин, какой из меня учитель...
Инструкция
Для примера нужно создать книгу Эксель и заполнить
первые 2 столбца данными с 1 по 1201 строку
В первой строке наименования столбцов:
1- "X coordinate"
2- "Y coordinate"
остальные ячейки можно быстро заполнить вставив в них формулу:

=RAND()*1000
Затем на этом же листе заходишь в меню:
*View->Toolbars->Contol Toolbox* (только не Forms!)
На экране появится панель *Control Toolbox*
кликни верхнюю левую кнопку *"Design Mode"* (режим конструктора)
появится вспомогательная панелька *"Exit Design mode"* (выход из режима)
Затем выбери на панели *"Control Toolbox"* кнопку *"Command Button"*
обведи на листе прямоугольник для кнопки нужного размера
Затем сначала кликни на любой ячейке левой клавишей для сброса
а затем правой клавишей на вновь созданной кнопке
Появится всплывающее меню, в котором выбери *"Properties"* (Свойства)
В свойствах измени *"Caption"* (Заголовок) вместо CommandButton1 к примеру
напиши *"Показать форму"* (Show Form) или иное
Можно там же как обычно поменять шрифт, цвета и тд
Закрой эту менюшку
Опять теми же манипуляциями правой клавишей щелкни на новой кнопке
и выбери View Code (Показать код)
Откроется редактор и там будут следующие строки:

Private Sub CommandButton1_Click()
End Sub

Добавь туда следующий код:

Private Sub CommandButton1_Click()
Dim vbeObj As Object, check As Boolean
Dim varRefs As Object, itmRef As Object
check = False
Set vbeObj = ThisWorkbook.VBProject.VBE
Set varRefs = vbeObj.ActiveVBProject.References
For Each itmRef In varRefs
If itmRef.Description Like "AutoCAD 200*" Then
check = True
Exit For
End If
Next
If check = False Then
MsgBox "Must be set reference to" & vbCr & _
       Chr(34) & "AutoCAD 200x Type Library" & Chr(34) & " before" & vbCr & _
       "Go to VBEditor-Tools->References" & vbCr & _
       "Set reference to this library", vbExclamation
       Exit Sub
       Else
       frmTest.Show
       End If
End Sub

Закрываешь редактор и нажимаешь кнопку на панельке *"Exit Design mode"*
потом закрываешь панель  *"Control Toolbox"*
Опять идешь в редактор VB форму и на нее 2 кнопки
CommandButton1 и CommandButton2, для первой заголовок
можно прописать такой *"Go To Acad"* а для второй *"Exit"* или *"OK"*
дело вкуса
В модуле формы пишем примерно такой код:
(Это вариант вычерчивания отверстий на радиотехнической
панели, на моей машине 1200 отв. вычерчивается за 3-4 сек.)

Option Explicit
Dim ptColl As New Collection
Dim itm As Variant
Private Declare Function SetFocus Lib "user32" (ByVal hwnd As Long) As Long
Private Sub CommandButton1_Click()
     On Error GoTo Err_Control
     Err.Clear
     Dim rng As Range
     Set rng = Sheets("Sheet1").Range("A2:B1201")
     rng.Select
     Dim lngRow As Long, _
         lngCol As Long, _
         dblPt(1) As Double, _
         varPt(1) As Double
     For lngRow = 1 To rng.Rows.Count
          dblPt(0) = CDbl(Replace(rng.Cells(lngRow, 1), ".", ","))
          dblPt(1) = CDbl(Replace(rng.Cells(lngRow, 2), ".", ","))
          ptColl.Add dblPt
     Next lngRow
     ' ____________________________________
     Dim oldFileName As String
     Dim acApp As AcadApplication
     Dim aDoc As AcadDocument
     Dim i As Long
     Dim ExcCap As String
     ExcCap = Application.Caption
     oldFileName = Application _
                   .GetOpenFilename("AutoCAD Drawings (*.dwg), *.dwg", 1, , , False)
     If oldFileName = "" Then Exit Sub
     ' ____________________________________
     Set acApp = CreateObject("Autocad.Application")
     acApp.Visible = True
     acApp.WindowState = acMax
     Set aDoc = acApp.Documents.Open(oldFileName, False)
     Dim newFileName As String
     newFileName = ThisWorkbook.Path & "\Test_Copy.dwg"
     aDoc.Application.ZoomExtents
     aDoc.Activate
     SetFocus aDoc.hwnd
     ' ____________________________________
     Dim cpt(2) As Double
     With aDoc.ModelSpace
          For Each itm In ptColl
               cpt(0) = CDbl(itm(0))
               cpt(1) = CDbl(itm(1))
               cpt(2) = 0#
               .AddCircle cpt, 0.25
          Next
     End With
     ' ____________________________________
     aDoc.Regen acActiveViewport
     aDoc.SaveAs newFileName, ac2004_dwg
     acApp.Quit
     Set aDoc = Nothing
     Set acApp = Nothing
     AppActivate ExcCap, True
     SetFocus Application.hwnd
     ' ____________________________________
     newFileName = Left(newFileName, (Len(newFileName) - 4))
     ActiveSheet.Cells(ActiveCell.Row, 3).Value = newFileName
     ActiveSheet.Cells(ActiveCell.Row, 3).Select
     CommandButton2.SetFocus
     CommandButton2.ForeColor = vbRed
     ' ____________________________________
Err_Control:
     If Err Then
          MsgBox "Error " & Err.Number
          acApp.Quit
          Set aDoc = Nothing
          Set acApp = Nothing
     Else
          MsgBox "Drawing " & newFileName & " was saved" & vbCr & _
                 "in the current folder", vbInformation, "Action Info"
     End If
End Sub
Private Sub CommandButton2_Click()
     Unload Me
End Sub

Естественно, это не далеко эталон, поэтому
переделай на свой вкус
>'J'<