3 / 3 / 0
Регистрация: 16.02.2012
Сообщений: 19
1

Серединный перпендекуляр определенной длины (VBA-autocad)

16.03.2012, 14:18. Показов 1745. Ответов 6
Метки нет (Все метки)

есть отрезок, 2 точки заносятся пользователем,
нужно провести серединный перпендекуляр , с длиной в обе стороны от середины на одинаковые расстояния,
в моем случае Rcx которое расчитано. Причем требуется что бы строилось при любых, даже при перпендекулярности осям.
point1 point2 те самые точки. На этом проблемы не ограничатся, но правила форума 1 вопрос- ответы... должно выполнятся.
хелп.
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
point3(0) = (point1(0) + point2(0)) / 2
point3(1) = (point1(1) + point2(1)) / 2
H0 = (Ho(f) + Ho(l)) / 2
R0 = (Ro(f) + Ro(l)) / 2
Rcx = R0 * (H0 - hx) / H0
point3(0) = (point1(0) + point2(0)) / 2
point3(1) = (point1(1) + point2(1)) / 2
point3(2) = 0
A = point1(0) ^ 2 - point2(0) ^ 2 + point1(1) ^ 2 - point2(1) ^ 2
B = -2 * point1(0) + 2 * point2(0)
C = 2 * point1(1) - 2 * point2(1)
K = -(A / B)
dx = Abs(((Rcx ^ 2) / (1 + K ^ 2)) ^ (1 / 2))
dy = K * dx
dx1 = -Abs(((Rcx ^ 2) / (1 + K ^ 2)) ^ (1 / 2))
dy1 = K * dx1
point4(0) = point3(0) + dx
point4(1) = point3(1) + dy
point5(0) = point3(0) + dx1
point5(1) = point3(1) + dy1
  Set Lin2 = ThisDrawing.ModelSpace.AddLine(point3, point4)
    Set lin3 = ThisDrawing.ModelSpace.AddLine(point3, point5)
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
16.03.2012, 14:18
Ответы с готовыми решениями:

Информация по VBA B Autocad
Давненько меня здесь не было. Много воды утекло, вот я уже и инженер. Теперь можно и программу...

Не работает Property Get в VBA for AutoCAD
Вот часть описания класса объекта: Private dblStartAngle As Double Public Property Get...

3D-пружина, спирали из delphi в Autocad используя VBA
добрый вечер! подскажите пожалуйста, как создать 3d пружину с помощью VBA обращаясь через Delphi к...

VBA Выбор примитивов AutoCAD с фильтрацией по слоям
Поставлена такая следующая задача: необходимо програмно выделить все мультилинии, находящиеся в...

6
Заблокирован
16.03.2012, 17:21 2
Если я правильно понял задачу, мы хотим по известным концам одной диагонали ромба и длине второй диагонали найти недостающие вершины ромба?

'середина известной диагонали
XC = (x1 + x2) / 2
YC = (y1 + y2) / 2

K = |34|/|12| - отношение длин диагоналей

Неизвестные координаты
x3 = XC - K*(y2 - y1) / 2
y3 = YC + K*(x2 - x1) / 2
x4 = XC + K*(y2 - y1) / 2
y4 = YC - K*(x2 - x1) / 2

Таким образом можно исключить деление на 0!
0
3 / 3 / 0
Регистрация: 16.02.2012
Сообщений: 19
21.03.2012, 10:24  [ТС] 3
что то в раздрызг идет- то что строится но не то, неполучается, K здесь большая на меньшую диагональ?
0
Заблокирован
21.03.2012, 11:48 4
Цитата Сообщение от zheleznov Посмотреть сообщение
K здесь большая на меньшую диагональ?
Точки 1 и 2 - это твои point1 и point2 (которые известны)
С - твоя point3 (середина)
Точки 3 и 4 - неизвестные точки (point4 и point5) на серединном перпендикуляре по разные стороны от (1,2)
|12| - расстояние между известными точками 1 и 2 (т. Пифагора)
|34| - расстояние между неизвестными точками 3 и 4
возможно |34| = Rcx * 2 (непонятно, как ты его ищешь и применяешь в своем коде, поэтому и проверять код никто не кинулся)
K - отношение расстояния между неизвестными точками 3 и 4 (Rcx * 2?) и известными (какое из них больше - без разницы, лишь бы не нулевые).

Не по теме:

А слабо взять промокашку и нарисовать задачу!
Вывод формул - дело пяти минут...

2
3 / 3 / 0
Регистрация: 16.02.2012
Сообщений: 19
21.03.2012, 16:55  [ТС] 5
Спасибо,все отлично! есть еще1 проблема, Вот посмотрите на кртинку, теперь имея точку надо бы еще её касательной соединить с окружностью.
Для получения области защиты, (причем если Rcx отрицателен тогда нужно соответственно , вершины-окружность что бы касательные пересекались, и обсечь их,)
Может предложите какойнибудь вариант решения этой проблемы?
(розмыслы- есть 2 точки, и угол 90 градусов, но проблема в наличии 2 кассательных к 1 окружности из 1ой точки.) Посмотрите рисунок, там нарисовано
Вложения
Тип файла: docx СО 153-34.21.122-2003молниезащ - копия.docx (55.6 Кб, 14 просмотров)
0
Заблокирован
21.03.2012, 20:46 6
Цитата Сообщение от zheleznov Посмотреть сообщение
Посмотрите рисунок, там нарисовано
Чтобы посмотреть твой рисунок, придётся устанавливать офис 2007 (или 2010)О_о
Они есть далеко не у всех. А рисунки прекрасно прилепляются в формате PNG, JPG и т.п. (Поэкспериментируй с [Print Sqrn] и Paint)
имея точку надо бы еще её касательной соединить с окружностью.
См. картинку.
Там K(1) - твоя точка
T(2) - центр окружности
Z - радиус окружности
Вторую точку можно получить, поменяв знак перед синусами, кажется (лень вспоминать - поиграй со знаками, короче...)

Не по теме:

Подробности в гугле "VB Провести касательную к окружности через точку" - первая ссылка

Миниатюры
Серединный перпендекуляр определенной длины (VBA-autocad)  
3
3 / 3 / 0
Регистрация: 16.02.2012
Сообщений: 19
18.04.2012, 09:32  [ТС] 7
Спасибо всем. Я все понял. Осталось тока кое что довести до ума.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
18.04.2012, 09:32
Помогаю со студенческими работами здесь

Как написать код, копирующий область VBA Autocad
как написать код копирующий область, по верхней левой и нижней правой точки в vba autocad. на...

Скопировать часть строки с определенной позиции и определенной длины в другую строку
Ввести с клавиатуры строку. Скопировать часть строки с определенной позиции и определенной длины в...

Console.Writeline - вывод строки определенной до определенной длины спереходом на новую строку
Добрый день. Существуют разные флаги для Console.Writeline. Например вот такой способ: ...

VBA для AutoCad
Посоветуйте, пожалуйста, хорошую литературу по VBA для AutoCAD.


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru