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

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


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

На языке VB условие задается так

  If ОО1 > 2 Then   Shp = ob / 4 - OO1 / 2  Else ' иначе   Shp = ob / 4 - OO1 End If

 

Если условий больше, то так

 If ОО1 > 2 Then   shp = ob / 4 - OO1 / 2   ElseIf ОО1 > 4 Then	shp = ob / 4 - OO1 / 4 Else   shp = ob / 4 - OO1End If

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

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

 

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

 

- мы получили боковую вытачку, и соединяем полученные точки с точками TP и TZ, полученные отрезки образуют линию талии.
- находим середину отрезка TB2-TZ (линия талии по спинке) и получаем точку TZC - середина задней вытачкии, она же будет центром окружности радиусом=раствору задней вытачки.

 

затем от т. TZC опускаемся вниз на BY получая точку BZC, которая будет центром второй окружности

 

-получаем точки пересечения этих двух окружностей на спинке, НО...
точки пересечения лежат ниже линии полученной ранее линии талии... (особенно это видно, если скажем значение длины сзади на фигуре (TZ-NZ) больше чем длина сбоку TB-N)

 

вопрос:)))))
можно ли получить точки пересечения окружности (РЗ) с прямой(отрезком) - линией талии? точнее сделать это в программе...
точгда точки пересечения лежали бы как раз на ней:))

 

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

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

Вот пример использования процедуры Peres_Pr_Okr для нахождения точек пересечения окружности с прямой. Сама подпрограмма (Peres_Pr_Okr) находится в прилагаемом проекте.

 Sub Pr()	a = 10	d = 20		Dim A1(0 To 2) As Double	Dim A2(0 To 2) As Double	Dim A3(0 To 2) As Double	Dim BB(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) = d: A3(1) = a: A3(2) = 0	Set lineObj = ThisDrawing.ModelSpace.AddLine(A1, A3)		Call o_urav(A1(0), A1(1), A3(0), A3(1), AP, BP, CP) ' Вычисляем уравнение прямой по двум точкам А1 и А3	R = 9 ' Задаем радиус окружности	'Находим первую точку пересечения прямой А1-А3 с окружностью радиуса R с центром в точке А2 (получим точку ВВ)	Call Peres_Pr_Okr(A2(0), A2(1), R, AP, BP, CP, x, y, 0)	BB(0) = x: BB(1) = y: BB(2) = 0	Set lineObj = ThisDrawing.ModelSpace.AddLine(A2, BB)		'Находим вторую точку пересечения прямой А1-А3 с окружностью радиуса R с центром в точке А2 (получим точку ВВ)	Call Peres_Pr_Okr(A2(0), A2(1), R, AP, BP, CP, x, y, 1)	BB(0) = x: BB(1) = y: BB(2) = 0	Set lineObj = ThisDrawing.ModelSpace.AddLine(A2, BB)End Sub


Здесь вариант программы с необходимым набором подпрограмм. Peres.zip Если что-то непонятно, спрашивайте.

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

спасибо вам за ответы @}->-- :)))
программирование оказалось очень увлекательным занятием:)))))
хотела еще спросить, если вам конечно еще не надоело отвечать на глупые вопросы...
а вопрос такой:
ваша подпрограмма для нахождения точек пересечения двух окружностей дает возможность построения даже при Бх=0 и Бу=0
какое условие обеспечивает это?
дело в том что я малость ее переделала, и у меня при нулевых значениях чертеж теперь не получается:(

 

решила что это условие:
If (x0 = x1 And y0 = y1) Or (R0 = 0) Or (R1 = 0) Then
x = x0: y = y0
End If

 

оно?:)
заранее спасибо:)

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

 If (x0 = x1 And y0 = y1) Or (R0 <= 0) Or (R1 <= 0) Then x = x0: y = y0Else...


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

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

тогда я непонимаю..ввела это условие но компилятор все равно ругается на мои мерки равные нулю..не нравятся ему мои нули:))

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

Ubka.zip
у меня где-то происходит деление на "0"
хотя условие в подпрограмме (когда радиусы равны нулю) это должно исключать...

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

______________________.zip

 

Вот что пока разработала В детской рубашке стою из-за сообразительности построения рукава рукавом (не знаю как сообразить привязку к пройме Думаю, что только можно произвести построение рукава из расчета ОГ. Ищу такую темку в книжках)

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

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

Всем доброго времени суток! Такая интересная тема! Девченки, подскажите пожалуйста где взять Visual Basic? A Visual Basic for AutoCAD это тоже самое или нечто иное? Извините за незнание, очень хочется НАЙТИ и ПОБЕДИТЬ!

Признание чужого успеха - это стимул для творческой активности.

Энне Бурда.

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

Visual Basic есть в автокаде. В программе заложенно ещё несколько языков программирования (например, Лисп) - кто чем владеет. Если установите автокад, то у вас всё будет, останется только освоить.

Мой блог

 

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

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

хочу поделиться радостью, наконец закончила со своей первой программкой для чертежа юбки:))))

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

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


