Рассылка
"Новости проекта"











Автоматизация процесса построения 864-х трехмерных стволов скважин при помощи базового функционала AutoCAD Civil 3D и MS Office

Добавлено: 24 Янв 2013
Обновлено: 10 Фев 2013
В этой статье хочется поделиться своим опытом выполнения задачи которую, казалось бы, невозможно решить стандартными средствами в разумные сроки, из-за необходимости обработки огромного количества информации. На примере процесса автоматизации построения 864-х стволов скважин, попытаюсь доказать обратное.

Статья №2

Автоматизация процесса построения 864-х трехмерных стволов скважин при помощи базового функционала AutoCAD Civil 3D и MS Office.

Эта статья является логическим продолжением моей предыдущей статьи о подсчете глубин скважин при помощи базового функционала программного комплекса AutoCAD Civil 3D и MS Office. Целью данной статьи является желание  донести до пользователей что, иногда задачи невыполнимые в разумные сроки, из-за необходимости обработки огромного количества информации, на самом деле таковыми не являются. Нужно просто преобразовать массив информации в набор команд понятный AutoCAD, и выполнить эту задачу в автоматическом режиме.

Как я уже говорил в своей предыдущей статье что, никакой практической цели в отрисовке 3D стволов скважин не преследовалось, разве что показать шефу наглядно масштаб предстоящих работ. Но, на мой взгляд, для специалистов часто обрабатывающих большое количество однотипных данных статья была бы крайне интересна. Прежде всего, на этом примере хотелось бы показать, как превратить массив данных в набор команд для AutoCAD, позволяющий выполнить последовательность рутинных операций в автоматическом режиме, а также эта статья содержит описание приемов работы в AutoCAD и MS Office.

И так, для получения стволов скважин в 3D пространстве необходима информация о пространственном положении их начала и конца, а также значение радиуса скважины. В п. 9 предыдущей статьи были сохранены копии .CSV файлов экспортированных данных точек. Теперь необходимо содержимое двух этих файлов поместить в один столбец нового файла. Затем выполнить разделение данных по столбцам, в порядке, описанном в п. 9 предыдущей статьи, с небольшим изменением в настройке мастера текстов. В этом окне (рис. 1) необходимо кроме запятой указать и пробел в качестве разделителя. (пробел содержится в имени точки).

 1

Рис. 1. Настройка мастера текстов.

          В результате все данные, по каждой точке, находятся в своей ячейке, Как видно по столбцам А, В, С (рис. 2) имя точки ранее бывшим одним единым полем данных теперь разделено на три. Теперь эти три новых поля данных условно можно назвать “имя”, “номер скважины”, “описание”. Разделение исходного столбца имени точки на три необходимо для последующей сортировки данных и группировки “верха” и “низа” каждой скважины в соседние строки. Ка видно на нижеприведенной иллюстрации образовалось два столбца с одинаковым содержимым описания. Сейчас можно удалить любой из этих столбцов, на пример правый. (заголовки столбцов обозначены для наглядности)

 2

Рис. 2. Результат разделения данных.

Теперь необходимо выполнить сортировку имеющихся данных так чтобы данные о верхе и о низе каждой скважины находились в соседних строках (рис. 3). Наиболее подходящим для сортировки является столбец (В) с информацией о номере скважины, который уникален для каждой из скважин. Выполнить это очень просто при помощи инструмента “настраиваемая сортировка”.

 3

Рис. 3. Настраиваемая сортировка.

При этом необходимо выделить диапазон сортируемых данных (рис. 4), т. е. все столбцы с данными и указать столбец, по которому данные будут сортироваться, в данном случае столбец “B” (ном.).

4  

Рис. 4. Настраиваемая сортировка.

В результате выполненной сортировки полученны пары координат верха и низа каждой сскважины. Как видно (рис. 5), данные в каждой паре различаются описанием и разумеется отметкой.

 5

Рис. 5. Результат сортировки данных.

Теперь необходимо поменять местами столбцы “север” и “восток”, т.к. при вводе в командную строку AutoCAD данные вводятся в порядке X,Y,Z, а в Civil’e северу соответствует “Y”, а востоку “X”. Также, для удобства можно перенести столбцы “имя”, “номер” и “описание” в правую часть. Следующим шагом будет перенос данных из MS Excel в MS Word, но нужно чтобы данные попали в MS Word не в виде таблицы, а в виде набора строк данных. Как это сделать напрямую из MS Excel в MS Word я не нашел и воспользовался промежуточным копированием данных в Блокнот (рис. 6), либо сохранением в формате “Текстовые файлы (с разделителями табуляции),  а затем перенос их MS Word, тем самым избавляясь от табличного представления данных.

6

Рис. 6. Данные в Блокноте

 7

Рис. 7. Замена отступа на запятую.

