Свободная CAD-система LiteCAD (ранее VeCAD) с инструментами для разработки программ. В поисках инструментов для разработки ВНЕШНИХ по отношению к xxxx-CAD системам пользовательских программ совершенно случайно обнаружил уникальную разработку нашего соотечественника. Вспомнились строки из В.Высоцкого "... Пророков нет в Отечестве своем, но и в других отечествах не густо." Это к тому, что упоминаний об этой уникаальной разработке практически нет. А она интересна вот по каким параметрам: 1. компактность (полная версия не более 15 МБ - и это с пакетом шрифтов) 2. близость объектной модели к Auto-CAD'у 3. конвентация своего формата LCD в форматы DXF и DWG и работа с чертежами этих форматов 4. интерфейс во много похожий на интерфейс Auto-CAD (смотреть БЕСПЛАТНЫЙ авторский редактор) 5. возможность создавать на базе SDK (платного, но целиком доступного для работы) пользовательские программы на языках: а) MS-VB5(6), MS-VBNet, б) C++, C# в) Delphi (Pascal) г) VisualFoxPro д) C (без плюсов) е) FreeBasic (BCX в частности) Последние 2 варианта не были указаны автором, но я попробовал и получил работающие варианты. Смотреть в приложении. Инструмент разработки программ позволяет как расширять существующий функционал системы, так и изменять ее в нужном пользователю направлении (вплоть до неузнаваемости). Это не еще один ZwCAD это нечто другое и довольно интересное. Ссылки: предыдущая модель системы VeCAD VeCAD VeCAD DLL/OCX 6.0 Free Download vecad6.zip 6.5 MB http://vecad-dll-ocx.soft32.com/ http://vecad-dll-ocx.soft32.com/get...=1356510749&ext=.zip&no_download_manager=true http://vecad-dll-ocx.soft32.com/get...=1356510957&ext=.zip&no_download_manager=true http://vecad-dll-ocx.soft32.com/badges Текущая модель системы LiteCAD www.kolbasoft.com Приложение - редактор на языке FreeBasic(BCX)-->C-->EXE
В дополнение к первому приложению: Приложение - редактор на языке Pelles-C (C без плюсов)-->EXE (исходники и готовый EXE-файл) Можно посмотреть тему на "буржуйском" сайте: http://forum.pellesc.de/index.php?topic=5099.0 Примечание: для работы программ (этой и в предыдущем посте) необходимо и достаточно иметь в том же каталоге библиотеку автора: файл LiteCAD.dll - он находится в архиве http://www.kolbasoft.com/litecad.zip (сайт автора).
Это "самодельный" редактор liteCAD-Editor2 сделанный с использованием SDK - "инструмента для разработки программ". Все это бесплатно (спасибо автору - Олегу Колбаскину), поэтому на черном фоне чертежа крупная надпись красным цветом: "UNREGISTERED LITECAD". (Она не сильно мешает. В его шикарном и бесплатном редакторе этой надписи нет.) Язык программирования СИ (просто СИ - без плюсов), конкретно это Pelles-C. В меню добавил пункт UserUtils-->Strelka: подпрограмма запрашивает у пользователя 2 точки, ставит эти 2 точки (Point), рисует по ним линию (Line), подписывает точки (Text), а затем на 1-й точке строит стрелку (PolyLine) и копирует стрелку 4 раза со смещением и с углом разворота через 90 градусов, вокруг исходной. Это всего-лишь заготовка ПОЛЬЗОВАТЕЛЬСКОЙ программы, а также иллюстрация добавления в проект диалоговых окон для пользователя (естественно силами СИ-программиста). Включил работу гориз. и вертик. стрелок-разделителей для синхронного изменения главных окон программы (Drawing--Properties--CommandLine). Включил работу кнопок в StatusBar. Для тех, кто не хочет (не может) скачивать авторский пакет LiteCAD, но хотел бы посмотреть, как это выглядит. Внутри моего проекта есть: 1. главный файл LiteCAD.dll (упакован в RAR архив) 2. несколько файлов шрифтов (самые необходимые). Таким образом скомпилированный liteCADeditor2.exe можно запускать из папки проекта и смотреть его в работе. В папке проекта лежат ВСЕ ИСХОДНЫЕ ФАЙЛЫ на СИ. Я понимаю, что здесь СИ-программистов не густо, но все же ...
А вот скриншот загруженного (самодельного) редактора liteCADeditor2.exe К слову сказать его (редактора) размер всего 83 КБ (без всяких оптимизаций).
Читаю LiteCAD.chm, смотрю примеры и включаю что-то в свою программу. Иллюстрация самых простых построений и использования свойств примитивов Point, Line, PolyLine, Text программными средствами. В правом нижнем углу построены стрелки как полилинии на точке 1 (линия 1-2), имеющие свой (не по слою) цвет. В левом верхнем углу построены стрелки на точке 2 как полилинии, имеющие свой (не по слою) цвет. К первой (исходной) стрелке добавлен текст "Arrow" также своим цветом и своей высотой. Затем стрелка и текст включены в блок "strelka" и этот блок размножен вокруг 2-й точки (линия 1-2) 4 раза со смещением и разворотом через 90 градусов. Построение сохранено в формате LCD (6 КБ) и в формате DWG 2005 (198 КБ) - почувствуйте разницу. На скриншотах: 1. построение в самодельной программе LiteCADEditor2.exe - LiteCAD + SDK видно надпись красного цвета "UNREGISTERED LITECAD" - это о том, что SDK имеет халявное происхождение. 2. сохраненный чертеж Strelka1.lcd открыт в авторском редакторе LiteCAD.exe грозной надписи нет - бо редактор БЕСПЛАТНЫЙ. 3. чертеж Strelka1.lcd сохранен как Strelka1.dwg (2005) и открыт в АвтоКАД'е.
1. Потребовался выход из цикла в пользовательской функции (не LiteCAD) по клавише ESC. При этом курсор находится в окне LiteCAD DWG. Функция запрашивает у пользователя пары точек и сразу обрабатывает их. Для клавиши ESC параметр VirtKey = 27 Вот как это выглядит (userutils1.c): int intKey; // to bipass ESC in loop while() void CALLBACK KeyDown (HANDLE hWnd, int VirtKey, int Flags, BOOL bCtrl, BOOL bShift ) { if ( VirtKey == 27 ) { intKey = VirtKey; } } void GetStrelka12 (float fArrowScale) { ... ... ... // do user-cicle for entering pair-points 1-2 while ( 1 ) { lcOnEventKeyDown ( KeyDown ); // !!! Invoke CALLBACK-function if ( intKey == 27 ) { MessageBox( NULL, TEXT("the key ESCAPE is pressed"), TEXT("Event2"), MB_OK); break; // terminate loop while() } ... ... ... } } 2. Для более быстрого (чем из меню) вызова функций LiteCAD добавил две панели ToolBar: HWND CreateTbarMain ( HWND hWndParent, HINSTANCE hInst ); HWND CreateTbarDraw ( HWND hWndParent, HINSTANCE hInst ); Использовал toolbar.bmp и draw.bmp из VeCAD (в исходниках LiteCAD эти bitmap панели к сожалению отсутствуют). Надо добавить вертикальные панели edit.bmp, format.bmp, dims.bmp, tbsnap.bmp, но пока это получается плохо - перестает работать vertical-splitter, появляются другие побочные эффекты. Теперь пользовательская подпрограмма Strelka работает, см. приложение.
Исходники и исполняемый exe-файл Теперь пользовательская подпрограмма Strelka работает, см. приложение.
LiteCAD для топографии и строительной геодезии. Вычисления и представление объемов между двумя поверхностями, представленными в виде TIN, для меня особенно интересны. Но LiteCAD имеет только один по-настоящему 3-мерный примитив - точку (Point). Есть еще объект-структура TIN, состоящий из объектов 3-мерных граней, но это не 3dFace, принятые (например в AutoCAD) как базовый примитив для построения TIN, а 3-точечный объект. Из того, что я знаю, TIN строится по 3-мерным точкам в виде треугольников, чаще всего методом "триангуляция Делоне". При этом принято "замыкать" треугольник через дублирование первой его вершины так: 1-2-3-1. Таким образом 3dFace есть 3dPolyLine из 4-х узлов (Vertex), где 1-й и последний узел (точка) совпадают. Полилиния (PolyLine) в LiteCAD (как и в других CAD-системах) есть плоский примитив, по умолчанию имеющий Z=0.00 для всех узлов, но может иметь и Z<>0.00. Поэтому я строю в LiteCAD 3d полилинию (3dPolyLine) по 3-мерным точкам в виде плоской PolyLine с сохранением отдельно Z-координат для каждого узла. Для возможного обмена данными с другими программами, работающими с 3dFace и 3dPolyLine я вижу только один способ: экспорт-импорт через текстовый файл. Немного исправил работу подпрограмм: users Utils -> Draw 3dFaces Users1 -> Draw Surface Добавил в программу LiteCAD-Editor2 (menu "Users Utils" -> Users1...): а) SDR-Export - это функция для экспорта примитивов LiteCAD (Point, Line, PolyLine ...) в 2 файла: 1. тахеометры Sokkia (SDR-33 протокол) фал работы (job file) 2. другие тахеометры (например Lieca) свободны формат с разделителем данных запятая. б) Export3dFaces Import3dFaces ExportPoints ImportPoints это функции для совместимости с внешними программами, они пишут в файл и читают из файла PolyLines имитирующие 3dFace и 3dPoints.
1. Язык заклятых друзей изучаю. Было чудо, когда один американец вдруг ответил мне по-русски, но он несколько лет работал на Украине и увез оттуда жену. 2. Тема актуальна только за бугром (ну нет у них Горбушки, Савеловского, Митинского рынков, чтобы купить АвтоКАД). Если интерфес (кнопочки и прочее) прописать на Великом и могучем, то не о чем с ними будет говорить. Аглицкий принят для общения по умолчанию. Чтобы зауважали кириллицу нужна "Кузькина мать" - а она пока в отпуске. 3. Авторский редактор LiteCAD можно переключать на русский язык и другие европейские, но я пока не освоил это переключение в своем варианте редактора - похоже надо писать файл соответствий рус-анг. - это отвлекает от главного. Смотреть скриншот: А по сути LiteCAD - какие есть мысли? Мне один коллега рассказал, как в командировке (не досмотрели в прорабской бытовке) кто-то поковырялся в его ноутбуке и "Митинский" АвтоКАД перестал загружаться. Дистрибутив он с собой не брал, купить там негде и была реальная ж..а! Надо открывать файлы проекта и забивать проектные точки в тахеометр, а нечем.
Реальная история, за сказанное отвечаю. (Можно удалить - на усмотрение модератора) В солидную организацию пришли дяденьки, опечатали системные блоки и унесли их на исследование. Те до кого не дошли, задумались о том, чем заменить некоторые "сносимые" программы. Ребята реально рассудили, что "стрелочниками" могут оказаться они, а не их начальники, которые пожлобились купить необходимые для работы программы. Те из наших коллег, кто уже столкнулся с такими делами, здесь писать об этом не будут - не до того им, да и кому охота "трясти грязным бельем". Но как сказал кто-то: "Предупрежден, значит вооружен".
Есть программа, которая записывает точки маршрута спутникового приемника или навигатора в текстовый файл. При этом строки имеют следующий вид: ROVER TOW 373889.96875000 WN 1700 - GPS time B 55.65302785 L 37.56813404 H 239.240 - geodetic coordinates X 2858970.698 Y 2199171.819 Z 5242953.156 - geocentric coordinates Добавил в LiteCAD-Editor2 подпрограмму "Import GNSS-Points", которая выбирает только строки начинающиеся с "X " На скриншоте видно точки выбранные из файла xxxxxxx-coords.txt (внизу часть этого файла). Теперь можно более тесно интегрировать спутниковую навигацию с LiteCAD. Скриншот:
Программа предполагает и топографическую съемку, поэтому добавил подпрограмму для этого случая. При этом строки имеют несколько иной вид: ROVER TOW 342634.00 AntennaHight 1.000 - GPS time & Antenna-Hight X 2858959.000 Y 2199176.000 Z 5242934.000 - geocentric coordinates PntNum 2001 EpocCount 10 StartTOW 342624.00000000 StopTOW 342634.00000000 X 2858959.000 Y 2199176.400 Z 5242934.000 dX 0.000 dY 2.600 dZ -1.000 Code ROAD begin - эта строка более "насыщенная", кроме номера точки содержит количество эпох записанных на ней, старт и стоп время, координаты, поправки к координатам от базовой станции и кодирование точки. Добавил в LiteCAD-Editor2 подпрограмму "Import Survey-GNSS", которая сначала выбирает строку с высотой антенны над землей, а затем строку записанной съемочной, точки, начинающиеся соответственно с "TOW " и с "PntNum " На скриншоте видно точки выбранные из файла xxxxxxx-coords.txt (внизу часть этого файла). Скриншот:
Интеграция спутниковых измерений с CAD-системой Выкладываю "кучкой" в том смысле, что одним файлом 3 программы: GNSS-Monitor4 (попроще), GNSS-Monitor3 (посложнее), LiteCAD-Editor2 (для просмотра данных в CAD), там же несколько скриншотов (чтобы полупить глазки). Подробности в теме: http://geodesist.ru/forum/threads/П...вигаторами-в-практике-геодезиста.5101/page-21
Обновление программы LiteCAD-Editor2 Добавлены 3 вертикальные панели инструментов: Edit (редактировать), Snap (привязки), Dim(ensions) (размеры). Их видно на скриншоте. Надо добавить Tips (подсказки) ко всем иконкам инструментальных панелей, но пока не получается.
ToolTips - всплывающие текстовые подсказки Для тех, кто мало знаком с CAD-системами иконки в инструментальных панеля мало о чем говорят. Для большей информативности делаются ToolTips - всплывающие текстовые подсказки. Подсказка появляется при наведении курсора мыши на иконку. Добавил такие подсказки для каждой иконки во всех 6-ти инструментальных панелях.
LiteCAD стал достаточно трехмерным, чтобы работать с нерегулярными поверхностями (частный случай - топографическая съемка). Добавил в свою реализацию редактора программу с громким названием "ROAD" - "ДОРОГА". Работает с 3dFace'ами и 3dPolyLine'аим. Строит от проектной осевой 3d-полилинии проектный профиль дороги ( вариант: траншеи-насыпи) с построением откосов по СНиПу. Откосы выводятся на существующую поверхность земли (топосъемка в виде 3dFaces). 3dFaces можно строить вручную. Описание работы внутри архива. Но оно и весь интерфейс , как заметил здесь ak_evg Будет интерес/заявка - переведу на Великий и Могучий. P.S. Внутри архива только EXE-файл моего редактора. Для работы нужен как минимум файл LiteCAD.dll - выкладываю отдельно.
Добавил несколько вспомогательных под-программ для работы с 3d-примитивами и поверхностями. Почти все они объединены в пользовательском окне "Users2 ROAD". Это подпрограммы построения и модификации 3d-примитивов, из которых строится трехмерный профиль дороги (или в более общем смысле насыпи-траншеи). Построенный профиль можно обрабатывать в программах считающих объемы (например в Credo-...). В поверхности, построенной из 3dFace трудно разглядеть пропущенные места -"дырки". Вот одна из под-программ "Scan 3dFaces": 1. открыть файл LC-hatch3dfaces.lcd (места, где специально удалены 3dFace помечены жирными белыми окружностями) 2. меню -> Users Utils -> Users2... 3. в появившемся окне "Users2 ROAD" нажать кнопку "Scan 3dFaces" 4. на открытом чертеже все грани (3dFace) будут залиты серым цветом а пропущенные при построении поверхности места будут черными "заплатками" Их можно заполнить вручную: кнопка "Draw 3dFace" все в том же окне "Users2 ROAD". Но удобнее перед этим закрыть видимость только что созданного слоя "Hatch" (меню -> Format -> Layers...)