Перейти к содержанию
1 / 6
2 / 6
3 / 6
4 / 6
5 / 6
6 / 6

Основы программирования на Visual Basic for AutoCAD


Рекомендуемые сообщения

В первом уроке я покажу, как создать и выполнить программу на Visual Basic.

 

Открываем редактор Visual Basic (Инструменты/Макрос/Редактор Visual Basic).
post-4191-1209839838_thumb.jpg

 

Открывается такое окно.
post-4191-1209839973_thumb.jpg

 

Дважды щелкаем мышкой по ThisDrawing.

 

Набираем следующий текст:

 

Sub Test()
MsgBox "Hello World!"
End Sub

 

post-4191-1209840157_thumb.jpg

 

Запускаем программу, нажимая кнопку со стрелочкой.
post-4191-1209840218_thumb.jpg

 

Получаем вот такое окно.
post-4191-1209840341_thumb.jpg

 

У нас получилась первая программа, которая выводит сообщение.

 

Теперь сохраним ее, нажав кнопку "Сохранить" под именем Project.dvb
post-4191-1209840421_thumb.jpg

 

Чтобы потом открыть эту программу, нужно нажать Инструменты/Макрос/Загрузить проект... и выбрать Project.dvb, а затем открыть редактор Visual Basic.

Изменено пользователем Добрушанка
Ссылка на сообщение
Поделиться на другие сайты

Теперь построим окружность и отрезок.

 

Окружность с центром в точке (2, 1) и радиуса 1.
Отрезок с началом в точке (0, 0) и концом в точке (2, 1).

 

Открываем Visual Basic и пишем следующую программу.

 

Sub CL()

 

' Построение окружности
' Описываем используемые переменные для окружности
Dim circleObj As AcadCircle
Dim centerPoint(0 To 2) As Double
Dim radius As Double

' Координаты центра окружности
centerPoint(0) = 2: centerPoint(1) = 1: centerPoint(2) = 0
' Радиус
radius = 1
' Команда построения окружности по заданным параметрам
Set circleObj = ThisDrawing.ModelSpace.AddCircle(centerPoint, radius)


' Построение отрезка
' Описываем используемые переменные для отрезка
Dim lineObj As AcadLine
Dim startPoint(0 To 2) As Double
Dim endPoint(0 To 2) As Double

' Задаем координаты начала отрезка
startPoint(0) = 0: startPoint(1) = 0: startPoint(2) = 0
' Задаем координаты конца отрезка
endPoint(0) = 2: endPoint(1) = 1: endPoint(2) = 0
' Команда построения отрезка по заданным параметрам
Set lineObj = ThisDrawing.ModelSpace.AddLine(startPoint, endPoint)

ZoomAll
End Sub

post-4191-1209840799_thumb.jpg

 

Может быть Вам покажется, что здесь много набирать, тогда можете пропускать комментарии в программе (комментарии начинаются с апострафа), или просто скопировать текст в окно редактора Visual Basic.

 

После запуска программы мы получим следующую картинку.
post-4191-1209840861_thumb.jpg

 

Теперь объясняю, что мы написали.

 

Перед тем, как создать какой-либо объект в AutoCAD, нужно задать все его параметры.
Например, для окружности - это координаты центра и радиус, для отрезка - это координаты начала и конца отрезка.

 

В строчке
Dim centerPoint(0 To 2) As Double
мы описываем массив centerPoint, который будет содержать в себе координаты центра окружности.

 

В строчке
Dim radius As Double
мы описываем переменную radius, которая отвечает за радиус окружности.

 

Все названия переменных и массивов мы можем задавать произвольно.

 

В строчке
centerPoint(0) = 2: centerPoint(1) = 1: centerPoint(2) = 0
мы присваеваем координате X центра окружности значение 2, а координате Y значение 1.
Последнее значение в массиве centerPoint(2) = 0 отвечает за координату Z, но так как мы рисуем на плоскости, то везде будем ее присваивать нулю.

 

