Wiki

Clone wiki

profile-via-points / Home

#Profile via points readme.md
© Андрей Бушман, 2010
Email: bushman.andrey@gmail.com


##ЗАДАЧА

  • Реализовать механизм экспорта координат точек из AutoCAD в MS Excel.
  • Предоставить возможность выполнения обратной задачи - на основе координат, полученных из MS Excel, создать в AutoCAD 3D-полилинию и, в случае необходимости, пронумеровать её точки.

##Технические требования

Предоставленное решение должно работать в перечисленных ниже версиях операционной системы и AutoCAD:

  • Windows XP SP3, Windows 7 SP1
  • AutoCAD 2009 SP3 - 2016

###Описание принципов работы * Пользователям нужно иметь возможность указывать различные точки, координаты которых, в свою очередь, должны собираться в таблицу координат во внешний CSV-файл. Полученный файл можно открывать в MS Excel и работать с ним. Все координаты должны сохраняться в пользовательской (т.е. не в мировой) системе координат. * Проектировщик должен иметь возможность указать имя и место расположения создаваемого CSV-файла. В таблице должны содержаться номера точек и их координаты. При запуске команды, пользователь должен иметь возможность указать с какого номера следует начинать нумерацию точек. * Должна присутствовать возможность автоматического внесения изменений в уже существующий CSV-файл. Т.е. пользователь запускает команду проставления нумерации точек в AutoCAD, но при этом может потребовать не создавать новый CSV-файл, но вносить изменения в уже существующий, при этом указав, в какой именно файл. Этот функционал нужен для случая, когда пользователю потребуется исправить значения некоторых, созданных ранее точек (т.е. указать их заново). * Когда проектировщик указывает точку, в этом месте должен отображаться текст с номером точки. При этом пользователь должен иметь возможность передвинуть текст, и/или повернуть его на некоторый угол, в то же время не теряя информации о том, с какой именно точки взята координата. * При наведении курсора мыши на текст, должна появляться подсказка с указанием координат. * При нажатии комбинаций клавиш Ctrl + левая кнопка мыши, должен открываться CSV-файл с соответствующей таблицей координат и при этом в таблице должна автоматически выделяться та строка, которая содержит координаты выбранной в редакторе AutoCAD точки. * Должна присутствовать возможность выполнения обратной задачи - считывание данных из таблицы координат CSV-файла или из внешнего MDB-файла базы данных MS Access, и вычерчивания по ним 3D-полилинии с нумерацией точек или без нумерации - в зависимости от желания пользователя. * При наведении курсора мыши на созданную 3D-полилинию должна появляться подсказка с полным именем CSV-файла, по которому она создана. * При нажатии комбинаций клавиш Ctrl + левая кнопка мыши, должен открываться CSV-файл, в котором содержится таблица координат, на основании которой выполнено построение. * Проектировщик должен иметь возможность указать сколько угодно CSV-файлов за один раз и в результате для каждого из них должно быть выполнено своё построение. * Должна иметься возможность настройки того, какое определение блока AutoCAD следует использовать для формирования отметок, а так же какой атрибут в составе блока должен содержать в себе информацию о номере точки. * Должна иметься возможность указания точности (количество знаков послед запятой) считываемых координат точек. * Должна присутствовать возможность в настройках программы указывать, на каком слое следует размещать создаваемые вхождения блоков.


####Примечание Обязательно следует учитывать тот факт, что текущая система координат в AutoCAD нередко не является глобальной (WCS).


##РЕШЕНИЕ Решение представлено в виде набора команд AutoCAD, перечисленных ниже. Откомпилированную версию решения можно скачать с её страницы: https://bitbucket.org/Andrey-Bushman/profile-via-points/downloads.

###Системные требования

  • Windows XP SP3, Windows 7 SP1.
  • .Net Framework 3.5 SP1 (если AutoCAD 2009).
  • AutoCAD 2009 SP3, 2010, ..., 2016.

####Загрузка расширения в AutoCAD

#####AutoCAD 2009-2011

  1. Скопируйте каталог pvp.bundle на локальный диск вашего компьютера.
  2. В командной строке AutoCAD запустите команду _.NETLOAD и в открывшемся диалоговом окне укажите файл .\Contents\Win\pvp.R17.2.dll.

#####AutoCAD 2012-2016

Вы можете воспользоваться способом, описанным выше применительно к AutoCAD 2009-2011, с тем лишь исключением, что для AutoCAD 2013 и более новых версий нужно вместо pvp.R17.2.dll загружать pvp.R19.0.dll. Однако, начиная с AutoCAD 2012, достаточно лишь скопировать каталог pvp.bundle в один из следующих каталогов (в этом случае AutoCAD 2012-2016 будет загружать пакет автоматически, при первом вызове любой команды, определённой в составе этого пакета):

  • %APPDATA%/Autodesk/ApplicationPlugins.
  • %ProgramData%/Autodesk/ApplicationPlugins (кроме AutoCAD 2012).
  • %ProgramFiles%/Autodesk/ApplicationPlugins.

####КОМАНДЫ, ОПРЕДЕЛЁННЫЕ В СОСТАВЕ БИБЛИОТЕКИ

  • InsertNumber - команда добавляет в чертёж нумерацию в виде вхождений блоков, при этом указанные точки вставки дополнительно оформляются в виде таблицы, сохраняемой во внешний CSV-файл.
  • JoinPoints - команда вычерчивает 3D-полилинию по точкам, считываемым из CSV-файла. Точки считываются и проставляются в том порядке, в котором они записаны в CSV-файле.
  • JoinPointsMdb - команда вычерчивает 3D-полилинию по точкам, считываемым из MDB-файла (файл базы данных MS Access). Точки считываются и проставляются в том порядке, в котором они записаны в CSV-файле.

##Видео

Команды, определённые в составе приложения и используемые в видео, переименованы. Выше по тексту указаны их текущие имена.

##Скрины

Диалоговое окно создания нового csv-файла (аналогично выполняется пересохранение):

0.png

Результат работы команды:

1.png

Содержимое полученного в процессе работы csv-файла:

2.png

###Пример работы команды, выполняющей извлечение точек из таблицы координат, с прорисовкой 3D-полилинии и простановкой нумерации точек.

Диалоговое окно выбора csv-файлов, на основании которых должны быть выполнены построения (в примере выбрано три файла):

3.png

Результат работы команды

4.png

Если вызвать гиперссылку для вхождения блока - открывается csv-файл источника и выделяется строка, содержащая координаты вставки того вхождения, для которого вызвана гиперсссылка:

5.png

Для того, чтобы построить трассу по данным, считанным из базы данных MS Access, нужно вызвать команду JoinPointsMdb. Откроется такое диалоговое окошко:

6.png

В нём отмечаете интересующие вас трассы, жмёте кнопку "выполнить построение", отвечаете на вопрос в командной строке и получаете нужный результат.

В mdb-файле присутствует форма @_frmMain, с помощью которой удобно работать с информацией, сохраняемой в базу данных. Выглядит это так:

7.png

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

8.png

На скрине показано 5 вхождений блока, в которых произведены различные изменения - перемещён/повёрнут текст атрибута. Изначально, при вставке вхождение имеет вид как для точки с номером 1 (крайняя левая).

В редакторе блока определение выглядит так:

9.png

Updated