Меню сайта  
 
 

Главная

Введение

Работа с программой

Программирование

Приложения

Статьи

Контакты

 
 
 
   Форум  
 
 
 
Главная
Технические вопросы
Все о AutoCAD
Все о NanoCAD
Другие САПР
Разное
 
 
 
   Интернет магазин  
 
 
 

Autodesk AutoCAD

Интерактивный курс. AutoCad 2008

Интерактивный курс:  AutoCad 2007

Азбука AutoCAD. Первый шаг

Азбука. AutoCAD 2007 для начинающих

CAD View Plugin for Total Commander

Весь каталог

 
 
   Новости  
 
 

Добавлены новые статьи в раздел "Работа с программой", которые помогут вам овладеть программой AutoCad

"Статьи" раздел пополнился новыми интересными статьями.

Мы представляем Вам новый проект нашего сайта "Программирование в AutoCad". В нем Вы найдете все тайны программирования в программе.

Для новичков был открыт раздел "Введение". Он поможет Вам стать профессионалом своего дела

 
 
 
   Картинная галерея  
 
 
 

Примитивы

Двухмерные построения

Трехмерные построения

 
 
   Партнеры проекта  
 
   
 
   ActiveX Automation для AutoCAD  
 

В AutoCAD R14 ActiveX Automation обеспечивает альтернативу Autolisp, хотя и не предназначена для его замены. Наиболее популярный контроллер автоматизации - Visual Basic. Интерфейс автоматизации для AutoCAD похож на интерфейс автоматизации для Excel и Access. В частности это потому, что в AutoCAD в качестве контроллера автоматизации включен Microsoft Visual Basic for Applications (VBA), который включен и в приложения Microsoft Office 97.

Термины и определения:

Контроллер автоматизации - приложение, которое управляет служебным приложением. Так AutoCAD является служебным приложением по отношению к VBA или Visual Basic, которые действую в качестве контроллера автоматизации.

Объект AutoCAD - элемент AutoCAD (отрезок, UCS или слой - к примеру). Каждый объект AutoCAD имеет набор методов и свойств. (функций, которые устанавливают или возвращают информацию о объекте), и допускается использовать только стандартный набор функций для программирования отдельного объекта.

Свойство - представляет атрибут объекта и может быть "только для чтения" или для "чтения - записи". Программа может назначать новое свойство для свойств "чтения - записи", и лишь обращаться к значению свойств "только для чтения".

Методы - это функции (типа Move, Copy, Regen и Save), которые выполняют действия по отношению к объекту. Метод может возвращать значение, а также принимать любое число аргументов, каждый из которых может быть не обязательным. Аргументы передаются с помощью значения или ссылки.

Объектная модель AutoCAD представляет собой доступные объекты AutoCAD и их взаимосвязи.

Использование объектного броузера Visual Basic 5.0 или VBA для просмотра Active-X объектов Autocad.