Следующая команда
Set circleObj = ThisDrawing.ModelSpace.AddCircle(centerPoint, radius)
рисует окружность, у которой координаты центра забираются из массива centerPoint, а радиус из переменной radius.

 

Если вы разобрались с этой программой, то остальное пойдет легко, так как любая основа состоит из отрезков и окружностей.

Изменено пользователем Добрушанка
Ссылка на сообщение
Поделиться на другие сайты

Добрушанка, Вы , конечно, гений! Но запаситесь терпением и не бейте нас чайников по чайникам. Что такое Dim? Когда слово пишется раздельно а когда слитно? Почему при слитном написании слова вторая его часть начинается с большой буквы? И где посмотреть правила синтаксиса? У меня программа на английском языке, поэтому справку мне читать бессмысленно. В программировании я - полный чайник :)))

Ссылка на сообщение
Поделиться на другие сайты

Вот это да. Как сказала одна форумчанка:"Я на швейный форум попала?".
Добрушанка, спасибо за такое начало. Теперь уж мне от автокада не отвертеться.

Нельзя объять необъятное, но до чего же хочется.

мой сайт.

Тренинги по 3д конструированию

Ссылка на сообщение
Поделиться на другие сайты


Теперь построим окружность и отрезок.
Окружность с центром в точке (2, 1) и радиуса 1.
Отрезок с началом в точке (0, 0) и концом в точке (2, 1).
.....................................................

 

всетаки для каждого языка есть своя область применения. в леко это записывается как

 

т1:=точка(0,0);
т2:=точка(2,1);
отрезок(т1,т2);
дуга(т2,1,0,360);

 

или в две строки

 

о1:=отрезок(точка(0,0),точка(2,1));
д1:=дуга(точка(2,1),1,0,360);

 

в графисе или подобных программах тоже будет не сложней. нужно ли себя мучить Visual Basic

Изменено пользователем Иванофф
Ссылка на сообщение
Поделиться на другие сайты

Добрушанка, огромное спасибо! Наконец-то осуществится моя мечта - научиться программировать элементарные построения.
Нам всем крупно повезло, что наш добровольный учитель знает и программирование, и специфику конструирования одежды, и уровень подготовки учеников.
Т. к. я сравнительно неплохо знаю автокад, то хотела бы именно его изучить и в плане программирования. Зачем мне изучать другие программы (при этом их покупать), чтобы освоить программирование.
У кого есть Леко и Графис - не имеет смысл изучать автокад. Хорошо, что есть выбор. Хороша та программа, которую хорошо освоил.

Изменено пользователем Natamoda

Мой блог

 

3Д лекала дистанционно

Ссылка на сообщение
Поделиться на другие сайты


У меня программа на английском языке, поэтому справку мне читать бессмысленно. В программировании я - полный чайник :)))
У меня программа на русском языке и справка тоже, но именно программирование в справке изложенно на английском.
Добрушанка, готовьтесь, мы будем задавать самые глупые вопросы. Хорошо, когда есть, кому их задать. Изменено пользователем Natamoda

Мой блог

 

3Д лекала дистанционно

Ссылка на сообщение
Поделиться на другие сайты


Что такое Dim? Когда слово пишется раздельно а когда слитно? Почему при слитном написании слова вторая его часть начинается с большой буквы? И где посмотреть правила синтаксиса?

Dim - это служебное слово в VB (Visual Basic), которое используется для описания переменных. Например,
Dim radius As Double означает, что мы объявляем переменную radius типа Double (где Double - это действительное число).
Большие и мальнькие буквы VB воспринимает одинаково, т.е. можете писать как большими, так и маленькими, а он сам потом исправляет.
Служебные слова обозначаются с большой буквы и они синего цвета (VB автоматически исправляет на большую букву).
Правила синтаксиса мы будем осваивать постепенно.
Visual Basic используется не только в AutoCAD, но и в MS Word, Excel, Access и др. Справка по VB везде только на английском языке. Изменено пользователем Добрушанка
Ссылка на сообщение
Поделиться на другие сайты