Данные из MS Excel В “Блокноте” разделены символом “→” (отступ), в AutoCAD, в качестве разделителя данных используется запятая. По этому, перед копированием данных из Блокнота в MS Word, заменим “отступ” на “запятую” (рис. 7) инструментом “Найти и заменить”, который также присутствует в Блокноте, в выпадающем меню “Правка”.  Переносим полученный результат в MS Word.

Теперь наступает самый интересный этап: в MS Word нужно написать “плагин” который позволит, по имеющемуся набору данных вычертить стволы скважин в 3D пространстве в автоматическом режиме. Хочу, сразу оговорится, что я не владею ни одним из языков программирования, которые понимает AutoCAD и вообще не знаком с программированием.

По сути, в MS Word нужно превратить набор данных в последовательность команд AutoCAD выполняющих построение стволов скважин в  в 3D пространстве. Наиболее подходящими для отображения скважин в пространстве являются команды “Отрезок” (_line), “3D полилиния” (_3dpoly) и “Цилиндр” (_cylinder). Лучше всего для выполнения имеющейся задачи подходит – цилиндр (_cylinder), т.к. он помимо высоты, положения верха и низа обладает еще и радиусом, как и скважина в реальности.

 Следующей задачей будет разделение всего массива данных на пары “низ” и “верх” каждой скважины; присвоение каждой паре данных команды вычерчивающей цилиндр, с заданием его радиуса. На первый взгляд задача очень трудоемкая, если не знать об уникальных расширенных возможностях инструмента “Найти и заменить” в MS Word,

После копирования данных в MS Word необходимо удалить интервал между строк командой - “Удалить интервал после абзаца”. Затем можно приступить к основным преобразованиям. (Включено отображение всех символов )

 8

Рис. 8. Представление данных в MS Word

Теперь воспользовавшись инструментом “Найти и заменить” превратим, за три действия, весь массив данных  - в набор команд и ответов на запросы этих команд для AutoCAD (рис. 9).

 9

Рис. 9. Запросы команды “Цилиндр” в командной строке

Для этого первый раз необходимо настроить параметры замены следующим образом (рис. 10): в поле “Найти” указать – “верх^p”. Сочетание символов “^p” соответствует символу ¶ (Знак абзаца) который обозначает переход к следующей строке, а в AutoCAD соответствует команде “Ввод” (клавиши Enter/space).

 10

Рис. 10. Настройка замены текста

Затем необходимо указать на что сочетание - “верх¶” будет заменено. Заменить это сочетание нужно на - “верх^p^p_cylinder^p” (сочетание - ^p соответствует символу ¶). Новое сочетание соответствует исходному - “верх¶” после добавлен еще символ ¶ (ввод), отделяющий одну пару данных от другой и команда “_cylinder” также с символом ¶ (ввод) для подтверждения выбора команды и переходу к ответу на запрос команды об указании центра основания цилиндра (рис. 11).

 11

Рис. 11. Добавление команды _cylinder к массиву данных

Как видно на рис. 11, после выполненной операции замены указанных сочетаний, весь массив данных поделен на пары с заданной командой, за исключением первой строки. Перед первой строкой отсутствует команда  “_cylinder”, т. к. перед ней не было сочетания символов “верх¶”, по этому команду перед первой строкой необходимо добавить вручную. Но полученных данных не достаточно для ответа на все запросы команды “_cylinder”.  Не хватает ответа на запрос о радиусе цилиндра.

Добавить сведения о радиусе скважины в массив можно также с помощью команды “Найти и заменить”. Поместить эту информацию нужно между координатами о центре основания и конечной точке оси. Для этого необходимо также выполнить “хитрую” замену сочетаний символов.

Для добавления информации о радиусе, по примеру предыдущей операции, выполним замену сочетания “ни綔 на сочетание - “ни綶0.075¶”.

 12

Рис. 12. Задание радиуса цилиндра

Таким образом, в каждую пару данных добавлена информация о радиусе скважины (рис. 12). Теперь имеются все данные необходимые для выполнения команд по отрисовке скважин. Но в конце строк с информацией о координатах начала и конца цилиндра присутствует лишняя, “служебная” информация об имени, номере, и описании указывающем принадлежности точки к низу или верху цилиндра. Чтобы избавится от этой информации, снова воспользовавшись инструментом  “Найти и заменить”, с новыми настройками замены.  Для начала просто уравняем количество букв в описаниях “низ” и “верх”, удалив из всех “верх” букву – “х”. Для этого в поле “Найти” указываем “верх”, а в поле “Заменить на:” указываем - “вер”. В результате получены описания с одинаковым количеством букв в своем составе. Но эти описания имеют отличия по количеству содержащихся в них цифр, от 1-ой до 3-х из бывшего номера скважины. По этому, выполнять замену придется поочередно три раза с указанием набора из 1-ой, 2-х и 3-х цифр (рис. 13).

 13