Объекты автоматизации можно просматривать через объектный броузер, котрый поставляется вместе с Visual Basic 5.0 или VBA (в дальнейшем пойдет речь только о Visual Basic 5.0 посколько не смотря на наличии в документации к AutoCAD упоминаний о присутствии в дистрибутиве программы VBA не на одном из умевшихся у меня дистрибутивов его обнаружить не удалось :-(). Объектный броузер позволяет видеть полный спсок объектов, доступных в приложении вместе со свойствами и методами, приминимыми к данному объекту.

Пример написание подпрограммы для AutoCAD с помощью Visual Basic 5.0 или VBA.

Загружаем Visual Basic 5.0 с заданной по умолчанию формой (standard exe). Для начала разместим на поле формы ( 2 - на рисунке 5) кнопки из панели инструментов ( 1 - на рисунке 5). Делается это сначала щелчком мыши на элементе панели инструментов, а затем щелчком на форме, и не отпуская мыши растягиванием элемента из панели инструментов на поле формы до приемлимой величины. Разместите таким образом 2 кнопки (CommandButton) и один переключатель (CheckBox) на поле формы как показано на рисунке 5. Затем на панели свойств элементов ( 3 - на рисунке 5) выполните следующие изменения:

Поле формы (Form1):
Caption: Exercise 1
Scalemode: 2-Point

Поле первой кнопки (CommandButton1):
Caption: Start AutoCAD
Name: cmdStart

Поле второй кнопки (CommandButton2):
Enabled: False
Caption: Quit
Name: cmdQuit

Поле Переключателя (CheckBox1):
Caption: Visible
Name: cmdVisible

Далее введем в нашу форму немного программного кода: двойным нажатием мыши на кнопку Start AutoCAD перейдем в режим ввода кода и занесем следующие строки между строками Private Sub cmdStart_Click() и End Sub:

On Error Resume Next
Set acad = GetObject(, "AutoCAD.Application")
            If Err Then
               Err.Clear
               Set acad = CreateObject("AutoCAD.Application")
                If Err Then
                   MsgBox "Unable to connect to AutoCAD"
                   Exit Sub
                End If
            End If
cmdQuit.Enabled = True

Функция GetObject устанавливает связь между приложением и AutoCAD, если AutoCAD уже запущен. Эта функция возвращает объект AutoCAD.Application и сохраняет его в переменной acad. CreateObject начинает новый сеанс AutoCAD.

В контекстном меню, появившемся после нажатия правой кнопкой мыши на окне кода выберите Hide, чтобы скрыть код и двойным нажатием на кнопке Quit снова перейдите в режим ввода кода, что бы ввести код и для этой кнопки (в данном случае команду завершения сеанса AutoCAD):

acad.Quit
End

То же для СheckBox1:

acad.Visible = True

По умалчанию в этой программе AutoCAD запускается невидимо для пользователя (не отображается на панели задач). Это свойство можно использовать к примеру для его вызова, выполнения какой-то последовательности операций без вмешательства пользователя а затем выхода. Без необходимости регенирировать графический экран эти операции будут выполнены быстрее. Таким образом, когда мы с помощью данной подпрограммы запустим AutoCAD, то он буде не виден на экране. Когда же мы установим галочку на переключателе Visible, он отобразится на экране.

В верхней части окна кода выберите в раскрывающемся списке поле "(General)" и затем в месте кода формы, куда переместится курсор введите строку:

Public acad As Object

Данная иструкция объявляет переменную acad общедоступной, чтобы к ней можно было обращаться из любой подпрограммы.

Теперь подпрограмма готова к работе. Запустите ее из меню Run пунктом Start With Full Compile, предварительно не забыв подключить VBA AutoCAD как расказано в разделе Использование объектного броузера Visual Basic 5.0 или VBA для просмотра Active-X объектов Autocad..

Объект Application, который успользовался в нашем примере, является объектом верхнего уровня. Все другие объекты могут быть достигнуты через методы и свойства объекта Application. Лучьшим средством получения справки о иерархии объекта Application является стандартный Help AutoCAD. В меню Help Выберите пункт Contents, а там раздел ActiveX Automation, подраздел ActiveX Automation Reference. Далее выбираем Object Model. Выбор любого элемента схемы влечет за собой появление справки с перечислением доступных методов и свойств для данного элемента.

Использование средства ActiveX для обеспечения связи AutoCAD с другими приложениями.

Можно использовать VBA, поставляемый с Office 97 или другими программами для создания перекрестно ссылающихся программ, используя объекты из различных приложений. Рассмотрим пример такого использования создав приложение, связывающее AutoCAD, Microsift Excel и Microsoft Word. Функция приложения будет состоять в подсчете числа блоков и случаев их использования в чертеже. На основании полученных данных строится график, на основании которого генерируется документ в Microsoft Word.

Сначала откроем для редактирвание макрос в Microsoft Excel, выбрав пункт "Редактор Microsoft Visual Basic" из подменю "Макрос" меню "Сервис". В поле кода введем следующие:

Public acad As Object
Public excelSheet As Object
Sub CountBlocks()
Dim objMspace As Object
Dim objElement As Object
Dim objExcel As Object
Dim objDoc As Object
Dim intI As Integer
Dim strBlockName(1 To 1000) As String
Dim intNumBlockName(1 To 1000) As Integer
Dim intTotalNumOfBlocks As Integer
Set objExcel = GetObject(, "Excel.Application")
Set objExcelSheet = objExcel.ActiveWorkbook.Sheets("Лист1")
Worksheets("Лист1").Activate
On Error Resume Next
Set objAcad = GetObject(, "AutoCAD.Application")
If Err <> 0 Then
Set objAcad = CreateObject("AutoCAD.Application")
 
Exit Sub
End If
obj.acad.Visible = True
    Set obj.Doc = objAcad.ActiveDocument
                If Right(ActiveWorkbook.Path, 1) = "\" Then
        DwgName = ActiveWorkbook.Path & "ew.dwg"
    Else
        DwgName = ActiveWorkbook.Path & "\ew.dwg"
    End If
    Set objDoc = objAcad.ActiveDocument
    If objDoc.FullName <> DwgName Then
        objDoc.Open DwgName
    End If
    Set objMspace = objDoc.ModelSpace
    objExelSheet.Range(Cells(1, 1), Cells(100, 12)).Clear
    intI = 1
    For Each objElement In objDoc.Blocks
        With objElement
            If (.Name <> "*MODEL_SPACE" And .Name <> "PAPER_SPACE") Then
objExcelSheet.Cells(intI, 1) = objElement.Name
strBlockName(intI) = objElement.Name
    intI = intI + 1
End If
End With
Next
    intI = intI - 1
    intTotalNumOfBlocks = intI
    For intI = 1 To intTotalNumOfBlocks
        intNumBlockName(intI) = 0
    Next
    objExcelSheet.Range(Cells(1, 1), Cells(intI, 1)).Font.Bold = True
For Each objElement In objMspace
With objElement
    Found = False
    If StrComp(objElement.entityName, "AcDbBlockReference", 1) = 0 Then
        For intI = 1 To intTotalNumOfBlocks
            If Not Found Then
                If StrComp(.Name, strBlockName(intI), 1) = 0 Then
                    intNumBlockName(intI) = intNumBlockName(intI) + 1
                    Found = True
                End If
            End If
        Next
    End If
End With
Set objElement = Nothing
 
Next objElement
    For intI = 1 To intTotalNumOfBlocks
        objExcelSheet.Cells(intI, 2) = intNumBlockName(intI)
    Next
    CreateChart (intTotalNumOfBlocks)
    Auto_Wait
    MakeMemos
 
End Sub

В подпрограмме CountBlocks сначала происходит соединение с текущим образцом приложения Excel с помощью функции GetObject. Далее активизируется Лист1 в Excel, этот лист делается текущим и в него записуется перечень блоков. Затем циклически просматривается база данных AutoCAD с отождествлением каждого блока и сохранением информации в переменной strBlockName, а также с его записью на странице Excel. Далее снова производится циклический просмотр базы данных и добавляется перечень для каждого блока в переменной intNumBlockName.

Далее добавим подпрограмму создания диаграммы Microsoft Excel на основании подсчитанного числа блоков в чертеже:

Private Sub CreateChart(NumberOfBlocks As Integer)
Dim ChartRange As Object
Static NewChart As Object
Set ChartRange = ActiveSheet.Range(Cells(1, 1), _
    Cells(NumberOfBlocks, 2))
ChartRange.Select
Set NewChart = Charts.Add
NewChart.Activate
With NewChart
        .Type = xl3DColumn
        '.SubType = xlNormal
        .CopyPicture xlScreen, xlBitmap
End With
End Sub

В функции CreateChart происходит установка ввода диапазона значений для диаграммы, добавление диаграммы к набору Excel Charts, активизация диаграммы и копирование ее в буфер обмена.

Далее напишем подпрограмму получения системной даты для ввода ее в документ Word. Эта подпрограмма также добавляет интервал ожидания в четыре секунды, чтобы дать время Microsoft Excel для завершения создания объекта в виде диаграммы прежде, чем Excel запустит Word.

Private Sub Auto_Wait()
 
    Dim NewHour As Double
    Dim NewMinute As Double
    Dim NewSecond As Double
    Dim WaitTime As Date
    NewHour = Hour(Now())
    NewMinute = Minute(Now())
    NewSecond = Second(Now()) + 4
    WaitTime = TimeSerial(NewHour, NewMinute, NewSecond)
    Application.Wait WaitTime
    
End Sub

Далее напишем функцию создания документа в Microsoft Word.

Private Sub MakeMemos()
    Dim Word As Object
    Set Word = CreateObject("Word.Basic")
    With Word
        .FileNewDefault
        .Insert "M E M O"
        .InsertPara
        .InsertPara
        .Insert "Дата:" & Chr(9) & Format(Date, "mmm d, yyyy")
        .InsertPara
        .Insert "Кому: <Укажите здесь имя>"
        .InsertPara
        .Insert "От: <Ваше имя>"
        .InsertPara
        .Insert "Заголовок"
        Word.EditPaste
        .InsertPara
        .InsertPara
        .Insert "Вы можете вставить здесь любой текст, какой желаете"
        .InsertPara
        .Insert "Вводите требуемый текст на каждую строку"
        .StartOfDocument
        .EndOfLine 1
        .Bold
        .CenterPara
        .FileSaveAs "demo.doc"
        .DocClose
    End With
    Set Word = Nothing
Application.StatusBar = ""
MsgBox "Заметка создана и сохранена", vbInformation
Set excelSheet = Nothing
        
End Sub

Подпрограмма MakeMemos запускает Word, открывает заданный по умолчанию документ, добавляет некоторую информацию о форматировании, вставляет диаграмму из Excel и сохраняет документ.

Запуск примера осуществляется выбором пункта "Макросы" из подменю "Макрос" меню "Сервис". В появившемся меню из списка макросов выбираем Count_Blocks и нажимаем "Выполнить".

   Интернет магазин  

7100 руб.

Archmodels Vol. 51

Компания Дигната Медиа представляет Archmodels Vol. 51 Коллекция кухонных гарнитуров. Archmodels Vol. 51 даст вам 77 профессиональных, высоко детализированных объектов для архитектурной визуализации. 

Список версий:

Archmodels Vol. 51


144 руб.

Азбука. AutoCAD 2007 для начинающих (коробочная версия)

Этот диск посвящен новой версии знаменитого продукта компании Autodesk — AutoCAD 2007. Основной целью Визуального обучающего курса является доступно показать новые функциональные возможности AutoCAD 2007 и принцип работы в этой программе. 

Список версий:

Азбука. AutoCAD 2007 для начинающих (коробочная версия)


 

 

 

         
 

Все права защищены.

Копирование запрещено.

 

Rambler's Top100
    Дизайн: Студия Onta.ru