Вчера уже очень поздно было, поэтому я только попробовала, сегодня займусь плотнее. У меня еще один вопрос: обязательно ли перед руским пояснительным ( насколько я понимаю) текстом ставить знак апострофа. Кстати вчера ночью я его так и не нашла у себя на клавиатуре :))) Я конечно попробовала писать без него - программа страшно ругается непонятными словами. Победила тем, что просто поставила несколько пробелов перед текстом. Но не проверяла работает ли...

Ссылка на сообщение
Поделиться на другие сайты

Да, перед любым пояснительным текстом (комментариями) нужно ставить апостроф. Он находится на латинской раскладке клавиатуры, где русская буква "Э". Иначе программа не запустится, так как будет считать комментарии командами, которых она не знает.

Ссылка на сообщение
Поделиться на другие сайты

Построим прямоугольник A1A2A3A4, длины сторон которого равны a и b.

 

post-4191-1209903120_thumb.jpg

 


Sub Pramougolnik()

 

a = 60
b = 30

' Описываем все точки, из которых будет состоять наш прямоугольник
Dim A1(0 To 2) As Double
Dim A2(0 To 2) As Double
Dim A3(0 To 2) As Double
Dim A4(0 To 2) As Double

' Вычисляем координаты каждой точки

A1(0) = 0: A1(1) = 0: A1(2) = 0
A2(0) = 0: A2(1) = a: A2(2) = 0
A3(0) = b: A3(1) = a: A3(2) = 0
A4(0) = b: A4(1) = 0: A4(2) = 0

' Строим четыре отрезка, соединяя соответствующие точки
Dim lineObj As AcadLine

Set lineObj = ThisDrawing.ModelSpace.AddLine(A1, A2)
Set lineObj = ThisDrawing.ModelSpace.AddLine(A2, A3)
Set lineObj = ThisDrawing.ModelSpace.AddLine(A3, A4)
Set lineObj = ThisDrawing.ModelSpace.AddLine(A4, A1)

ZoomAll
End Sub

 

post-4191-1209903219_thumb.jpg

 

Запускаем программу, получаем прямоугольник со сторонами 60x30.
Вот, что получится, если запустить несколько раз программу, меняя значения a и b. (a = 80, b = 40; a = 100, b = 100)

 

post-4191-1209903250_thumb.jpg

 

Названия переменных (в нашем случае это точки A1, A2, A3 и A4) не могут начинаться с цифр, только с букв. В имени переменной нельзя использовать русские буквы, только латинские. Имя переменной A1 и a1 для VB одно и тоже.

Изменено пользователем Добрушанка
Ссылка на сообщение
Поделиться на другие сайты

Исходя из рисунка прямоугольника, примем точку A1 за начало координат, тогда координаты точек будут A1(0, 0), A2(0, a), A3(b, a) и A4(b, 0).
Если принять за начало координат другую точку, то соответственно поменяются и координаты всех точек.

Изменено пользователем Добрушанка
Ссылка на сообщение
Поделиться на другие сайты

Построим четырехугольник A1A2A3A4, у которого A1A2=a, A1A4=b, A4A3=c.
Вычислим координаты середин отрезков A2A3 и A1A4, получим точки H1 и H2, и соединим их отрезком.
post-4191-1209906383_thumb.jpg

 

Sub Trapecia()

 

a = 60
b = 30
c = 80

 

' Описываем все точки, из которых будет состоять наш четырехугольник
Dim A1(0 To 2) As Double
Dim A2(0 To 2) As Double
Dim A3(0 To 2) As Double
Dim A4(0 To 2) As Double
Dim H1(0 To 2) As Double
Dim H2(0 To 2) As Double

 

' Вычисляем координаты каждой точки

 

A1(0) = 0: A1(1) = 0: A1(2) = 0
A2(0) = 0: A2(1) = a: A2(2) = 0
A3(0) = b: A3(1) = c: A3(2) = 0
A4(0) = b: A4(1) = 0: A4(2) = 0

 

' Вычислим координаты точек H1 и H2
H1(0) = (A2(0) + A3(0)) / 2: H1(1) = (A2(1) + A3(1)) / 2: H1(2) = 0
H2(0) = (A1(0) + A4(0)) / 2: H2(1) = (A1(1) + A4(1)) / 2: H2(2) = 0

 

