Возникла недавно простая задача: построить в AutoCAD полилинию по координатам из таблицы Excel.
Знаю, что можно написать программу на AutoLISP (или найти готовую), но дело осложнялось тем, что создать полилинию надо было в AutoCAD LT, который, как известно, не поддерживает программирование. После недолгого изучения вопроса решение было найдено. Делюсь.
Задача: в таблице Excel содержатся координаты точек. Необходимо по этим точкам создать полилинию в AutoCAD. При этом, формат файла Excel может быть разным в зависимости от того, откуда получены данные (результат лазерного сканирования, топосъемка, таблица координат от контрольно-измерительной машины и пр.)
Решение: сначала штатными функциями Excel преобразовать координаты в вид X.X,Y.Y, скопировать массив координат в буфер обмена, затем в AutoCAD запустить команду ПЛИНИЯ (_PLINE) и подставить значения координат из буфера.
Предлагаю пошаговую инструкцию.
Подготовка данных в Excel
Открываем таблицу Excel.
В нашем случае в таблице каждая координата точки записана в отдельной ячейке
ВАЖНО! В AutoCAD координаты вводятся в формате X.X,Y.Y - т.е. дробные части координат отделяются друг от друга точкой, а сами координаты - запятой!
Т.к. в нашем случае в таблице Excel дробные части отделены запятой, то необходимо заменить их на точки. Для этого на ленте перейдем на вкладку Главная ➤ панель Редактирование ➤ Заменить.
В появившемся окне Найти и заменить в качестве параметра Найти вводим запятую, в качестве Заменить на - точку и нажимаем кнопку Заменить все
В результате все числа в таблице будут приведены к нужному нам формату
Обратите внимание, что если в вашем исходном файле в качестве разделителя используется точка, то дополнительно преобразовывать ничего не нужно.
Движемся дальше. Теперь необходимо разрозненные координаты X и Y объединить в одну запись в ячейке. Для этого можно использовать стандартные функции Excel, например, СЦЕПИТЬ или ОБЪЕДИНИТЬ.
В соседнем столбце вводим формулу =СЦЕПИТЬ(A1;",";B1)
В этой форуме A1 и B1 - адреса ячеек с координатами, "," - символ, который будет вставлен между ними
UPD: в комментариях предложили еще ввести параметр _none для отключения привязки. В этом случае значение формулы будет таким =СЦЕПИТЬ("_none ";A1;",";A1)
Перетаскиваем маркер заполнения ячеек для того, чтобы скопировать формулу во все ячейки столбца. В итоге получаем готовую таблицу координат
Если для объединения вы будете использовать функцию ОБЪЕДИНИТЬ, то формула будет следующая =ОБЪЕДИНИТЬ(",";ИСТИНА;A1;B1)
Главное, на что нужно обратить внимание: в результате преобразований мы должны получить в ячейке запись вида X.X,Y.Y.
Выделяем все полученные ячейки с координатами и копируем их содержимое в буфер обмена
Строим полилинию в AutoCAD
Запускаем AutoCAD или AutoCAD LT.
Запускаем команду ПЛИНИЯ (_PLINE) и в командную строку вставляем содержимое буфера обмена
Полилиния готова
Заключение
Как видите, многие задачи можно упростить и автоматизировать даже без программирования, но далеко не все.
Если для вас привычней формат видеоурока, то он уже доступен
С остальными приемами работы в AutoCAD можно познакомиться на этой странице блога.
С уважением, Андрей
Если вы получили ответ на свой вопрос и хотите поддержать проект материально - внизу страницы для этого есть специальная форма.
Если вы получили ответ на свой вопрос и хотите поддержать проект материально - внизу страницы для этого есть специальная форма.
Как говорится - век живи, век учись
ОтветитьУдалитьЗабыл сказать, что надо отключать привязку. Поэтому формула через СЦЕПИТЬ будет такая:
ОтветитьУдалить=сцепить("_none ";a1;",";b1)
А еще лучше вообще использовать одну-единственную формулу:
=СЦЕПИТЬ("_none ";ПОДСТАВИТЬ(ТЕКСТ(A1;"# ###,0000");",";".");",";ПОДСТАВИТЬ(ТЕКСТ(B1;"# ###,0000");",";"."))
Алексей, спасибо! Добавил.
УдалитьПравда, от такой формулы бОльшая часть моих пользователей сойдет с ума :-)
Фу ты, формат представления текста надо без пробелов сделать...
ОтветитьУдалить=СЦЕПИТЬ("_none ";ПОДСТАВИТЬ(ТЕКСТ(A1;"#,0000");",";".");",";ПОДСТАВИТЬ(ТЕКСТ(B1;"#,0000");",";"."))
Вроде должно сработать
Да, работает
УдалитьОхренеть!!! Вы бы ещё диссертацию на эту тему написали!!!
ОтветитьУдалитьЭту почетную миссию я для вас оставил
УдалитьДобрый день!
ОтветитьУдалитьА можно ли имея координаты 2-х различных полилиний в Excel начертить их таким же способом в автокаде за один " цикл" copy-paste, а не копировать координаты одной линии, вставляя в автокаде, а потом и второй лини?
Спасибо!
Да
Удалитьспасибо
ОтветитьУдалитьСупер! Работает отлично! посадила 5 домов по координатам за 10 минут.
ОтветитьУдалить