|
||
| Правила | Регистрация | Пользователи | Поиск | Сообщения за день | Все разделы прочитаны | Справка по форуму | Файлообменник | |
|
![]() |
Поиск в этой теме |
![]() |
#1 | |
Z - координата в AutoCAD
Сообщений: n/a
|
||
Просмотров: 11226
|
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,432
|
В процессе работы смотри на левый нижний угол - там пишутся координаты курсора в текущей usc.
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
инженер Регистрация: 13.12.2004
Минск
Сообщений: 496
|
Смотря для чего нужно отслеживание Z координаты, если для того чтобы взять ее с объекта, то можно воспользоваться координатным фильтром Shift+правый клик и взять фильтр по Z затем указать точку на объекте с которой нужно взять координату Z используя объектную привязку (можно использовать привязку "ближайшая"), а затем указать координаты XY (любым способом) в которые будет производиться встака (отрисовка) объкта (примитива). В принципе, фильтрами в совокупности с объектной привязкой можно творить много интересных вещей не прибегая к вводу координат из командной строки!
Если нужно что-то другое, то поясните пожалуйста более подробно.
__________________
Сейчас такая знаний бездна доступна всякому уму, что стало спорить бесполезно и глупо думать самому. |
|||
![]() |
|
||||
Сообщений: n/a
|
MIP Спасибо конечно, но это не совсем то... смысл следующий:
прога на VBA прорисовывает 3D фигуру, перед этим она запрашивает координаты точки вставки. Можно ли осуществить ввод координат непосредственно с мыши... мне сейчас приходится делать следующее: ввожу координаты XY даллее программа строит два луча из этой точки по + и - Z, и просит ввестии 3 координату.... это не очень удобный способ, тк для взаимного расположения объектов трудно (не переключая вид, он постоянно 3D) с ориентировать их относительно друг друга в плоскости XY... |
|||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,432
|
Кажется, такого нельзя сделать: сначала надо тогда устанавливать usc в точку будущей вставки. Проще, кажется, сделать по другому: вставлять солид в любую точку, а потом выполнить align (по 3 точкам) или move (в зависимости от текущей задачи).
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
инженер Регистрация: 13.12.2004
Минск
Сообщений: 496
|
Цитата:
__________________
Сейчас такая знаний бездна доступна всякому уму, что стало спорить бесполезно и глупо думать самому. |
|||
![]() |
|
||||
инженер Регистрация: 13.12.2004
Минск
Сообщений: 496
|
Товорищи програмисты Есть еще одна задачка по поводу координаты Z в Автокаде!
Дано: линейный примитив в 3D Надо: По заданной координате Z вычислить ее положение по XY на линейном примитиве с возможностью построения других примитивов от этой точки (грубо говоря привязки к этой точке) Координатные фильтры тут не прокатят! Для продвинутых усложняю задачу Дано: линейные примитивы (линия, дуга, окружность, 3D полилиния) в 3D Надо: Тоже самое. Предупреждаю сразу на таких примитивах как дуга, окружность и 3D полилиния таких точек может быть 2 (дуга, окружность) и более (3D полилиния), так что нужна возможность выбора нужной точки. Желательно чтобы при этом не создавалось дополнительных примитивов, дабы не загромождать чертеж. Дерзайте!
__________________
Сейчас такая знаний бездна доступна всякому уму, что стало спорить бесполезно и глупо думать самому. |
|||
![]() |
|
||||
LISP-программист Регистрация: 25.08.2003
Тутэйшы
Сообщений: 238
|
Цитата:
Я правильно понял?
__________________
Там все есть для счастья - меня там только нет. Так это значит, что я там - буду! |
|||
![]() |
|
||||
инженер-конструктор Регистрация: 03.11.2004
Москва
Сообщений: 23
|
|
|||
![]() |
|
||||
инженер Регистрация: 13.12.2004
Минск
Сообщений: 496
|
Цитата:
Цитата:
Опишу процесc как это должно выглядеть при работе. Я начинаю (заканчиваю, продолжаю нужное подчеркнуть) построение примитива и мне нужна привязка к другому примитиву в точке с заданной координатой Z, я вызываю функцию задаю координату Z (ввод числа с клавиатуры или использование координатного фильтра с привязкой) и указываю примитив на котором нужно определить точку, функция определяет координаты XY точки и отрисовавет сегмент примитива с конечной точкой на объекте с заданной координатой Z и вычисленными координатами XY. Примерно так!
__________________
Сейчас такая знаний бездна доступна всякому уму, что стало спорить бесполезно и глупо думать самому. |
|||
![]() |
|
||||
Проектировщик ВК. LISP-любитель. Регистрация: 15.12.2003
Москва
Сообщений: 1,202
![]() |
>MIP
Вот такую штуку набросал, Возвращает точку принадлежащую прямой заданной line. Функция на основе уравнения прямой. Точка может и не лежать на самой line, прямая бесконечна. Если сделать проверку на принадлежность точки line и запустить такую функцию для каждого сегмента 3dpolyline, то можно найти искомую точку для 3dpolyline. Но для окружностей такое не пойдет, нужно писать на основе уравнения окружности. Код:
|
|||
![]() |
|
||||
LISP-программист Регистрация: 25.08.2003
Тутэйшы
Сообщений: 238
|
С вами поведешься, чего только не наберешься...
В 3d не работал, поэтому возникают вопросы. Итак, если попытаться реализовать эту задачу, как пересечение линейного примитива (curve) с плоскостью, то на первый взгляд все довольно просто: 1. Указав линейный примитив, получаем его vla-указатель. 2. "Строим" временный объект - вспомогательную плоскость и получаем ее vla-указатель. Кстати, какой примитив AutoCAD'а следует использовать в качестве "плоскости"? Я использовал 3DFace. 3. Применяем к этим двум vla-объектам метод IntersectWith и получаем точку или точки их пересечения. 4. Удаляем вспомогательную плоскость. Однако при попытке реализовать данный алгоритм столкнулся со следующей ситуацией: Код:
Если то же самое проделать с 2М-примитивами (например circle и line), то все нормально и Код:
Какие будут мнения?
__________________
Там все есть для счастья - меня там только нет. Так это значит, что я там - буду! |
|||
![]() |
|
||||
Регистрация: 11.10.2004
e•burg
Сообщений: 755
|
Цитата:
Код:
|
|||
![]() |
|
||||
Проектировщик ВК. LISP-любитель. Регистрация: 15.12.2003
Москва
Сообщений: 1,202
![]() |
>kos
Цитата:
можно, правда, наверное, построить плоскость на которую целиком проецируется выбранная кривая... Как же Вы строите 3DFace? |
|||
![]() |
|
||||
LISP-программист Регистрация: 25.08.2003
Тутэйшы
Сообщений: 238
|
Цитата:
Код:
Цитата:
Построить плоскость, на которую кривая проецируется целиком не представляет проблемы - по координатам габаритных точек кривой. Проблема одним предложением выше... Продолжаем разговор... (с) Карлсон, который живет на крыше.
__________________
Там все есть для счастья - меня там только нет. Так это значит, что я там - буду! |
|||
![]() |
|
||||
Регистрация: 14.12.2004
Сообщений: 7
|
Координата Z мышю легко
Берём примитив прямую (луч) Оставляем одну привязку "ближайшая" Наводим маркер на примитив по захвату читаем координаты в левом нижнем углу бегаем по примитиву и выбираем нужную точку. Если предполагаем вставить объект то задачей должна быть точка,если будет построение выбираем соответствующую команду. -> MIP Примитив круг или квадрат превращаем через выдавливание в тело с толщиной 0.01 и далее как написано выще Знаний конечно бездна ктобы подсказал см.секущая в 3М от функции. |
|||
![]() |
|
||||
Инженер по системам безопасности Регистрация: 23.11.2003
Рига
Сообщений: 1,099
|
Ну вот еще одна попытка на скорую руку без проверок. Функция ставит на кривой точки в местах с заданной Z-координатой. Есть в этом большие недостатки:
1) Время работы зависит от длинны кривой и от точности. 2) Точность не математическая а пересчетная "куда снаряд упал". 3) Точек удовлетворяющих условию с определенной точностью может быть несколько и надо отфильтровать наиболее подходящую (здесь не реализованно). Однако работает со всеми линейными примитивами. Код:
|
|||
![]() |
|
||||
Регистрация: 14.12.2004
Сообщений: 7
|
1) Время работы зависит от длинны кривой и от точности.
2) Точность не математическая а пересчетная "куда снаряд упал". 3) Точек удовлетворяющих условию с определенной точностью может быть несколько и надо отфильтровать наиболее подходящую (здесь не реализованно). 1) За время не согласен всётаки не вселенную делаем, да и быстрее чем програмку писать. 2)Точность вопрос реторический так можно ввести и в ручную, а расчёт в EXCEL через горячо любимую математику(прямая на плоскости и в пространстве) 3)В моём решении точек с известной Z может быть не больше двух ибо находятся они на гранях, а дальше опятьже матиматика А в целом с критикой согласен. И Если заговорили за построения в 3М то не плохобы иметь примочку которая указывала координаты точек прямо на экране, а то не удобно писать на бумаге. |
|||
![]() |
|
||||
LISP-программист Регистрация: 25.08.2003
Тутэйшы
Сообщений: 238
|
Fantomas, немного критики.
1. Функция работает достаточно долго. 2. При тестировании я получил в качестве результата 5 точек, хотя решение одно (пересечение прямой и плоскости - одна точка). Теперь немного конструктива: Для прямолинейных сегментов нет необходимости проходить его по шагам. Достаточно 1. определить, пересекает ли данный сегмент плоскость (сравнением координат Z начальной и конечной точки сегмента с указанным значением Z). 2. если пересекает, то пересчитать координаты X и Y. Примерно так: Код:
И еще остается вопрос с дуговыми сегментами...
__________________
Там все есть для счастья - меня там только нет. Так это значит, что я там - буду! |
|||
![]() |