IPB

Добро пожаловать, гость ( Вход | Регистрация )

14 Страниц V123>»
 
Ответить Новая тема
> Основы программирования на Visual Basic for AutoCAD, Уроки для начинающих
Добрушанка
сообщение May 3 2008, 21:50
Сообщение #1


Участник
Из: Беларусь, Гомель
Спасибо сказали: 715 раз(а)



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

Открываем редактор Visual Basic (Инструменты/Макрос/Редактор Visual Basic).
Прикрепленное изображение

Открывается такое окно.
Прикрепленное изображение

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

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

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


Прикрепленное изображение

Запускаем программу, нажимая кнопку со стрелочкой.
Прикрепленное изображение

Получаем вот такое окно.
Прикрепленное изображение

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

Теперь сохраним ее, нажав кнопку "Сохранить" под именем Project.dvb
Прикрепленное изображение

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

Сообщение отредактировал Добрушанка - May 4 2008, 15:22


Спасибо сказали:
Добрушанка
сообщение May 3 2008, 22:00
Сообщение #2


Участник
Из: Беларусь, Гомель
Спасибо сказали: 715 раз(а)



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

Окружность с центром в точке (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

Прикрепленное изображение

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

После запуска программы мы получим следующую картинку.
Прикрепленное изображение

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

Перед тем, как создать какой-либо объект в 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.

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

Сообщение отредактировал Добрушанка - May 4 2008, 15:28


Спасибо сказали:
Pavelina
сообщение May 4 2008, 00:39
Сообщение #3


Что же из этого следует? Следует шить!
Из: Tallinn+Fuengirola
Спасибо сказали: 21894 раз(а)

Открыть альбомы


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


--------------------
Кадрен
сообщение May 4 2008, 01:49
Сообщение #4


модератор
Из: Москва
Спасибо сказали: 32350 раз(а)

Открыть альбомы


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


--------------------
Нельзя объять необъятное, но до чего же хочется.
мой сайт.
Тренинги по 3д конструированию
Иванофф
сообщение May 4 2008, 01:50
Сообщение #5


Участник
Из: Москва
Спасибо сказали: 2043 раз(а)



QUOTE(Добрушанка @ May 3 2008, 23:00) *

Теперь построим окружность и отрезок.
Окружность с центром в точке (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

Сообщение отредактировал Иванофф - May 4 2008, 01:51


--------------------
Natamoda
сообщение May 4 2008, 07:46
Сообщение #6


Участник
Из: Киев
Спасибо сказали: 65612 раз(а)

Открыть альбомы


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

Сообщение отредактировал Natamoda - May 4 2008, 07:48


--------------------
Мой блог

3Д лекала дистанционно
Natamoda
сообщение May 4 2008, 07:53
Сообщение #7


Участник
Из: Киев
Спасибо сказали: 65612 раз(а)

Открыть альбомы


QUOTE(Pavelina @ May 4 2008, 00:39) *

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

Сообщение отредактировал Natamoda - May 4 2008, 08:00


--------------------
Мой блог

3Д лекала дистанционно
Добрушанка
сообщение May 4 2008, 10:28
Сообщение #8


Участник
Из: Беларусь, Гомель
Спасибо сказали: 715 раз(а)



QUOTE(Pavelina @ May 4 2008, 00:39) *

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

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

Сообщение отредактировал Добрушанка - May 4 2008, 10:33


Спасибо сказали:
Pavelina
сообщение May 4 2008, 10:50
Сообщение #9


Что же из этого следует? Следует шить!
Из: Tallinn+Fuengirola
Спасибо сказали: 21894 раз(а)

Открыть альбомы


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


--------------------
Добрушанка
сообщение May 4 2008, 10:56
Сообщение #10


Участник
Из: Беларусь, Гомель
Спасибо сказали: 715 раз(а)



Да, перед любым пояснительным текстом (комментариями) нужно ставить апостроф. Он находится на латинской раскладке клавиатуры, где русская буква "Э". Иначе программа не запустится, так как будет считать комментарии командами, которых она не знает.
Добрушанка
сообщение May 4 2008, 15:15
Сообщение #11


Участник
Из: Беларусь, Гомель
Спасибо сказали: 715 раз(а)



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

Прикрепленное изображение


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


Прикрепленное изображение

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

Прикрепленное изображение

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

Сообщение отредактировал Добрушанка - May 4 2008, 15:19


Спасибо сказали:
Pavelina
сообщение May 4 2008, 15:30
Сообщение #12


Что же из этого следует? Следует шить!
Из: Tallinn+Fuengirola
Спасибо сказали: 21894 раз(а)

Открыть альбомы


А как мы вычисляем координаты? Строим и подсматриваем на чертеже?


--------------------
Добрушанка
сообщение May 4 2008, 16:03
Сообщение #13


Участник
Из: Беларусь, Гомель
Спасибо сказали: 715 раз(а)



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

Сообщение отредактировал Добрушанка - May 4 2008, 16:14


Спасибо сказали:
Добрушанка
сообщение May 4 2008, 16:11
Сообщение #14


Участник
Из: Беларусь, Гомель
Спасибо сказали: 715 раз(а)



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

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

Прикрепленное изображение

Запускаем программу и получаем следующий рисунок.
Прикрепленное изображение

Координаты (x,y) середины отрезка с концами в точках (x1,y1) и (x2,y2) находятся по формулам x=(x1+x2)/2 и y=(y1+y2)/2. Координаты точек H1 и H2 мы вычислили по этим формулам.
Pavelina
сообщение May 4 2008, 22:38
Сообщение #15


Что же из этого следует? Следует шить!
Из: Tallinn+Fuengirola
Спасибо сказали: 21894 раз(а)

Открыть альбомы


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


--------------------
Natalya
сообщение May 5 2008, 04:38
Сообщение #16


Участник
Из: Melbournск
Спасибо сказали: 4861 раз(а)

Открыть альбомы


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


--------------------
Natalya
сообщение May 5 2008, 05:24
Сообщение #17


Участник
Из: Melbournск
Спасибо сказали: 4861 раз(а)

Открыть альбомы


---------------------------
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
Может чего пропустила, вроде проверила, всё на месте.


--------------------
Цветы
сообщение May 5 2008, 08:07
Сообщение #18


Участник
Из: Алмата,Казахстан
Спасибо сказали: 213 раз(а)

Открыть альбомы


QUOTE(Добрушанка @ May 4 2008, 17:11) *
Построим четырехугольник A1A2A3A4, у которого A1A2=a, A1A4=b, A4A3=c.
Посмотрите пожалуйста ворд документ Где-то ошибка у меня а найти не могу
Прикрепленный файл  Sub_P.doc ( 58 кб ) Кол-во скачиваний: 764


--------------------
"Каждый может ошибиться", - сказал ежик, слезая с кактуса.
Natamoda
сообщение May 5 2008, 08:08
Сообщение #19


Участник
Из: Киев
Спасибо сказали: 65612 раз(а)

Открыть альбомы


QUOTE(Люсьяна @ May 5 2008, 00:06) *

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

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


--------------------
Мой блог

3Д лекала дистанционно
Natalya
сообщение May 5 2008, 08:23
Сообщение #20


Участник
Из: Melbournск
Спасибо сказали: 4861 раз(а)

Открыть альбомы


QUOTE(Добрушанка @ May 4 2008, 23:11) *

Вычислим координаты точек 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

Интересно, надо продолжать разбираться
Спасибо Добрушанке!

Сообщение отредактировал Natalya - May 5 2008, 08:35


Эскизы прикрепленных изображений
Прикрепленное изображение

--------------------

14 Страниц V123>»
Ответить Новая тема
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



-

Мобильная версия

|Упрощённая версия Сейчас: 28th July 2017 - 19:46