' Строим отрезки, соединяя соответствующие точки
Dim lineObj As AcadLine

 

Set lineObj = ThisDrawing.ModelSpace.AddLine(A1, A2)
Set lineObj = ThisDrawing.ModelSpace.AddLine(A2, A3)
Set lineObj = ThisDrawing.ModelSpace.AddLine(A3, A4)
Set lineObj = ThisDrawing.ModelSpace.AddLine(A4, A1)
Set lineObj = ThisDrawing.ModelSpace.AddLine(H1, H2)

 

ZoomAll
End Sub
post-4191-1209906503_thumb.jpg

 

Запускаем программу и получаем следующий рисунок.
post-4191-1209906534_thumb.jpg

 

Координаты (x,y) середины отрезка с концами в точках (x1,y1) и (x2,y2) находятся по формулам x=(x1+x2)/2 и y=(y1+y2)/2. Координаты точек H1 и H2 мы вычислили по этим формулам.

Ссылка на сообщение
Поделиться на другие сайты

Повторив описанные действия удается получить тот же результат. Но понять логику вычисления координат мне пока не удается. В общем пока это напоминает перерисовывание иероглифов. Высунув язык и пытаясь понять что же собственно я делаю, что-то получается, но без шпаргалки, не подсматривая каждую закорючку и знак, я это не повторю :))

Ссылка на сообщение
Поделиться на другие сайты

Добрушанка, чтобы рассчитать координаты, наверное всё равно надо сделать предварительные расчёты в Ексель и загнать туда все формулы? Или сразу писать формулу в VB?
Наверное я стереотипно мыслю.

Ссылка на сообщение
Поделиться на другие сайты

---------------------------
Microsoft Visual Basic
---------------------------
Compile error:

 

Statement invalid outside Type block
---------------------------
OK Help
---------------------------
У меня макрос споткнулся на этом месте.

 

dimlineObj As AcLineSpasingStyle

 

АвтоКад 2008 уже имеет в списке команды, когда набираешь As автоматически появляется список команд там AcLine нет, только AcLineSpasingStyle даже если я пишу вручную AcLine всё равно не работает.
Вот мой макрос:
Sub cl()
Dim circleobj As AcadCircle
Dim centerpoint(0 To 2) As Double
Dim radius As Double
centerpoint(0) = 2: centerpoint(1) = 1: centerpoint(2) = 0
radius = 1
Set circleobj = ThisDrawing.ModelSpace.AddCircle(centerpoint, radius)
dimlineObj As AcLineSpacingStyle
Dim startpoint(0 To 2) As Double
Dim endpoint(0 To 2) As Double
startpoint(0) = 0: startpoint(1) = 0: startpoint(2) = 0
endpoint(0) = 2: endpoint(1) = 1: endpoint(2) = 0:
Set lineobj = ThisDrawing.ModelSpace.AddLine(startpoint, endpoint)
ZoomAll
End Sub
Может чего пропустила, вроде проверила, всё на месте.

Ссылка на сообщение
Поделиться на другие сайты

Построим четырехугольник A1A2A3A4, у которого A1A2=a, A1A4=b, A4A3=c.
Посмотрите пожалуйста ворд документ Где-то ошибка у меня а найти не могу
Sub_P.doc

"Каждый может ошибиться", - сказал ежик, слезая с кактуса.

Ссылка на сообщение
Поделиться на другие сайты


Привет Девочки! Я из Эстонии. Очень хачу научится моделировать выкройки но....?, проблема в том, что я даже не очень понимаю с чего начать и чем это может закончится.

А под моделированием вы понимаете программирование? Так сейчас все находятся на этой стадии. Это только первые уроки и до программирования основы ещё очень далеко.

Мой блог

 

3Д лекала дистанционно

Ссылка на сообщение
Поделиться на другие сайты


Вычислим координаты точек H1 и H2
H1(0) = (A2(0) + A3(0)) / 2: H1(1) = (A2(1) + A3(1)) / 2: H1(2) = 0
H2(0) = (A1(0) + A4(0)) / 2: H2(1) = (A1(1) + A4(1)) / 2: H2(2) = 0

Паника прошла, разобралась, в третьем макросе координаты точек Н1 и H2 получились несколько иначе.
H1(0) = (A1(0) + A4(0)) / 2: H1(1) = (A1(1) + A4(1)) / 2: H1(2) = 0
H2(0) = (A2(0) + A3(0)) / 2: H2(1) = (A2(1) + A3(1)) / 2: H2(2) = 0
Интересно, надо продолжать разбираться
Спасибо Добрушанке!

post-188-1209965694_thumb.jpg

Изменено пользователем Natalya
Ссылка на сообщение
Поделиться на другие сайты


Добрушанка, чтобы рассчитать координаты, наверное всё равно надо сделать предварительные расчёты в Ексель и загнать туда все формулы? Или сразу писать формулу в VB?
Наверное я стереотипно мыслю.

Программа на VB должна по возможности работать автономно, без использования других программ. Если есть возможность вычислить все в программе VB, то нужно этим пользоваться, не привлекая другие программы.
Обычно в построении все начинается с какой-то одной точки, которую можно принять за начало координат. А далее относительно нее все остальные точки и строяться. Это тоже самое как мы строим на бумаге, откладываем вниз, влево, вправо или вверх на заданное расстояние от этой точки.
Ссылка на сообщение
Поделиться на другие сайты


АвтоКад 2008 уже имеет в списке команды, когда набираешь As автоматически появляется список команд там AcLine нет, только AcLineSpasingStyle даже если я пишу вручную AcLine всё равно не работает.

 

Версия Visual Basic не меняется с времен АвтоКад 2000. Список команд появляется везде в VB. Линия задается не комадой AcLine, а командой AcadLine.

Ссылка на сообщение
Поделиться на другие сайты


Паника прошла, разобралась, в третьем макросе координаты точек Н1 и H2 получились несколько иначе.
H1(0) = (A1(0) + A4(0)) / 2: H1(1) = (A1(1) + A4(1)) / 2: H1(2) = 0
H2(0) = (A2(0) + A3(0)) / 2: H2(1) = (A2(1) + A3(1)) / 2: H2(2) = 0
Интересно, надо продолжать разбираться
Спасибо Добрушанке!

 

Вы местами поменяли точки H1 и H2. В этом построении это не важно, а когда каждая точка будет иметь значение, нужно быть более внимательными.

Ссылка на сообщение
Поделиться на другие сайты

Цветы, посмотрела Вашу программу. Во-первых, у Вас ошибка, что Вы дважды задаете координаты точек H1 и H2. А во-вторых, нарисуйте рисунок того, что Вы хотите получить и мы вместе будем разбираться, как это реализовать программно.

Ссылка на сообщение
Поделиться на другие сайты

post-4209-1209975023_thumb.jpg


Цветы, посмотрела Вашу программу. Во-первых, у Вас ошибка, что Вы дважды задаете координаты точек H1 и H2. А во-вторых, нарисуйте рисунок того, что Вы хотите получить и мы вместе будем разбираться, как это реализовать программно.

 

 

 

И расскажите подробнее о сохранении VB у меня все чертежи сохраняются обычными файлами в CAD и при открытии не получается загрузить, приходится открывать папку и находить обычный файл-рисунок dwg/ Если нужно удалить то достаточно просто выделить и нажать делет А в построении я просто пробую зафиксировать урок и чтобы более его понять пытаюсь ввести свои изменения , и естественно исправить ошибки В этом чертеже хотела построить отрезок H1H2=65 - А1А2=64 А3А4 =63 с разными сторонами и ширина А2Н1=26 А3Н1=28 Напоминающий построение юбки

 

Чертеж к документу ворд

Изменено пользователем цветы

"Каждый может ошибиться", - сказал ежик, слезая с кактуса.

Ссылка на сообщение
Поделиться на другие сайты

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×
×
  • Создать...