Вот что получилось просмотрите

Мне понравилось. По какой методике Вы строили детскую рубашку?

 


хочу поделиться радостью, наконец закончила со своей первой программкой для чертежа юбки:))))

Поздравляю! Ждем от вас новых программ.
Ссылка на сообщение
Поделиться на другие сайты


Мне понравилось. По какой методике Вы строили детскую рубашку?
Поздравляю! Ждем от вас новых программ.

 

 

 

Я ее строила по старой книжке, с которой я научилась шить - КРОЙКА и ШИТЬЕ техническая литература УССР - восьмое стереотипное издание

 

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

 


С уважением Алла!

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

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

Добрушанка, или кто-нибудь, кто знает, расшифруйте пожалуйста:
Set arcObj = ThisDrawing.ModelSpace.AddArc(O, R, 3 * Pi / 2,2 * Pi )

 

Arc - это дуга, я поняла, в скобках сентр, радиус а дальше? ..

 

как правильно этим пользоваться?:)
в автокаде можно начертить дугу по двум точкам и радиусу, можно ли здесь это использовать?

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


Set arcObj = ThisDrawing.ModelSpace.AddArc(O, R, 3 * Pi / 2,2 * Pi )
Arc - это дуга, я поняла, в скобках сентр, радиус а дальше? ..

3*Pi/2 - начальный угол в радианах (270 градусов), 2 * Pi - конечный угол дуги (360 градусов).

в автокаде можно начертить дугу по двум точкам и радиусу, можно ли здесь это использовать?

В VBA в справке я не нашла такой возможности, но можно сделать (если нужно) соответствующую процедуру.
Ссылка на сообщение
Поделиться на другие сайты

ой, нашла недоработки в своей юбке, выкладываю новый и окончательный вариант:)
Ubka_Z.zip
а с дугой у меня получилось, вычислила центр и задала углы как вы сказали:)

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

а кто нибудь уже делал форму для мерок? поделитесь опытом пожалуйста:))))) как кнопки делать я вроде поняла, а вот как связать с мерками, с расчетами из основной программы не знаю...

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

Покажу на примере последней программы Sune4ka, как оформить программу для ввода мерок.
Для начала создадим форму. Разместим на ней необходимые компоненты. Поскольку нам нужно ввести следующие мерки Px, Py, Bx, By, Zx, Zy, OT, OB, DP, DB, DZ, DI (их 12), то на форме у нас будет 12 компонентов TextBox, 12 компонентов Label. Кроме того, нам понадобится еще три кнопки CommandButton.
post-4191-1232457397_thumb.jpg
Итак, размещаем на форме компоненты Label и TextBox. Они имеют имена соответственно Label1 и TextBox1. Выделим компоненту Label1. В ее свойствах выберем свойство Caption (Заголовок) и запишем там Px. В следующем свойстве ControlTipText запишем тот текст, который мы хотим, чтобы выскакивал как подсказка. В нашем случае это будет опять Px (а можно и расписать, что это означает). Тоже самое мы записываем в свойствах компонента TextBox1 напротив ControlTipText.
post-4191-1232457408_thumb.jpg
Меняем у обоих компонентов свойство Font (шрифт).
post-4191-1232457419_thumb.jpg
Высоту, ширину компонентов можно изменить мышкой на форме или в свойствах Height, Width. Расположение компонент на форме можно менять в свойствах Left, Top.
Теперь то же самое нужно сделать еще 11 раз. В итоге у нас должно получиться 12 компонентов Label и 12 компонентов TextBox.
Добавим еще три кнопки CommandButton. Они будут называться "Построить юбку", "Сохранить мерки", "Отмена" (это все записывается в свойстве Caption у каждой из кнопок).
В свойстве Caption формы UserForm1 запишем Юбка Злачевской.
В результате у вас должна получится такая форма
post-4191-1232457431_thumb.jpg

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

Дважды щелкнув мышкой по кнопке "Построить юбку" на форме, запишем следующий код

Private Sub CommandButton1_Click() Call ThisDrawing.SaveData Call ThisDrawing.InitVaribles Call ThisDrawing.Ubka UserForm1.HideEnd Sub


Здесь мы вызываем процедуры SaveData, InitVaribles и Ubka, про которые мы поговорим попозже.
Команда UserForm1.Hide закрывает форму.

 

Переходим к форме и дважды щелкаем мышкой по следующей кнопке на форме "Сохранить мерки". Мы попадем в то же окно для редактирования кода. Для второй кнопки запишем такой код

Private Sub CommandButton2_Click()Call ThisDrawing.SaveDataEnd Sub


Это мы вызываем процедуру, которая сохранит наши мерки. Эту процедуру мы создадим немного позже.

 

В этом же окне можно сразу записать код и для третьей кнопки "Отмена", не возращаясь на форму.

Private Sub CommandButton3_Click()UserForm1.HideEnd Sub


При нажатии на кнопку "Отмена" будет закрываться форма.

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

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

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