Перейти к публикации

Координаты точек по обводу кривой


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

Уважаемые форумчане!

Я столкнулся с необходимостью автоматизировать процесс получения координат точек по обводу кривой.

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

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

1. Прошу вашего советов о том, как можно решить эту задачу.

В распоряжении имеется SolidWorks, Autocad и Компас.

Я понимаю, что стандартными средствами эта задача не решается, а нужно написать макрос или что-то в этом роде.

2. Прошу вас также, если это не составит труда, привести этот макрос при описании способа решения описанной мной проблемы.

Заранее благодарен всем за помощь.

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


Я столкнулся с необходимостью автоматизировать процесс получения координат точек по обводу кривой.

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

Подобного рода задачи обычно решаются в AutoCAD.

Возможны два пути — написать (или заказать) узконаправленную одноцелевую LISP-программу, которая будет все это делать «в один клик», или использовать имеющиеся средства AutoCAD и готовые (более универсальные) LISP-программы для извлечения различных данных из файла чертежа. Я, к сожалению, LISP не владею и с написанием программы не справился. Поэтому предлагаю второй вариант.

Второй вариант состоит из двух этапов:

1) Нанесение точек на кривую.

2) Извлечение и сохранение координат этих точек.

Первый этап. Нанести точки на кривую можно используя две команды AutoCAD в зависимости от того, КАК вы хотите нанести точки.

Команда _.divide (поделить) делит объект на заданное количество сегментов одинаковой длинны.

Команда _.measure (разметить) делит объект на сегменты заданной длинны (при этом последний сегмент обычно оказывается короче всех остальных).

На самом деле объекты не «разбиваются», а на них помещаются точки. (Внешний вид точек можно выбрать, задав стиль всех точек чертежа в меню Format >> Point Style...).

Для некоторой автоматизации процесса я написал простенькую LISP-программульку, которая создает новый слой Points (точки), задает ему цвет 10 (близкий к красному), делает этот слой активным, вызывает диалог Point Style для выбора внешнего вида точек и размещает точки на выбранной кривой в соответствии с заданной командой. <noindex>http://rapidshare.com/files/414458477/DWP_MWP.lsp</noindex>

Если вы никогда не работали с LISP-программами — коротенький инструктаж по их использованию:

Создайте папку, например C:\My_LISPs (или в любом другом месте — главное, избегать кириллицы в пути). Пропишите эту папку в Support File Search Path (Options >> вкладка Files >> Support File Search Path >> Add >> Browse – указать на эту папку).

<noindex>Изображение</noindex>

В нее и будете помещать ваши файлы дополнений и приложений.

Сейчас поместите туда файл DWP_MWP.lsp.

Откройте имеющийся чертеж или в новом чертеже нарисуйте кривую.

Меню Tools >> Load Application... или Tools >> AutoLISP >> Load Application...

<noindex>Изображение</noindex>

вызываете окно загрузки, выбираете нужную программу, загружаете ее (LOAD) и закрываете окно (CLOSE).

<noindex>Изображение</noindex>

В зависимости от того, каким способом вы хотите ставить точки, вводите команду

dwp - (DIVIDE with points) или mwp - (MEASURE with points)

Выбираете стиль точек, выбираете объект и указываете количество сегментов

<noindex>Изображение</noindex>

У нас появились точки на выбранной кривой и новый слой Points:

<noindex>Изображение</noindex>

Второй этап. Теперь нужно получить координаты точек.

Идем по ссылке <noindex>http://www.jefferypsanders.com/autolisp_cad2file.html</noindex> и скачиваем LISP-программу Cad2File.

Распаковываем архив (два файла) в уже созданную и прописанную (обязательно!!) папку, загружаем программу (Tools >> Load Application... или Tools >> AutoLISP >> Load Application... ) и запускаем командой c2f .

Выбираем тип объекта POINT (точка), какие данные об объекте нужны, тип файла экспорта и сохраняем файл.

<noindex>Изображение</noindex>

Файлы .csv (Comma Separated Values — значения, разделённые запятыми) можно открыть как в «блокноте», так и в «электронных таблицах» - Excel, OO.o-Calc и др.

<noindex>Изображение</noindex>

Теперь точки можно удалить и повторить операцию с другими кривыми.

Если желаете сохранить точки в чертеже — во избежание путаницы лучше всего каждый раз переносить точки в слои, соответствующие каждой кривой.

<noindex>Изображение</noindex>

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

Подобного рода задачи обычно решаются в AutoCAD.

подобного рода задачи решаются где угодно.

Думаю что любая CAD-программа может расставить точки на линии с нужным шагом.

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

Но можно, конечно, и макрос написать, если подобная процедура применяется часто.

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

Присоединяйтесь к обсуждению

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

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу.




×
×
  • Создать...