Реклама i
Стань нашим партнером - зарабатывай с нами!
| Правила | Регистрация | Пользователи | Сообщения за день |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > как средствами VBA нарисовать дугу, зная координаты центра, радиус, начальную и конечную точки?

как средствами VBA нарисовать дугу, зная координаты центра, радиус, начальную и конечную точки?

Ответ
Поиск в этой теме
Непрочитано 01.03.2010, 12:11 #1
как средствами VBA нарисовать дугу, зная координаты центра, радиус, начальную и конечную точки?
tata-tau
 
Регистрация: 01.03.2010
Сообщений: 3

как средствами VBA нарисовать дугу, зная координаты центра, радиус, координаты начальной и конечной точек?

Последний раз редактировалось tata-tau, 02.03.2010 в 09:28. Причина: недостаточно информации о сути вопроса
Просмотров: 7064
 
Непрочитано 01.03.2010, 12:20
#2
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,844


Зная координаты центра, начальной и конечной точек - запросто. А как с заданным радиусом - если честно, то не знаю.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 01.03.2010, 12:27
#3
Хмурый


 
Регистрация: 29.10.2004
СПб
Сообщений: 16,336


Цитата:
как нарисовать дугу, зная координаты центра, радиус, координаты начальной и конечной точек?
из меню

PS при задании сразу всех указанных параметров- либо радиус, либо координаты центра будут лишними.
Миниатюры
Нажмите на изображение для увеличения
Название: spx6.jpg
Просмотров: 235
Размер:	49.5 Кб
ID:	34464  
Хмурый вне форума  
 
Автор темы   Непрочитано 02.03.2010, 04:14 я имею в виду - средствами VBA, кажется, есть ответ
#4
tata-tau


 
Регистрация: 01.03.2010
Сообщений: 3


Для рисования дуги средствами VBA требуются центр, радиус, начальный и конечный угол.
Можно найти углы через координаты центра, начальной и конечной точек:
tgA=(By-Oy)/(Bx-Ox)
где Ox,Oy - координаты центра;
Bx,By - координаты одной из точек.
Второй угол - аналогично.
- получится или нет - пока не пробовала.
tata-tau вне форума  
 
Непрочитано 02.03.2010, 07:52
#5
Хмурый


 
Регистрация: 29.10.2004
СПб
Сообщений: 16,336


tata-tau, так сразу и надо писать про VBA, да ещё и в другом разделе форума.
Хмурый вне форума  
 
Непрочитано 02.03.2010, 08:36
#6
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,844


Хмурый, тема перемещена из AutoCAD в "Программирование"
tata-tau, с тебя переименование темы (как? см.справку по форуму, ссылка у меня в подписи).
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 02.03.2010, 11:16
#7
KronSerg

Вода - моя работа
 
Регистрация: 10.11.2009
Санкт-Петербург
Сообщений: 3,639


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
Зная координаты центра, начальной и конечной точек - запросто. А как с заданным радиусом - если честно, то не знаю.
Алексей, если есть координаты центра и координаты точки на дуге, радиус уже определён и изменить его нельзя
__________________
Нерешаемых проблем не бывает.
KronSerg вне форума  
 
Непрочитано 02.03.2010, 12:14
1 | #8
Олег (jr.)

специалист по околачиванию грушевых деревьев
 
Регистрация: 14.09.2004
Pietari, Venäjä
Сообщений: 813


Цитата:
Сообщение от tata-tau Посмотреть сообщение
как средствами VBA нарисовать дугу, зная координаты центра, радиус, координаты начальной и конечной точек?
Простой пример - переделай по своим данным
Точки нужно задавать против часовой стрелки
относительно центра
Код:
[Выделить все]
Option Explicit

Sub ArcByCenter2Points()
    Dim p1, p2, cp
    Dim sa As Double, ea As Double, rad As Double
    Dim arc As acadArc
    With ThisDrawing
        With .Utility
            p1 = .GetPoint(, vbCr & "First point: ")
            p2 = .GetPoint(p1, vbCr & "Second point: ")
            cp = .GetPoint(, vbCr & "Center point point: ")
            If Distance(cp, p1) <> _
               Distance(cp, p2) Then
                MsgBox "Distances between center" & vbCr & _
                       "and points are not equals" & vbCr & _
                       "Program exiting"
                Exit Sub
            End If
            rad = Distance(cp, p1)
            sa = .AngleFromXAxis(cp, p1)
            ea = .AngleFromXAxis(cp, p2)
        End With
        On Error Resume Next
        Set arc = .ModelSpace.AddArc(cp, rad, sa, ea)
        If Err Then
            Err.Clear
            MsgBox "Degenerate geometry values" & vbCr & _
                   "Program exiting"
            Exit Sub
        End If
    End With
End Sub

Function Distance(p1 As Variant, p2 As Variant) As Double
    Distance = Sqr((p1(0) - p2(0)) ^ 2 + ((p1(1) - p2(1)) ^ 2))
End Function
~'J'~
Олег (jr.) вне форума  
 
Непрочитано 02.03.2010, 17:59
1 | #9
hwd

C, C++, C#
 
Регистрация: 07.10.2009
С-Пб.
Сообщений: 2,762
Отправить сообщение для hwd с помощью Skype™


тынц.
hwd вне форума  
 
Автор темы   Непрочитано 03.03.2010, 04:07
#10
tata-tau


 
Регистрация: 01.03.2010
Сообщений: 3


СПАСИБО!
tata-tau вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > как средствами VBA нарисовать дугу, зная координаты центра, радиус, начальную и конечную точки?

Размещение рекламы


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Рифмоплетство. Kryaker Разное 554 14.11.2023 11:59
положение xyz в свойствах ящика вводится от точки центра верхней грани. Как изменить эту точку на точку угла? 124bit AutoCAD 2 13.08.2009 19:55
ЮМОР 2006 =) Perezz!! Разное 1122 04.01.2007 00:46