Рис.13 Задание комбинаций символов подлежащих замене

При первой замене, в поле “Найти” указываем сочетание символов “,^$^$^$^#^$^$^$”. Сочетание - ^$ соответствует любой букве. Сочетание - ^# обозначает любую цифру. В строке “Заменить на:”  ни ставим ничего, т. е. заменить указанную последовательность символов на “ничего”. Также нужно поставить галочку “Не учитывать знаки препинания” что позволит не прописывать замену двух запятых отделяющих имя, номер и описание, но в строке “Найти”, первым символом необходимо указывать запятую, которая отделяет “служебные данные” от отметки. Эту запятую также необходимо удалить т.к. после ввода координат о местоположении низа или верха цилиндра должна выполняться команд “Ввод” (¶).  При последующих заменах необходимо просто указать необходимое количество символов цифр (,^$^$^$^#^#^$^$^$ - при второй замене; ,^$^$^$^#^#^#^$^$^$ - при третьей замене). Таким образом при первой замене исчезли  18 описаний с номерами содержащих одну цифру; при второй замене – 180 описаний с двумя цифрами: при третьей заменены все остальные (1530) с тремя цифрами.

 14

Рис. 14. Готовый набор команд

В результате получен набор из 864-х команд по отрисовке цилиндров, с определенным радиусом (рис. 14), заданными координатами начала и конца. Остается просто вставить получившийся набор команд в командную строку, и AutoCAD беспрекословно выполнит его. Тут же в 3D пространстве будут, один за другим, возникать стволы скважин.

 15

Рис. 15. Стволы скважин в 3D пространстве. Вид совмещен с полотном выемки.

 

Полученные скважины можно сохранить в отдельный файл и подгружать по необходимости в файл проекта.

Заключение

На данном примере рассмотрен процесс обработки и редактирования массива данных при помощи MS Office и превращения его в набор последовательных команд понятных AutoCAD, без применения специальных средств программирования. Очень надеюсь что, описанный  в статье прием позволит сэкономить не один десяток человеко-часов при обработке массивов данных. А также хотелось бы услышать предложения по оптимизации предложенного мной алгоритма.

Автор: Кирьякиди Сергей Викторович. Место работы: заместитель начальника ПТО оперативной группы в г. Сочи ОАО “Бамстроймеханизация”.

 

На форуме: black_mts

E-mail: black_mts@mail.ru


Комментарии

Комментарии 1-7 из 7
survey_andry
, 29 мая 2013 в 09:58
#7
не знал, что БСМ в Civil 3D что-то делают. еще при мне ,в 2005 году, был диск Кредо в ПТО, который в руки геодезистам не давался)) А шеф случайно не Витя Латынцев?)
trir
, 18 февраля 2013 в 14:37
#6
Это просто формула для Excel'я, пишешь её в ячейку, указываешь ячейки с данными и получаешь строку, которую можно вставить в командную строку АкАд'а
black_mts
, 14 февраля 2013 в 22:14
#5
SergeyAB,
1. Т.е. вы хотите скаъать что, в Экселе можно получить готовый набор команд понятный Автокаду?
2. да, я считаю что это стандартные средства AutoCAD Civil 3D и MS Office, или что команды "найти и заменить" и "Цилиндр" являются дополнительными опциями программ?
2. Что? - "что?"
3. "первые три строчки были ..." ..........?

trir
="(command ""-Вставить"" ""MyPOI"" '("&D5&" "&C5&") 1 1 0 """&A5&""")"

(command "-Вставить" "MyPOI" '(10 20) 1 1 0 "30")
К сожалению я действительно далек от програмирования, для меня пока это сложно.
, 11 февраля 2013 в 07:49
#4
1. ИЗ ЭКСЕЛЯ МОЖНО БЫЛО НЕ ВЫХОДИТЬ, ЕСТЬ ВСЕ ФУНКЦИИ ЧТОБЫ все это сделать.
2. так и не понял зачем это было нужно, первые три строчки были ... т.е. вы считаете что стандартные средства это? что? кароче
-1 за все.
trir
, 05 февраля 2013 в 07:13
#3
="(command ""-Вставить"" ""MyPOI"" '("&D5&" "&C5&") 1 1 0 """&A5&""")"

(command "-Вставить" "MyPOI" '(10 20) 1 1 0 "30")
black_mts
, 04 февраля 2013 в 17:46
#2
Не совсем понятно, можно поподробней по каждому из пунктов.
trir
, 01 февраля 2013 в 13:47
#1
Вместо ^p можно использовать (command "Имя_команды" Атр1 ... АтрN)
Точка будет выглядеть как '(X Y Z)
Такую строку можно получить формулой
Комментарии могут оставлять только зарегистрированные участники
Авторизоваться
Инженерные консультации
Размещение рекламы