![]() |
+7 (495) 229-0436 | ![]() |
shopadmin@itshop.ru | 119334, г. Москва, ул. Бардина, д. 4, корп. 3 | ![]() |
![]() |
![]() |
|
|
Связка AutoCAD+Delphi. Рабочий пример простого приложения09.11.2011 11:11
Валерий Кострецкий
Для увеличения производительности и расширения возможностей AutoCAD многие проектировщики пользуются программами, написанными на встроенном языке AutoLISP (назовем их для краткости LISP-программами). Недостатком в работе с такими программами является неудобство, особенно для неопытных пользователей, ввода-вывода информации через командную строку AutoCAD. Добавление диалоговых окон решает проблему лишь отчасти, поскольку их возможности ограничены и они значительно увеличивают объем исходного кода самой LISP-программы. Более практичным решением этой задачи является использование связки AutoCAD и системы программирования Delphi, где AutoCAD выполняет роль сервера, а программа-приложение - роль клиента. В статье рассматривается пример такой связки. Это простое приложение к AutoCAD, имеющее интерфейс обычных Windows-приложений. ![]() Оно запускается из AutoCAD, после ввода параметров формирует внешний текстовой INI-файл и загружает LISP-программу, которая отрисовывает деталь по данным из текстового файла, в нашем примере - трехмерную пружину.
![]() По сравнению с технологией черчения из Delphi напрямую, без промежуточных файлов, описываемый метод имеет свои положительные особенности. Разработка приложения. Все файлы приложения удобнее размещать в одной директории, в нашем примере это будет C:\Unit_1. Сюда мы поместим два файла helix.exe (исполняемый файл приложения) и helix.lsp (LISP-программа), сюда же будет записываться и промежуточный файл helix.ini. Можно было бы предусмотреть построение технологически более сложных пружин растяжения и сжатия, но для понимания принципа работы приложения достаточно будет самой простой пружины-спирали. Теперь все готово для разработки приложения. Установите на форму указанные выше компоненты, свойству ItemIndex переключателя RadioGroup1 присвойте значение 0, удалите исходный текст из текстовых полей, свойствам Caption кнопок Button1 и Button2 присвойте значение "ПОСТРОИТЬ" и "ЗАКРЫТЬ". Этап1.Формирование текстового файла - базы данных детали. Основную работу приложения выполняет процедура, обрабатывающая событие Button1Click - щелчек на кнопке "ПОСТРОИТЬ". В раздел описания переменных процедуры TForm1.Button1Click запишем новую переменную rec для работы с файлом Далее в указанной директории (в нашем примере - 'C:\Unit_1') создается INI-файл helix.ini, в который с помощью процедуры WriteString происходит построчная запись пареметров детали. В INI-файл в секциях записываются значения радиуса и высоты пружины, толщины ее профиля, которые считываются из соответствующих текстовых полей Edit1, Edit2, Edit3 и Edit4. В последней строке записывается признак направления витков пружины (0 - против и 1 - по часовой стрелке). В конце записи закрывается сеанс работы с файлом: После записи INI-файл будет иметь примерно такой вид: Обратите внимание на соотношение двух параметров: вертикального шага витка Step_v и толщины профиля RP. Когда толщина профиля будет больше, чем половина шага, то витки сольются и деталь уже не будет выглядеть пружиной, а превратится в резьбу с круглым профилем, эту ситуацию можно использовать для построения резьбовых деталей. Команду на загрузку LISP-программы helix.lsp мы посылаем в AutoCAD как строковую переменную. Обратите внимание на то, что в Object Pascal строковая переменная ограничивается одиночными кавычками, а в AutoLISP - двойными, а при указании пути к файлу в AutoLISP используется обратный двойной слэш, в отличие от двойного слэша в комментариях программ на Pascal, эти особенности синтаксиса разных программ нужно иметь ввиду. AutoCAD требует в завершении ввода команды нажать Enter, поэтому в строчку добавляется код этой клавиши #13. Если LISP-программа оформлена как функция, то после ее загрузки посылается команда на выполнение этой функции В коде программы нашего приложения приложения есть еще две процедуры. Одна из них TForm1.Edit1KeyPress защищает от ошибок при вводе данных. Она позволяет вводить в цифровые поля только цифры от 0 до 9 и точку - десятичный разделитель: Другая процедура (Button2Click) просто закрывает приложение без построения детали. Ниже приведет полный листинг программы, добавленные нами операторы подчеркнуты. interface uses type private var implementation {$R *.DFM} procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char); procedure TForm1.Button1Click(Sender: TObject); procedure TForm1.Button2Click(Sender: TObject); Далее запускается LISP-программа, под управлением которой AutoCAD отрисовывает деталь. Этап 2. Передача данных из текстового файла в LISP-программу. Так как LISP-программа построения пружины приводится в качестве примера и на ее месте может быть любая другая, то нет необходимости детально описывать ее работу, особенно "рисующей" части. Подробнее становимся только на той части программы, которая считывает данные из INI-файла и инициализирует переменные. Этап 3. Построение пружины. В нашем примере пружина будет строиться экструдированием окружности вдоль спирального пути, построенном трехмерной полилинией (3DPoly). AutoCAD отмечает первую точку p1 и ожидает координаты следующей, которые будут ему передаваться в цикле while (< z H) - до тех пор, пока текущая высота спирали z не сравняется с параметром H. Следующая точка находится из простых геометрических построений, если рассматривать треугольник, объединяющий обе точки и начало координат предварительно угол поворота из градусов переводится в радианы И, наконец, добавляется приращение по координате Z, расчитанное как вертикальный шаг витка Step_v, разбитый на 36 участков Все три координаты текущей точки передаются в графический редактор AutoCAD через команду после чего следует расчет новой точки и так до конца цикла. Чтобы угол поворота на накапливался до больших значений, после каждого оборота его следует сбрасывать до исходного Когда цикл построения спирали завершен, ей, как последнему неудаленному графическому примитиву присваивается системное имя на которое будет ссылка при указании пути экструдирования. Далее создается ПСК и устанавливается в стартовую точку спирали с поворотом на 90 градусов по оси Х В этой точке строится окружность радиуса RP перпендикулярно направлению оси спирали этой окружности присваивается имя и восстанавливается МСК Последним решающим действием является собственно построение пружины командой После отрисовки пружины можно опять строить пружину с новыми параметрами или закрыть приложение и полностью перейти в AutoCAD. (defun C:helix (/ f k lin str i rep lt k R Step_v H RP NV a_gr a_rad p1 R os x y z helix profil ) (command "_3Dpoly" p1) (command (list x y z)) Когда приложение отлажено и доведено до рабочего состояния его можно запускать непосредственно из AutoCAD кнопкой с макросом Ссылки по теме |
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
О нас |
Интернет-магазин ITShop.ru предлагает широкий спектр услуг информационных технологий и ПО.
На протяжении многих лет интернет-магазин предлагает товары и услуги, ориентированные на бизнес-пользователей и специалистов по информационным технологиям. Хорошие отзывы постоянных клиентов и высокий уровень специалистов позволяет получить наивысший результат при совместной работе. В нашем магазине вы можете приобрести лицензионное ПО выбрав необходимое из широкого спектра и ассортимента по самым доступным ценам. Наши менеджеры любезно помогут определиться с выбором ПО, которое необходимо именно вам. Также мы проводим учебные курсы. Мы приглашаем к сотрудничеству учебные центры, организаторов семинаров и бизнес-тренингов, преподавателей. Сфера сотрудничества - продвижение бизнес-тренингов и курсов обучения по информационным технологиям.
|
119334, г. Москва, ул. Бардина, д. 4, корп. 3 +7 (495) 229-0436 shopadmin@itshop.ru |
|
© ООО "Interface Ltd." Продаем программное обеспечение с 1990 года |