|
||
| Правила | Регистрация | Пользователи | Сообщения за день | | Поиск | | Справка по форуму | Файлообменник | |
|
![]() |
Поиск в этой теме |
![]() |
#1 | |
Создание диалоговых окон в AutoCAD
Программист
г.Иркутск
Регистрация: 06.03.2008
Сообщений: 52
|
||
Просмотров: 60361
|
|
||||
IT, LISP, ACAD, LDD Регистрация: 04.06.2008
Иркутск
Сообщений: 14
![]() |
ObjectDCL теперь стал бесплатным и называется OpenDCL http://opendcl.com/wordpress/
|
|||
![]() |
|
||||
Установил OpenDCL, посмотрел примеры, протестил в акаде ёёёёууууу это реал тема а главное бесплатно!!!!!!!
Вот ссылочка со скринами (что может эта прога): http://opendcl.com/wordpress/?page_id=9 |
||||
![]() |
|
||||
Thượng Tá Quân Đội Nhân Dân Việt Nam Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,372
|
Поосторожнее с восторгами.
OpenDCL - это дополнительный посредник, причем коварный. Коварство: 1. В основе - ARX, то есть привязка к конкретным версиям AutoCAD и среды разработки. Поменяется в очередной раз сочетание - надо и это менять. 2. Да, стал бесплатный и Open Source. Но это означает, что всё держится на энтузиазме, который быстро иссякает. Конечным потребителям (прикладным разработчикам на ObjectDCL) это может кончиться крахом. Бесплатный сыр. 3. Требуется изучать и саму эту систему. А какие альтернативы? 1. ObjectARX, в котором можно делать всё. Но, так как интересуют диалоговые окна, есть второй вариант. 2. COM. Это не "VB6 как ActiveX dll", это гораздо шире. VB как раз не лучший вариант, хотя возможно и его использовать, но можно работать вообще в любой среде программирования, поддерживающей COM. Например, Delphi, TurboXXX и что угодно. И если интересует TreeView, то для Delphi есть такие компоненты этого класса, рядом с которыми штатны виндовый нервно курит в сторонке. В чем проблема-то? В регистрации DLL? Так это инсталлятор сделает, а даже если его делать лень, то это один щелчок мышкой. Но зато работает с любыми существующими и будущими версиями AutoCAD. 3. Создание диалога в отдельном приложении (не COM-dll), но так написанном, что пользователь просто этого и не заметит. Для него это просто модальный диалог, вылетающий в нужное время. Писать можно вообще на чем угодно. Не зависит от версий чего бы то ни было. 4. DotNET. Тоже перспектива, так как для AutoCAD уже нет возврата. Сред разработки уже хватает. Выбор большой, но выбор надо делать правильный. |
|||
![]() |
|
||||
IT, LISP, ACAD, LDD Регистрация: 04.06.2008
Иркутск
Сообщений: 14
![]() |
Цитата:
Присматриваюсь к ObjectARX не только из-за диалоговых окон. Если я правильно понимаю то ObjectARX тоже привязан к ядру AutoCAD. И для каждого ядра требуется свой компилятор и его придется покупать. Подскажите есть ли бесплатные компиляторы для ObjectARX. |
|||
![]() |
|
||||
На дэльфях сам знаю что есть такие компоненты что даже винда курит,
ибо я програмировал и на Delphi и на СИ и на VBA и на VB6, черт возьми да я даже на бейсик УКН программил, я это прекрасно знаю что можно и на дельфях и на турбоХХХ замутить. Если потребуется я даж могу проги под акад прям на дельфях писать, и непариться, но я хочу освоить ЛИСП. Если уж на то пошло, то программить диалоговые окна нужно на ObjectARX он же С++ (Visual Studio). Для профессиональной разработки диалоговых окон круче нет, но даже мне знающему СИ++ тяжело изучать всю эту систему, не все так просто. Я только начал изучать ObjectARX и в дальнейшем собираюсь писать на нем проги под акад. |
||||
![]() |
|
||||
Thượng Tá Quân Đội Nhân Dân Việt Nam Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,372
|
Цитата:
Кстати, хоть OA и круче всех, но подобного VirtualTreeView в нем не найдете. Хотя, конечно, теоретически на C++ можно сделать всё. Только у одних можно, а у других уже сделано. |
|||
![]() |
|
||||
С этим я полностью согласен, OA незаменимая вещь при разработке сложных интерфейсов и программ, хотя.... впринцепе сложные программы можно написать и на самом лиспе да и интерфейс на DCL можно построить от которого у всех будет башню сносить.
Но все же одно можно сказать точно OA-ом обычно пользуются профессионалы потому что разработка программ на OA требует хороших знаний самого c++, дапустим разработка MFC приложений (это непросто оконные приложения типа Windows Form Application а нечто другое). |
||||
![]() |
|
||||
Thượng Tá Quân Đội Nhân Dân Việt Nam Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,372
|
Цитата:
Сложный интерфейс можно легко сделать, имея разработанные кем-то наворочанные визуальные компоненты. В OA их как раз нет. И даже приложение ARX можно написать без ObjectARX и вообще без MS C++. Это всего-лишь DLL с расширением ARX и тремя специальными обязательными функциями. Только в AutoCAD 15 и более поздних такой ARX не выполнить, так как MS и Autodesk сговорились "пущать" только приложения, выполненные в средах разработки Microsoft. А вот для R14 делали ARX прямо в Delphi. Конечно такой ARX не мог использовать возможностей библиотек OA, но вот MFC, любые диалоги или использование WinAPI - пожалуйста. Вот что действительно можно сделать только в ObjectARX: а) Создание собственных объектов, а не только стандартных примитивов AutoCAD. Например, объект PIPE со своими свойствами (диаметр, стенка, длина и т.д.) б) Доступ к таким кишочкам Автокада, куда не добраться средствами COM или штатных функций LISP. в) Создание доступных в LISP функций, использующих возможности а) и б). |
|||
![]() |
|
||||
Инженер LISP Регистрация: 11.05.2005
Минск
Сообщений: 6,996
|
http://web2.airmail.net/terrycad/Tut.../MyDialogs.htm
http://www.jefferypsanders.com/autolisp_DCL.html http://www.levins.land.ru/index.html
__________________
Как использовать код на Лиспе читаем здесь |
|||
![]() |
|
||||
Прошу прощения, ошибочка с формой вышла :-(
Последний раз редактировалось MCAD, 09.07.2008 в 16:13. Причина: сорри, оффтоп |
||||
![]() |
|
||||
Цитата:
|
||||
![]() |
|
||||
Thượng Tá Quân Đội Nhân Dân Việt Nam Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,372
|
А когда-то приложения к AutoCAD можно было делать с любой средой программирования на C++. Мы Borland C++ 2 использовали. А потом они сговорились. Причем очень подло. Одна из обязательных функций в ARX должна возвращать номер версии в виде числа 14, 15, 16 и т.д - по версии Автокада. Это резонно. Но если напишешь свою такую функцию, то выяснится, что работать не будет. Что-то контроль версии делает побочное, разумеется, недокументированное. И не пускает "собак и китайцев".
Вот поэтому я и использую только COM, так как custom-объекты мне не нужны. |
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,407
|
V.Khomyakov, Makswell, поищите по словам "веб-макрос"
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Вот ссылка:
http://forum.dwg.ru/showpost.php?p=266764&postcount=13 Про Advanced Script Host я выложил 8.0, но уже вышла 8.2 версия и эта штука условно-бесплатная 10$ стоит, но как это купить? Там с карточками как-то крутят. Если кто-то скачает новую версию и расскажет мне как ее купить - буду очень признателен. |
||||
![]() |
|
||||
Очень сильно интересуюсь кто и что видит вот по этой ссылке:
http://www.shareup.com/getfile.php?v...t%2Fdialog.exe |
||||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,407
|
Страница удалена как устаревшая
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Новость дня. Выложенная мною прога Advanced Script Host 8.0 и успешно скачиваемая в течении недели, вдруг безследно исчезла из Данлоадса.
В сети эту прогу кто-то очень сильно недолюбливает и все скачки ее наглухо закупорены переадресовщиками. И тут вдруг она исчезла. Может ее прямо в тему выложить? |
||||
![]() |
|
||||
Помогаю, кому делать нечего. Регистрация: 27.03.2009
Русская деревня
Сообщений: 394
|
Можеть быть кто-то знает как организовать временный выход из диал. окна, вызванного самодельной lisp программой, для панорамирования и зуммирования чертежа, чтобы при этом окно оставалось видимым.
|
|||
![]() |
|
||||
Остекляем!!! Алюминим!!! Регистрация: 21.02.2005
Москва
Сообщений: 3,917
![]() |
Цитата:
__________________
Мы можем делать быстро, качественно и недорого, выбирайте любые 2 условия.:search: |
|||
![]() |
|
||||
И всё таки. Есть ли варианты?
При написании программы(AutoLISP) с диалогом(DCL), почти половина времени уходит на создание(описание) диалога, даже больше на его оформление, элементы почти всегда игнорируют заданное им выравнивание, приходится space-ами их выравнивать врукопашную, ну и прочие неудобства. Постоянно читаю подобные темы, вижу что вроде чего-то советуют, вроде там не сложно ..., на том языке можно ..., но кроме AutoLISP больше ни чего не видел и не знаю, даже не знаю к чему и с какого края подступиться. Есть тема Научите лиспу на примере (или как kpblc, VVA и компания пытаются обучить чайника лиспу), так можно в этой, так же для чайников, научите создавать диалоги не DCL, но для AutoLISP. Или если решил двигаться дальше DCL, то и AutoLISP хоронить? Хотел придумать какой нибудь простой пример LISP + DCL, но так ни чего коротенького и простого на ум не приходит, сразу начинается куча проверок на корректность ввода данных в диалоге, сразу охота поставить зависимость одних элементов, от введенного значения других, ... Может уже у кого есть простенькая связка LISP + неDCLдиалог для разбора?
__________________
Почему все вдруг становятся умными, когда уже не надо? |
||||
![]() |
|
||||
Цитата:
Я как-то интереса ради написал маленький пример LISP функции, написанной на .NET здесь. Полагаю, что и диалоговые окошки можно прикрутить аналогично.
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome: |
||||
![]() |
|
||||
Конечно. И соответственно Disney придётся изучить один из .NET языков.
Disney, здесь целая ветка форума посвящена OpenDCL: http://www.theswamp.org/index.php?board=63.0
__________________
Сообщество программистов Autodesk в СНГ - техническая поддержка Последний раз редактировалось Александр Ривилис, 05.12.2012 в 12:40. |
||||
![]() |
|
||||
Цитата:
![]() hwd, спасибо, но опять ![]() Пожалуйста, можно для тупых, маленький примерчик, чтоб я хоть чуть-чуть зацепился, и либо стал изучать, либо отказался от этой идеи, изучать неизвестный язык тупо из любопытства очень сложно.
__________________
Почему все вдруг становятся умными, когда уже не надо? |
||||
![]() |
|
||||
Это на твоё усмотрение. Что ближе C#, VB.NET, F# и еще какие-то...
__________________
Сообщество программистов Autodesk в СНГ - техническая поддержка |
||||
![]() |
|
||||
Цитата:
![]()
__________________
Почему все вдруг становятся умными, когда уже не надо? |
||||
![]() |
|
||||
Ок, напишу.
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome: |
||||
![]() |
|
||||
Thượng Tá Quân Đội Nhân Dân Việt Nam Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,372
|
Последний диалог на DCL я написал 20.12.2003. Да и то смеха ради. Хотя некоторые подходят очень тщательно, например, был такой "Леха", у которого огромный диалог так был вылизан space-ами, что был "как настоящий". Правда он только один диалог и сделал, потом вообще от AutoCAD отошел.
В LISP надо использовать его преимущества и избегать недостатков. Главный из них - убогий DCL. Я лично делаю диалоги в виде COM-серверов. У меня всего их 19 шт на пару тысяч LISP-программ. Причем 17 из них используются и в других моих программах, вообще не связанных с AutoCAD. И все их более 4 лет уже не трогал. Диалоги можно делать и в ObjectARX (но зачем тогда только диалоги?). Но здесь давно отбила охотку совместная "стратегия" MS и Autodesk - привязка версий AutoCAD и VS. Т.е. постоянно следить за контролем версий у себя и всех пользователей. Можно и на .NET. И связывать судьбу своей "вшивенькой" по объему программы с очередной гонкой обновлений .NET. Пусть уж этим занимаются те, кто пока самые умные (про "пока" они пока не знают). Нам, старым дуракам, пока COM хватает. В обозримом будущем Microsoft от этой технологии не откажется. Кстати, COM-диалог в Delphi сделать лишь немного посложнее, чем Hello Word. Да и в любой нормальной среде программирования. |
|||
![]() |
|
||||
Я кстати в Delphi писал свою выпускную программу в лицеи, но было это аж 15 лет назад, и ни о каком COM я не в курсе.
__________________
Почему все вдруг становятся умными, когда уже не надо? |
||||
![]() |
|
||||
Продуман Регистрация: 22.02.2007
Питер
Сообщений: 2,839
|
У COM сервера "беда" в том, что его тоже надо регистрировать (хотя "приличная" программа на автолиспе все-равно требует установки), и из-за этого я пару раз писал диалоги для автолиспа в виде простого exe - передавал аргументы, кстати, не параметрами - а цеплялся к "активному" автокаду - в общем "тоже вариант".
__________________
Когда в руках молоток все вокруг кажется гвоздями. |
|||
![]() |
|
||||
строю, ломаю Регистрация: 03.04.2008
Украина
Сообщений: 5,515
|
Цитата:
|
|||
![]() |
|
||||
Thượng Tá Quân Đội Nhân Dân Việt Nam Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,372
|
Цитата:
Есть хороший способ - передавать такой программе только один параметр - имя INI-файла. А уж там могут быть какие угодно аргументы, в том числе записанные из Lisp. Туда же и результаты записываются. Очень удобно для больших "диалогов", например расчетных программ, по результатам работы которых надо что-то сделать в Автокаде, причем в разных функциях. |
|||
![]() |
|
||||
Да, как таковых проблем то нет.
Есть неудобство, например картинки по пикселям рисовать Зато потом научился Или вот Но так извращаться в наше время, как-то мне кажется глупо. ![]() Offtop: Почему закрыли доступ к загрузке картинок через Радикал? Охота картинки прям по тексту вставлять, а так получается и в тексте и ещё раз в низу в миниатюрах дублируются, особенно GIF не прилично мелькают
__________________
Почему все вдруг становятся умными, когда уже не надо? |
||||
![]() |
|
||||
Thượng Tá Quân Đội Nhân Dân Việt Nam Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,372
|
Цитата:
К тому же их надо делать проще. Взять, например, твой диалог с откосом. В него затолканы все мыслимые параметры, включая цвет. А большинство из них не нужны! Надо использовать штатные средства. 1. Например, любая программа должна рисовать так, как задано в AutoCAD - слой, цвет, тип линии и прочее - текущими настройками, а не индивидуальными настройками каждой программы. Хочешь откос на каком-то "откосном" слое? Так установи предварительно этот слой. Причем, желательно, из классификатора (справочника) слоев, в котором есть и точное название и цвет и всё прочее. Для топографии это особенно важно. Её часто приходится сводить, и если в каждой шараге будут свои слои, то ничего хорошего не будет. 2. А зачем в диалоге столько "технологических" настроек (шаг, недовод и прочее)? Это всё должно делаться по стандартным правилам. В 99% так и должно быть, а для редких случаев может быть опция во время рисования. Фактически нужно выбрать только тип рисунка откоса, их есть несколько стандартных, и, для любителей, может быть сколько угодно нестандартных. Лишние настройки только мешают пользователю, да и время разработчика отнимают. На прилагаемых скриншотах единый диалог "чего угодно". Он написан один раз, а применяется тысячи раз. Тут и рельеф, и линии, и точечные знаки. Что, для каждого вида рисунка свой диалог сочинять? Так только в топографии более 500 разных УГО, замучаешься. А уж про все виды чертежей и говорить нечего. На диалоге видно, что каждый "листик" имеет название, длинное описание, иллюстрацию (которую можно делать "на лету", прямо с нарисованного изображения). Само меню (их может быть сколько угодно) описано в XML. Элемент, описывающий окос, выглядит так Код:
И еще несколько примеров. 1. Выбор линейных условных знаков и выбор точечных. 2. Простенький диалог с двумя вводами чисел применяется очень часто - там где надо ввести одно или два значения (длина и ширина и т.п.). Можно задать допустимый диапазон, позволить выбрать число из справочника (который, разумеется, будет также в виде древовидного XML), "прочитать" число из AutoCAD, указав на какой-то примитив (текст, атрибут). Такой диалог можно вызвать где угодно. Если надо, так и в рисовании откосов, в качестве опции. Вызов наподобие Код:
3. И, для сравнения, выбор файла. Там много чего отличается от штатных средств Windows. Но этот диалог сделан в виде функции с аргументами наподобие Код:
|
|||
![]() |
|
||||
строю, ломаю Регистрация: 03.04.2008
Украина
Сообщений: 5,515
|
Можно использовать библиотеки слайдов, рисуются они быстрее чем картинки
Согласен, рисование откоса слайдами намного проще, а показывать его в цвете - красивость... о, это мохнатый диалог, написанный даже не помню уже кем и когда, но вы добавили красивость, затратив время, кстати не такое уж большое. Имхо, выбирать блоки нужно из списка, а не бродить по дереву а формировать список можно по разному: жестко-програмно или библиотечно-папочно, тут COM в помощь, все уже написано до нас кстати диалог откоса мне сразу не понравился, эти рога вверху... неэргономично, насчет слоя согласен с ShaggyDoc (либо текущий, либо из списка, либо определенный программой, создание нового слоя, может привести к к каше Как итог, такой диалог пишется, ну, 10 мин макс, с тестированием |
|||
![]() |
|
||||
Thượng Tá Quân Đội Nhân Dân Việt Nam Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,372
|
Цитата:
Где слайды рисуются "быстрее"? На экране, что ли? Не смешите. А сколько надо телодвижений, чтобы создать слайд (да ещё правильно отображиющийся), да создать библиотеку. И ради чего, ради убогого DCL (а больше никому sld не нужен). А растровую картинку мы получаем одним щелчком (левая нижняя кнопка). Картинка прямо с экрана нужного размера вырезается, сохраняется в нужное место и сама показывается. Цитата:
|
|||
![]() |
|
||||
строю, ломаю Регистрация: 03.04.2008
Украина
Сообщений: 5,515
|
Сколько разных блоков ваши пользователи используют за час. день, месяц, год?
Согласен, в автокаде dcl убогий, в брикскаде, например, нет проблемы с пробелами, нет проблемы со слайдами, улучшено отображение табулированных списков, директива include работает как надо и т.д., а слайд делается очень просто, без всяких вырезаний, с помощью простого лиспа Почему я против деревьев? Например многие пользователи любят формальности, да так, что, чтоб найти нужный файл, нужно войти аж в: сервер/гипство/завод/цеха/цех/год/проект/конструкции... или даже глубже... Последний раз редактировалось gomer, 06.12.2012 в 17:27. |
|||
![]() |
|
||||
Thượng Tá Quân Đội Nhân Dân Việt Nam Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,372
|
Цитата:
Цитата:
Вот, например, в Total Commander есть кнопка[*], которая позволяет запомнить каталог в списке (и так же легко удалить оттуда). Кто умеет работать - постоянно ей пользуются. Кто не умеет - стонет "я против". Вот так и у меня в ruCAD есть такое "Мое меню", в которое пользователь отбирает то, что именно он, чаще всего использует. Разумеется, тоже в виде дерева. А деревья всегда раскрыты при вызове не предыдущем использованном пункте, потому что вероятность использования однотипных команд (или повтора) гораздо больше. Заодно и все пункты меню имеют легко запоминающиеся цифровые имена команд. Не "ОТКОСГЕОДЕЗИЧЕСКИЙ", а 0030, например. И запоминается легко, и с клавиатуры можно вызвать проще. Сами цифровые имена видны в меню AutoCAD или в хинтах. |
|||
![]() |
|
||||||
Парни спасибо, что поддержали тему, но опять ушли в сторону.
hwd, буду ждать обещанного примера, ![]() Цитата:
Что касается "шага и прочих параметров", нифига это однозначно не определено в нормативах, например: Цитата:
или Цитата:
И я безусловно вам благодарен, уважаемый ShaggyDoc, вы часто даёте дельные и полезные советы, но приводимые вами отрывки из ваших ru-функций, абсолютно бесполезны, во-первых это отрывки выдернутые из неизвестного нам кода, во-вторых, как правило приведённые вами примеры вызова ваших функций и так всем понятны, а вот самое интересно(содержание этих функций) вы и не приводите, да оно и понятно, тогда бы вам пришлось выкладывать всю вашу библиотеку, ведь каждая ваша функция использует в себе ещё 10 других ваших функций и так до бесконечности. Цитата:
Цитата:
Вот из-за эргономики меня и достал DCL, чтоб элементы подвинуть\передвинуть\выровнять, столько мороки. А в моих диалогах, есть запоминание всех последних введённых параметров навсегда, раз настроил, и больше не надо, только вызывай команду и сразу пользуйся.
__________________
Почему все вдруг становятся умными, когда уже не надо? |
||||||
![]() |
|
||||
Я делаю несколько вариантов, под разные сценарии работы. Результат выложу в блоге и дам ссылку. Здесь выкладывать не буду, т.к. нет желания.
Цитата:
@Disney На тему плюсов/минусов связки .NET + LISP так же отпишусь в блоге. Как-то у вас это в привычку вошло...
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome: |
||||
![]() |
|
||||
Ну на самом деле, если бы не автоматическое создание кода в Visual Studio, писать диалоги WinForm (и WPF, наверное) было бы не намного легче, чем DCL. Разумеется, возможностей, всяких контролов и пр. красивостей и удобностей в WinForm гораздо больше. И диалоги научиться делать в VS довольно несложно, особенно после хорошей практики в DCL. Правда, для меня пока полная загадка, будут ли они работать в других автокадах/виндовсах, кроме тех версий, под которые я их напишу
![]() |
||||
![]() |
|
||||
Цитата:
WinForms - это всего лишь управляемая оболочка над функциями WinAPI, создающими GUI. Для прорисовки используется ЦП. WPF полностью самостоятельна, для прорисовки используется DirectX и видеокарта. Преимущества WPF не заканчиваются на мощной графике. Очень грамотно реализована идея привязок. Само приложение делится на три части: модель (собственно объектная модель, для работы с которой создаём GUI), представление (сам GUI) и модель представления (связующее звено, между моделью и представлением). За счёт такой структуры любое звено можно заменить другой реализацией, без каких либо изменений/последствий в проекте. Этот паттерн известен как MVVM. Цитата:
Компилировать .NET код можно для платформ x86, x64 или AnyCPU. Последний вариант создаёт код, независимый от разрядности ОС. Первые два следует использовать в том случае, если в .NET коде используются сторонние библиотеки, зависящие от разрядности платформы (как правило это не .NET библиотеки). Под каждую новую версию AutoCAD, .NET код нужно компилировать отдельно, что обусловлено реализацией .NET API компанией Autodesk. Неприятно, но не смертельно, ибо занимает немного времени, как правило - 3-5 секунд на решение, в котором находится десяток проектов. Неприятная необходимость компилирования под каждую версию AutoCAD с лихвой компенсируется возможностями, которые разработчику предоставляет .NET - это далеко не только построение GUI, но и решение любых задач, с которыми неудобно\невозможно возиться в LISP... Ограничение WPF: эта технология реализована только под Windows. Реализации для MAC OS и Linux отсутствуют в виду того, что реализация требует много усилий.
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome: Последний раз редактировалось hwd, 07.12.2012 в 11:13. |
||||
![]() |
|
||||
Thượng Tá Quân Đội Nhân Dân Việt Nam Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,372
|
Цитата:
Да вид-то проще всего установить - хоть в каком стиле, хоть "линуксовый", хоть Win8, хоть какой. |
|||
![]() |
|
||||
Цитата:
![]() Любая программа для своей работы имеет определённые системные требования. .NET разработчик волен компилировать один и тот же код под разные версии .NET Framework, чтобы клиент мог воспользоваться той версией, которая соответствует установленной у него платформой. Более того, зачастую нужные версии уже присутствуют на компьютере. Актуальный версий, которые могут потребоваться, не так уж и много: 3.5, 4.0 и 4.5. Компания Microsoft, в отличие от компании Autodesk, к счастью пока не грешит ежегодным выпуском своих продуктов, в погоне за планом ежегодных продаж. .NET Framework - бесплатная платформа, поэтому версий .NET гораздо меньше, чем версий AutoCAD. Не мешайте мух с котлетами... Представления, шаблоны и стили - это "четыре совершенно разных человека"! Всё это грамотно реализовано в WPF.
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome: Последний раз редактировалось hwd, 07.12.2012 в 11:50. |
||||
![]() |
|
||||
Весьма полезная информация! Спасибо!
Цитата:
![]() Цитата:
При этом, как мне думается, проблем с версиями AutoCAD практически не должно быть. |
||||
![]() |
|
||||
Совершенно верно.
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome: |
||||
![]() |
|
||||
Продуман Регистрация: 22.02.2007
Питер
Сообщений: 2,839
|
Раз уж вспомнили, там проявляется еще "положительный момент", при "должной" проверке на ошибки - окна без проблем делаются не диалоговыми, а "интерактивными" - типа как в моей змейке рубика (там правда нет ни строчки на лиспе, но я про суть "интерактивности") - ИХМО этот подход (при опять-же правильной обработке лиспом) - позволяет сильно облегчить юзеру работу.
__________________
Когда в руках молоток все вокруг кажется гвоздями. |
|||
![]() |
|
||||
строю, ломаю Регистрация: 03.04.2008
Украина
Сообщений: 5,515
|
|
|||
![]() |
|
||||
строю, ломаю Регистрация: 03.04.2008
Украина
Сообщений: 5,515
|
Цитата:
но хохма в том, что ваша статья, во-первых, так же архаична как и весь лисп с дисиэлем, во вторых, грешит некоторыми нелепостями по поводу лисп и дисиэль в-третьих, материал изложен не полностью и тема 'сисек' не раскрыта. Где код на лисп? Или вы считаете, что обычного вызова функции хватит и загружать библиотеку не надо? Где для сравнения код DCL? Вообще, кроссплатформенность лисп приложений это миф, созданный для тех, кто пишет на коленке. Ну, это ладно, но чем же отличаются ваши диалоги от дисиэлевских? Безумным количеством эксэмеля и сишарпа? Зачем это надо? Выбрать из списка можно элементарно с помощью doslib. Последний пример тоже элементарно делается на DCL и лисп с гораздо меньшим количеством кода. В крайнем случае openDCL за глаза хватит для большинства диалогов, при том, что ими можно управлять из лиспа. По сути с времен появления winapi способ подачи информации в диалогах мало изменился за 20 лет, все те же поля, все те же кнопки, все те же списки... И мы все так привыкли, ничего толком не изменится в обозримом будущем, только будут рюшечки добавлятся. Есть 2 пути показать диалог - загрузить его или создать програмно, dcl - это первый путь, wpf по сути то же самое, только рюшечек больше и соответственно, да какое там, намного больше геморроя. Я уж молчу про ООП... Которое ну очень уж у вас смахивает на winapi. Все то же поиск элемента по "дескриптору" и назначение ему функции отклика... Это же есть и в DCL а статья что? ну, на уровне реферата первого курса института или американского туториала для чайников. Ну показали бы как легко и просто 'на WPF' сделать то, что ни в жисть не сделаешь на dcl - это было бы намного интереснее, а, уж извините, отлов ошибок с помощью msgbox-ов - это незачот |
|||
![]() |
|
||||
gomer, я ведь уже писал, что ты не та публика, которая мне интересна и опровергать твоё словоблудие, тыкая тебя носиком в написанную тобой же каку у меня нет желания.
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome: |
||||
![]() |
|
||||
hwd, спасибо, что находишь время для написания таких статей! Содержательно и полезно для начинающих!
Если критика не возбраняется: Цитата:
![]() Цитата:
И, конечно же, выбранные примеры диалогов (в плане оформления) не демонстрируют явных преимуществ WPF над DCL. Кода тут ничуть не меньше, чем в DCL ![]() Хочу уточнить - почему не обойтись VS Express? Пока никаких проблем не было с ней. Или это связано с тем, что я пока не использовал WPF? Последний раз редактировалось Do$, 12.12.2012 в 10:06. |
||||
![]() |
|
||||
Продуман Регистрация: 22.02.2007
Питер
Сообщений: 2,839
|
То hwd - несмотря на стилистику изложения и неприязнь .Net у Gomera - он сейчас, немного запутанно, но излагает мысль в верном направлении - дело в том, что подход показанный у Вас, ну ни как не вяжется с лиспом. Допустим взял я Вашу библиотеку и хочу ее использовать - как мне создавать обертку для Х компа?, Ваш модуль уже там может быть установлен (а может и нет), причем 1001 способом - куда класть диалоги? как я проверю есть ли Ваш плагин (его может подгружать какой-либо лисп) откуда будут в итоге братся диалоги? - что дает мне то неоспоримое приемущество что я могу сам сконструировать списочный диалог?? - его надо куда-то положить, как я это место найду из лисп программы, как я лиспом буду его в UTF8 рожать (да да в лиспе принято ресурсы создавать непосредственно программой в зависимоти от "внешних" условий)? - да все это, три раза извернувшись, можно сделать - но требует соответствующей квалификации, так что не о какой простоте и быстроте в Вашем подходе речи быть не может. Если пишется функция под лисп - то ИХМО она должна играть по его правилам, иначе зачем она нужна, по императивным правилам можно и нужно писать на том же C# (в том числе и под автокад естественно). Если и делать функцию диалога для лиспа - все о диалоге (как он устроен, все рюшечки итд) должны передаваться напрямую из нее - иначе у Вас просто рождается красивый DCL, со всеми его проблемами+еще и формат его "рисования" нефига не лисповский. Я не в коем разе не хочу критиковать Ваш труд с точки зрения полезности - спасибо Вам за хорошую, качественную просветительскую деятельность в области .Net AutoCAD - говорю это искренне и с Уважением, но в понимании лисп концепции ИХМО у Вас есть пробелы (что в общем и понятно - в одну голову все влезть не может) - да и нужен-ли он Вам. Вся "беда" функциональных языков - что они плохо совместимы с ООП прагмидой, есть конечно толковые компромисы (Caml (он же F# если под .Net), Nemerle) - с большим/меньшим уклоном в ту или другю сторону. Запрос у акадовских лиспописателей - не хватает нормальных функций GUI'я работающий по лисп правилам, Вы же предлагаете - вот Вам красиво и современно - но это не то что нужно. Посмотрите туториал любого диалекта лиспа, хаскеля и др. языков функциональной прагмиды (F# не считаем там используется тот самый Caml'овский компромисс) - все API завернуты в структуры соответствующие функциональной пргамиде + на всякий случай есть "прямой вызов", по аналогии с .Net - есть обертка API в виде WinForms, а есть InteropServices для вызова натива - Вы часто в .Net используете nativ?? - полагаю только в случае крайней необходимости. Чтоб сделать реально лисповский GUI - нужна большая работа (не с проста ее не хочет делать автодеск), по разработке концепции (ну или слизывания ее с той-же Scheme - хотя и там "основная" гуишная библиотека реализованна через т.н. функциональное ООП) + куча функциональных оберток с "эмуляцией" чистоты функций. Но в любом случае, я уверен найдутся те кому Ваша статья была полезна (ну как минимум) для осознания WPF.
__________________
Когда в руках молоток все вокруг кажется гвоздями. Последний раз редактировалось Дима_, 12.12.2012 в 10:25. |
|||
![]() |
|
|||||||||||
Цитата:
Цитата:
Цитата:
Всплывающие подсказки, вкладки, редакторы таблиц и т.п. - всё это легко создавать на WPF. В принципе можно и такой пример сделать, но разметка будет уже посложнее - именно этого я хотел избежать, чтобы как можно меньше грузить тех, кто не знаком с WPF. Цитата:
Цитата:
Цитата:
Цитата:
А все .NET библиотеки находятся в подкаталоге .\NET\<PluginDirName>. В каталоги поиска диалогового окна Options вы можете добавить путь к этому самому "базовому каталогу", содержащему подкаталоги LISP и NET, а в своём LISP коде указывать относительный путь к DLL, наличие которой хотите определить и которую желаете загрузить. Т.о. вы всегда сможете определить наличие\отсутствие нужных DLL файлов и при необходимости - загрузить их. Цитата:
Цитата:
Цитата:
Я согласен с тем, что материал мною изложен не самым наглядным\удобным способом, и примеры пожалуй далеко не самые лучшие, но... Хорошо излагать - это уметь нужно. ![]()
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome: |
|||||||||||
![]() |
|
||||
Продуман Регистрация: 22.02.2007
Питер
Сообщений: 2,839
|
Цитата:
Цитата:
Offtop: з.ы. уж не знаю доделаю-ли я свою затейку по интеграции .Net как такового в AutoLisp, частично она у меня есть и кое-где используется, но еще сыра и по этому не выкладываю, не в том виде как это сделанно с ActiveX (добавлением вызова методов и свойств) - это не интересно, а нормально с парсингом лисп выражения - преобразованием его в код аналогичный vla...+ замыкания (ну пока реализовал их только в упрощенной форме) + обработкой событий (с навеской на них лисп кода), автоматическим преобразованием созданных классов в замкнутые функции и пр. плюшками - тупо завален делами - руки не доходят, да и когда сделаю боюсь вид далеко уползет от первоначального ибо уже пару раз неслабо "перекручивал". p/s/s/ Еще раз естественно как функция написанна внутри на .Net - никому не важно, но внешне она должна по критериям биться с функциональными принципами (в нем нет внешних данных), результат должен быть зависим только от аргумента(ов) - не соблюдение этого и есть основной гемор DCL (используются файлы) - Вы предлагаете тоже самое, но "покрасивше" - работать будет, но с остальной программой возникнут косяки - т.к. если мы принимаем возможность изменения файла, надо всегда следить что в нем (соответственно нельзя вызвать в любой момент, использовать рекурсивно (конечно можно - но количество проверок превысит кол-во кода), и пр. "прелести" из-за которых был придуман функциональный подход).
__________________
Когда в руках молоток все вокруг кажется гвоздями. Последний раз редактировалось Дима_, 12.12.2012 в 13:16. |
|||
![]() |
|
||||
Цитата:
Поскольку в чёрном ящике находится .NET, то никаких ограничений нет и всё то, что требуется LISP программисту на выходе из функции, а так же в GUI, легко сделать. Я не вижу каких-либо проблем. Цитата:
Устал... В общем я постарался показать, как аналогичные вещи можно делать в .NET, воспользовавшись этим из AutoLISP\Visual LISP. Демонстрация оказалась не самой удачной, но общую картину понять, как мне кажется, всё же можно... Надо оно ему или нет - каждый пусть решает для себя сам...
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome: |
||||
![]() |
|
||||
Ага вижу, значит я скопировал один и тот же код разметки. Вечером приду домой - исправлю на нужный. Спасибо за замечание.
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome: |
||||
![]() |
|
||||
Инженер Регистрация: 27.04.2009
Deutschland
Сообщений: 208
|
Цитата:
![]() У меня стоит Визуал-Экспресс, поэтому кое-чего не совсем совпадает с твоими примерами. Например, я не могу указать путь для создания и сохранения проекта - открыто только окно как назвать проект и все. Куда он сохраняется - одному лишь Виндоузу известно. Я нашел где то глубоко в каталогах пользователь-документы-...-... ну и так далее (ниже указано где, поточнее ![]() ![]() Другой проблемой пишет: "Не удалось найти имя типа или пространства имен "Autodesk" (пропущена директива using или ссылка на сборку?) C:\Users\at.BUNDH.000\AppData\Local\Temporary Projects\test_dialog1\SelectItemsWindow.xaml.cs" Как в экспресс указать ссылки на библиотеки автогада? "Обозреватель решения->ссылки->" а дальше куда? Помню, там надо 2 файла acdbmgd.dll и acmgd.dll. Это нашел куда. Только теперь конфликт версий фреймворка встал: "не удалось разрешить указанную ссылкой сборку "acmgd", поскольку она зависит от "System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a", отсутствующей в текущей целевой платформе ".NETFramework,Version=v4.0,Profile=Client". Удалите ссылки на сборки не в целевой платформе или рассмотрите возможность переориентации проекта". Где покопаться? Последний раз редактировалось alex8888, 19.12.2012 в 15:05. |
|||
![]() |
|
||||
я и не пытался научить, просто хотел показать для наглядности, т.е. своего рода это как информация для размышления, не более.
У меня сейчас нет Express версии, поэтому не могу что-либо посмотреть. Если хочешь попасть в каталог, в котором хранятся файлы проекта, то кликни правой кнопкой мышки на имени проекта в окне Solution Explorer и выбери пункт контекстного меню Open Folder in File Explorer. Цитата:
Цитата:
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome: |
||||
![]() |
|
||||
Инженер Регистрация: 27.04.2009
Deutschland
Сообщений: 208
|
Установил SDK, перенес проект куда надо, указал библиотеки. Но если указываю версию фреймворка 3.5, то пишет ошибку:
Цитата:
Цитата:
|
|||
![]() |
|
||||
разные версии автокада используют разные версии фрэймворка. Ты под какую версию автокада-то хоть пишешь?
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome: |
||||
![]() |
|
||||
Инженер Регистрация: 27.04.2009
Deutschland
Сообщений: 208
|
Не пишу, но хотелось бы.
Автокад Механикал 2011 64х. Виндоза 7 про. Offtop: И хочу лишь научиться лепить окошки для своих лиспов, а то DCL обхаяли, да и не все им получается как хотелось бы. То есть тема как бы нужная для меня. Но проблема не столько во времени, (которого как всегда нету), сколько в том, что никак не пойму (ну как тот жираф, что ли), как подступиться к ее решению. Консольные приложения клепать начал, кое-какие успешно использую в работе. Но они никак не связаны с кадом. И "связать" (знаю, ты прикалываешься над моим термином, хотя другого я и не представляю) кад и шарп или .нет не выходит. На первой же ошибке настроение ковыряться дальше стремительно летит к нулю. Даже сила воли не помогает. ![]() |
|||
![]() |
|
||||
если я не ошибаюсь, 2011-й не использует .net 4.0, а значит тебе нужно юзать .net 3.5. Кликни правой кнопкой мыши на имени твоего проекта и выбери пункт Properties. Перейди на вкладку Application и в раскрывающемся списке Target Framework выбери версию 3.5.
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome: |
||||
![]() |
|
||||
Инженер Регистрация: 27.04.2009
Deutschland
Сообщений: 208
|
Да, все верно, поэтому я и указывал версию фреймворка 3.5
Но тогда как писал выше, "не удается разрешить сборку System.XAML", потому что ей надо 4.0 версию. Значит ли это, что твои примеры у меня не пойдут? Тупо удалил конфликтующие ссылки. Количество ошибок уменьшилось до 2-х! 1. Цитата:
Цитата:
Последний раз редактировалось alex8888, 19.12.2012 в 16:20. |
|||
![]() |
|
||||
Нет, не значит. Вечером из дома выложу тебе вариант того проекта, настроенного на AutoCAD 2011 (на вирт машинке у меня, к твоему счастью, установлены версии 2009-2013) - можешь посмотреть его и сравнить с тем, что ты там самостоятельно наваял.
UPD Значит так... Флэшка, на которой я это дело сохранил накрылась медным тазом - пришлось её выбросить, а проект восстановить по исходникам, опубликованным мною в блоге... Внёс в XAML разметку небольшие изменения (убрал в первых двух XAML файлах атрибут x:FieldModifier="public", поскольку в первом примере он не нужен для парсинга XAML). Там же выложил и исходник проекта, собранный в MS Visual Studio 2012 для AutoCAD 2013. Проект без проблем открывается и в MS Visual Studio 2010. Поскольку у тебя AutoCAD 2011, то чтобы ты мне сильно не конопатил мозг обилием вопросов в стиле "аля как переназначить ссылки для AutoCAD 2011 и т.д." - я собрал тебе отдельный вариант этого проекта под AutoCAD 2011 (обычный, т.к. Механикл у меня нет) - смотри вложенный файл ниже в этом сообщении. Единственное, что от тебя потребуется - указать в настройках проекта путь к твоему файлу acad.exe (см. скрин ниже). Надеюсь с этим ты справишься ![]() Для запуска примеров, после того, как загрузишь библиотеку командой NETLOAD, можешь запускать, к примеру, такие LISP функции: Код:
Последний раз редактировалось hwd, 19.12.2012 в 21:41. |
||||
![]() |
|
||||
Инженер Регистрация: 27.04.2009
Deutschland
Сообщений: 208
|
hwd, спасибо за код.
Один вопросик, возможно из-за этого ты и применяешь полную версию визуал-студии. Смотри по прилагаемому рисунку из Microsoft Visual Studio 2010 экспресс: Цитата:
![]() |
|||
![]() |
|
||||
Похоже на то...
![]() В противном случае, ты наверное сможешь только писать код, компилировать его, но не отлаживать (для плагинов AutoCAD). Т.е. ты можешь скомпилировать код, затем вручную запустить AutoCAD и командой NETLOAD загрузить то, что ты скомпилировал. Например в подкаталоге DEBUG уже имеется версия, которую ты можешь так загрузить и поюзать. Кстати, вспомнил: у меня в блоге Boxa оставил сообщение о том, что он без проблем пишет плагины в Express версии: Цитата:
UPD я тут подумал как решить твою проблему... Открой в блокноте файл WpfThroughAutoLISP.csproj.user и в нём замени строку C:\Program Files\Autodesk\AutoCAD 2011\acad.exe на свой вариант. Затем попробуй запустить код на исполнение в отладчике...
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome: Последний раз редактировалось hwd, 20.12.2012 в 11:20. |
||||
![]() |
|
||||
Инженер Регистрация: 27.04.2009
Deutschland
Сообщений: 208
|
В режиме отладки не работает. По твоему совету заменил строку,что указал. При запуске отладчика запускается новый экземпляр Автокада (один уже был запущен до этого, пробовал и без запущенного - та же басня), с кучей ошибок:
Die Anwendung unterstьtzt kein JIT-Debuggen. Weitere Informationen finden Sie am Ende dieser Meldung. ************** Ausnahmetext ************** System.Windows.Markup.XamlParseException: Ein Aufrufziel hat einen Ausnahmefehler verursacht. Fehler in Objekt "System.Windows.Data.Binding" in Markupdatei "AcWindows;component/AppFrame/acAppFrame.xaml". ---> System.Reflection.TargetInvocationException: Ein Aufrufziel hat einen Ausnahmefehler verursacht. ---> System.InvalidProgramException: Die Common Language Runtime hat ein ungьltiges Programm gefunden. bei Autodesk.AutoCAD.ApplicationServices.Application.get_UIBindings() --- Ende der internen Ausnahmestapelьberwachung --- bei System.RuntimeMethodHandle._InvokeMethodFast(Object target, Object[] arguments, SignatureStruct& sig, MethodAttributes methodAttributes, RuntimeTypeHandle typeOwner) bei System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture, Boolean skipVisibilityChecks) bei System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture) bei System.Reflection.RuntimePropertyInfo.GetValue(Object obj, Object[] index) bei System.Windows.Markup.StaticExtension.ProvideValue(IServiceProvider serviceProvider) bei System.Windows.Markup.BamlRecordReader.GetStaticExtensionValue(Int16 memberId) bei System.Windows.Markup.BamlRecordReader.GetExtensionValue(IOptimizedMarkupExtension optimizedMarkupExtensionRecord, String propertyName) bei System.Windows.Markup.BamlRecordReader.ReadPropertyWithExtensionRecord(BamlPropertyWithExtensionRecord bamlPropertyRecord) bei System.Windows.Markup.BamlRecordReader.ReadRecord(BamlRecord bamlRecord) --- Ende der internen Ausnahmestapelьberwachung --- bei System.Windows.Markup.XamlParseException.ThrowException(String message, Exception innerException, Int32 lineNumber, Int32 linePosition, Uri baseUri, XamlObjectIds currentXamlObjectIds, XamlObjectIds contextXamlObjectIds, Type objectType) bei System.Windows.Markup.XamlParseException.ThrowException(ParserContext parserContext, Int32 lineNumber, Int32 linePosition, String message, Exception innerException) bei System.Windows.Markup.BamlRecordReader.ReadRecord(BamlRecord bamlRecord) bei System.Windows.Markup.BamlRecordReader.ReadElement(Int64 startPosition, XamlObjectIds contextXamlObjectIds, Object dictionaryKey) bei System.Windows.ResourceDictionary.CreateObject(Int32 valuePosition, Object key) bei System.Windows.ResourceDictionary.RealizeDeferContent(Object key, Object& value, Boolean& canCache) bei System.Windows.ResourceDictionary.GetValueWithoutLock(Object key, Boolean& canCache) bei System.Windows.ResourceDictionary.GetValue(Object key, Boolean& canCache) bei System.Windows.ResourceDictionary.GetValueWithoutLock(Object key, Boolean& canCache) bei System.Windows.ResourceDictionary.GetValue(Object key, Boolean& canCache) bei System.Windows.ResourceDictionary.get_Item(Object key) bei Autodesk.AutoCAD.Internal.Windows.RibbonContent.get_NonZeroDocQAT() bei Autodesk.AutoCAD.Internal.Windows.RibbonContent.GetNonZeroDocumentQATControl(String sId) bei Autodesk.AutoCAD.Internal.Windows.QuickAccessToolbarService.LoadQuickAccessToolbarContent(MenuGroupData menuGroupData, Dictionary`2 workspaces, Dictionary`2 quickAccessToolbarItems) bei Autodesk.AutoCAD.Internal.Windows.QuickAccessToolbarService.LoadContent() bei Autodesk.AutoCAD.Internal.Windows.QuickAccessToolbarService.RestoreItems() bei Autodesk.AutoCAD.Internal.Windows.QuickAccessToolbarService.Initialize() bei Autodesk.AutoCAD.Internal.Windows.QuickAccessToolbarService.LoadQuickAccessToolbar() bei Autodesk.AutoCAD.Internal.Windows.QuickAccessToolbarService.OnApplicationIdle(Object sender, EventArgs e) bei System.EventHandler.Invoke(Object sender, EventArgs e) bei Autodesk.AutoCAD.ApplicationServices.Application.raise_Idle(Object value0, EventArgs value1) bei Autodesk.AutoCAD.ApplicationServices.Application.OnIdle() ************** Geladene Assemblys ************** mscorlib Assembly-Version: 2.0.0.0. Win32-Version: 2.0.50727.5466 (Win7SP1GDR.050727-5400). CodeBase: file:///C:/Windows/Microsoft.NET/Framework64/v2.0.50727/mscorlib.dll. ---------------------------------------- acdbmgd Assembly-Version: 18.1.0.0. Win32-Version: 18.1.115.0.0. CodeBase: file:///C:/Program%20Files/Autodesk/ACADM%202011/AcdbMgd.DLL. ---------------------------------------- mscorlib.resources Assembly-Version: 2.0.0.0. Win32-Version: 2.0.50727.5466 (Win7SP1GDR.050727-5400). CodeBase: file:///C:/Windows/Microsoft.NET/Framework64/v2.0.50727/mscorlib.dll. ---------------------------------------- System Assembly-Version: 2.0.0.0. Win32-Version: 2.0.50727.5466 (Win7SP1GDR.050727-5400). CodeBase: file:///C:/Windows/assembly/GAC_MSIL/System/2.0.0.0__b77a5c561934e089/System.dll. ---------------------------------------- msvcm90 Assembly-Version: 9.0.30729.6161. Win32-Version: 9.00.30729.6161. CodeBase: file:///C:/Windows/WinSxS/amd64_microsoft.vc90.crt_1fc8b3b9a1e18e3b_9.0.30729.6161_none_08e61857a83bc251/msvcm90.dll. ---------------------------------------- System.Xml Assembly-Version: 2.0.0.0. Win32-Version: 2.0.50727.5420 (Win7SP1.050727-5400). CodeBase: file:///C:/Windows/assembly/GAC_MSIL/System.Xml/2.0.0.0__b77a5c561934e089/System.Xml.dll. ---------------------------------------- System.Drawing Assembly-Version: 2.0.0.0. Win32-Version: 2.0.50727.5462 (Win7SP1GDR.050727-5400). CodeBase: file:///C:/Windows/assembly/GAC_MSIL/System.Drawing/2.0.0.0__b03f5f7f11d50a3a/System.Drawing.dll. ---------------------------------------- PresentationFramework Assembly-Version: 3.0.0.0. Win32-Version: 3.0.6920.5448 built by: Win7SP1GDR. CodeBase: file:///C:/Windows/assembly/GAC_MSIL/PresentationFramework/3.0.0.0__31bf3856ad364e35/PresentationFramework.dll. ---------------------------------------- WindowsBase Assembly-Version: 3.0.0.0. Win32-Version: 3.0.6920.5448 built by: Win7SP1GDR. CodeBase: file:///C:/Windows/assembly/GAC_MSIL/WindowsBase/3.0.0.0__31bf3856ad364e35/WindowsBase.dll. ---------------------------------------- PresentationCore Assembly-Version: 3.0.0.0. Win32-Version: 3.0.6920.5448 built by: Win7SP1GDR. CodeBase: file:///C:/Windows/assembly/GAC_64/PresentationCore/3.0.0.0__31bf3856ad364e35/PresentationCore.dll. ---------------------------------------- System.Configuration Assembly-Version: 2.0.0.0. Win32-Version: 2.0.50727.5420 (Win7SP1.050727-5400). CodeBase: file:///C:/Windows/assembly/GAC_MSIL/System.Configuration/2.0.0.0__b03f5f7f11d50a3a/System.Configuration.dll. ---------------------------------------- AdApplicationFrame Assembly-Version: 0.0.0.0. Win32-Version: 3.0.269.0. CodeBase: file:///C:/Program%20Files/Autodesk/ACADM%202011/AdApplicationFrame.DLL. ---------------------------------------- AdWindows Assembly-Version: 3.0.270.0. Win32-Version: 3.0.270.0. CodeBase: file:///C:/Program%20Files/Autodesk/ACADM%202011/AdWindows.DLL. ---------------------------------------- AdWindows.resources Assembly-Version: 3.0.263.0. Win32-Version: 18.1.49.0.0. CodeBase: file:///C:/Program%20Files/Autodesk/ACADM%202011/de-DE/AdWindows.resources.DLL. ---------------------------------------- PresentationFramework.Aero Assembly-Version: 3.0.0.0. Win32-Version: 3.0.6920.4902 built by: NetFXw7. CodeBase: file:///C:/Windows/assembly/GAC_MSIL/PresentationFramework.Aero/3.0.0.0__31bf3856ad364e35/PresentationFramework.Aero.dll. ---------------------------------------- acmgd Assembly-Version: 18.1.0.0. Win32-Version: 18.1.208.0.0. CodeBase: file:///C:/Program%20Files/Autodesk/ACADM%202011/acmgd.DLL. ---------------------------------------- System.Core Assembly-Version: 3.5.0.0. Win32-Version: 3.5.30729.5420 built by: Win7SP1. CodeBase: file:///C:/Windows/assembly/GAC_MSIL/System.Core/3.5.0.0__b77a5c561934e089/System.Core.dll. ---------------------------------------- AcWindows Assembly-Version: 18.1.0.0. Win32-Version: 18.1.208.0.0. CodeBase: file:///C:/Program%20Files/Autodesk/ACADM%202011/AcWindows.DLL. ---------------------------------------- AcWindows.resources Assembly-Version: 18.1.0.0. Win32-Version: 18.1.49.0.0. CodeBase: file:///C:/Program%20Files/Autodesk/ACADM%202011/de-DE/AcWindows.resources.DLL. ---------------------------------------- acmgd Assembly-Version: 18.1.0.0. Win32-Version: 18.1.49.0.0. CodeBase: file:///D:/Meine%20Daten/AT-CAD/C%23/test/WpfThroughAutoLISP%20for%20Acad%202011/bin/Debug/acmgd.dll. ---------------------------------------- AcCui Assembly-Version: 18.1.0.0. Win32-Version: 18.1.115.0.0. CodeBase: file:///C:/Program%20Files/Autodesk/ACADM%202011/AcCui.DLL.[/SPOILER] ---------------------------------------- AmMgdInteropReverse Assembly-Version: 15.0.0.0. Win32-Version: 15.0.205.0.0. CodeBase: file:///C:/Program%20Files/Autodesk/ACADM%202011/AmMgdInteropReverse.DLL. ---------------------------------------- AmRibbon Assembly-Version: 14.0.0.0. Win32-Version: 15.0.205.0.0. CodeBase: file:///C:/Program%20Files/Autodesk/ACADM%202011/AmRibbon.DLL. ---------------------------------------- AmWindows Assembly-Version: 14.0.0.0. Win32-Version: 15.0.46.0.0. CodeBase: file:///C:/Program%20Files/Autodesk/ACADM%202011/AmWindows.DLL. ---------------------------------------- AmPartAuthUI Assembly-Version: 14.0.0.0. Win32-Version: 15.0.46.0.0. CodeBase: file:///C:/Program%20Files/Autodesk/ACADM%202011/AmPartAuthUI.DLL. ---------------------------------------- System.Windows.Forms Assembly-Version: 2.0.0.0. Win32-Version: 2.0.50727.5460 (Win7SP1GDR.050727-5400). CodeBase: file:///C:/Windows/assembly/GAC_MSIL/System.Windows.Forms/2.0.0.0__b77a5c561934e089/System.Windows.Forms.dll. ---------------------------------------- AmMgdInterop Assembly-Version: 15.0.0.0. Win32-Version: 15.0.46.0.0. CodeBase: file:///C:/Program%20Files/Autodesk/ACADM%202011/AmMgdInterop.DLL. ---------------------------------------- AcMr Assembly-Version: 18.1.0.0. Win32-Version: 18.1.49.0.0. CodeBase: file:///C:/Program%20Files/Autodesk/ACADM%202011/AcMr.DLL. ---------------------------------------- System.Runtime.Serialization Assembly-Version: 3.0.0.0. Win32-Version: 3.0.4506.5420 (Win7SP1.030729-5400). CodeBase: file:///C:/Windows/assembly/GAC_MSIL/System.Runtime.Serialization/3.0.0.0__b77a5c561934e089/System.Runtime.Serialization.dll. ---------------------------------------- AcadLispFunctions Assembly-Version: 1.0.0.0. Win32-Version: 1.0.0.0. CodeBase: file:///D:/Meine%20Daten/AT-CAD/NET/AcadLispFunctions/AcadLispFunctions/bin/Release/AcadLispFunctions.dll. ---------------------------------------- AmWindows.resources Assembly-Version: 14.0.0.0. Win32-Version: 15.0.46.0.0. CodeBase: file:///C:/Program%20Files/Autodesk/ACADM%202011/de-DE/AmWindows.resources.DLL. ---------------------------------------- PresentationFramework.resources Assembly-Version: 3.0.0.0. Win32-Version: 3.0.6920.4902 built by: NetFXw7. CodeBase: file:///C:/Windows/assembly/GAC_MSIL/PresentationFramework.resources/3.0.0.0_de_31bf3856ad364e35/PresentationFramework.resources.dll. ---------------------------------------- System.Windows.Forms.resources Assembly-Version: 2.0.0.0. Win32-Version: 2.0.50727.5420 (Win7SP1.050727-5400). CodeBase: file:///C:/Windows/assembly/GAC_MSIL/System.Windows.Forms.resources/2.0.0.0_de_b77a5c561934e089/System.Windows.Forms.resources.dll. ---------------------------------------- ************** JIT-Debuggen ************** Die Anwendung unterstьtzt kein JIT-Debuggen fьr Windows Forms. Weitere Informationen erhalten Sie vom Autor der Anwendung. . --- Но в режиме _netload и тд работает нормально, т.е. проблема заключается в работе с отладкой в экспресс версии |
|||
![]() |
|
||||
Цитата:
![]()
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome: |
||||
![]() |
|
||||
Инженер Регистрация: 27.04.2009
Deutschland
Сообщений: 208
|
Жаль, конечно, что ты не экстрасенс
![]() ![]() Буду дома полную версию насиловать, правда надо будет автокад еще установить для опытов. В идеале хотелось бы видеть так: 1. из лиспа или просто путем запуска программы без автокада вызывать окно для выбора из справочника или заполнения формы своими данными. 2. при нажатии ОК (упрощенно излагаю) сформированный список передается в лисп или в файл (надо поразмыслить что лучше). Тогда получится, что окна могут быть и не модальными, что достаточно и экспресс-студии, а о DCL можно будет забыть как о страшном сне. |
|||
![]() |
|
||||
они и так могут быть не модальными, если тебе нужен немодальный вариант вызова... Для этого, в программном коде, вместо метода ShowModalWindow нужно вызывать метод ShowModelessWindow.
Цитата:
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome: |
||||
![]() |
|
||||
Инженер Регистрация: 27.04.2009
Deutschland
Сообщений: 208
|
Пока только в организации процесса:
1. Проблемы экспресс-студии и отладки 2. Не до конца ясен процесс доступа к программам из Автокада (зависит от п.1) 3. Плюс путаница из версий фреймворков и автокадов. 4. Основной: процесс обучения идет не так быстро, как хотелось бы. А так сама идея понятна. Цитата:
![]() ![]() |
|||
![]() |
|
||||
Это коммерческая политика компании Microsoft.
Цитата:
имхо, никакой путаницы нет: в AutoCAD 2009-2011 можно юзать 3.5, в 2012 - точно не помню, 3.5 или 4.0 (на рабочей машине у меня нет 2012, поэтому глянуть не могу), в 2013-м используется 4.0. UPD По крайней мере два мембера (alex8888 и Disney) справились с обозначенными в моём блоге примерами (возможно даже дочитали до конца)... Ну, значит какой-то толк от той заметки всё же имеется... ![]()
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome: Последний раз редактировалось hwd, 20.12.2012 в 15:02. |
||||
![]() |
|
||||
Инженер Регистрация: 27.04.2009
Deutschland
Сообщений: 208
|
Цитата:
![]() Цитата:
![]() Цитата:
![]() Вот только что поняли ![]() ![]() |
|||
![]() |
|
||||
Продуман Регистрация: 22.02.2007
Питер
Сообщений: 2,839
|
Я не использую отладку в классическом понимании этого слова (скажем так трассировку) там где есть REPL - за ненадобностью (поэтому я и использую в .Net F#). У меня такая-же "честная бесплатная" студия, с настроенной компиляцией во все используемые версии .Net.
Цитата:
__________________
Когда в руках молоток все вокруг кажется гвоздями. Последний раз редактировалось Дима_, 20.12.2012 в 15:17. |
|||
![]() |
|
||||
Не обращай внимание, это всего лишь "большой специалист" в области .net и MSVS.
![]()
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome: |
||||
![]() |
|
||||
строю, ломаю Регистрация: 03.04.2008
Украина
Сообщений: 5,515
|
вот-вот такое состояние, когда видишь результат компиляции программы с пустяковой очепяткой в коде. В общем, переходите полностью на сторону сишарпа, у них вкусные печеньки.
hwd, обожаю тех, кто не может разобраться в чужих логах, но абсолютно уверен в чьей-то компетенции |
|||
![]() |
|
||||
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome: |
||||
![]() |
|
||||
КЖ; C# Регистрация: 03.11.2005
Санкт-Петербург
Сообщений: 2,611
|
Оставлю это здесь:
После создания и сохранения проекта в VS2010Ex в файле вида tmp.vbproj будет секция : Код:
Код:
не забудьте правильно прописать путь до acad.exe в меню Сервис -> Параметры -> постаьте галку "расширенные параметры" появится меню "Построение" Все готово, можно работать. в 2012 - официально 4.0 (хотя по недосмотру пару раз запускал и с 3.5 да еще и с библиотеками на 2011 версию и ничего, проглатывал и не морщился...) В Ex версии нет "attach to process" Последний раз редактировалось Boxa, 20.12.2012 в 16:35. |
|||
![]() |
|
||||
т.е. имеется стимул переходить на 2012-й Express с 2010-го.
![]()
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome: |
||||
![]() |
|
||||
CAD Регистрация: 28.08.2003
Киев
Сообщений: 1,834
![]() |
Второй PrintScreen отвечает на твой вопрос.
Полосы прокрутки возможны в падающих списках внутри диалогового окна. Замени edit_box на popup_list
__________________
По теории майский жук летать не может. Но он этого не знает. И летает... |
|||
![]() |
|
||||
Стеклоалюминий Регистрация: 23.11.2012
Санкт-Петербург
Сообщений: 63
|
|
|||
![]() |
|
||||
CAD Регистрация: 28.08.2003
Киев
Сообщений: 1,834
![]() |
Этот список можно готовить при работе программы "на лету"
Можно конечно посмотреть DOSLib Но! Самое правильное решение - переходить на внешние программы, работающие с Автокадом через СОМ-сервер. Например так
__________________
По теории майский жук летать не может. Но он этого не знает. И летает... |
|||
![]() |
|
||||
Стеклоалюминий Регистрация: 23.11.2012
Санкт-Петербург
Сообщений: 63
|
Да я весь диалог готовлю на лету. В зависимости от количества полей (ячеек), меняется количество Edit Box. Вот и столкнулся с проблемой, что длинные диалоговые окна на помещаются на экран. То ли я чего то не понимаю, то ли вообще в DCL такого не сделать. В принципе мне требуется нечто подобное , что в вашем вложении. Как и с помощью чего это сделано? я пытаюсь повторить это:
|
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,407
|
Не лечится. Делай несколько окон (если так без dcl никак не обойтись) и доп.кнопки по переходу между ними типа "Далее" и "Назад" - это как вариант.
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Регистрация: 10.08.2013
Сообщений: 11,499
|
Цитата:
Цитата:
|
|||
![]() |
|
||||
Thượng Tá Quân Đội Nhân Dân Việt Nam Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,372
|
Цитата:
Цитата:
Но вопрос именно о диалоговых окнах. Вот тут действительно от DCL надо уходить, раз уж Аутодеск их никак не развивает. Нечего время на них терять - "визу много, шерсти мало". Особенно на современном этапе, когда имеется несколько альтернатив, на любой вкус. |
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,407
|
Точнее, "не в dcl"
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
строю, ломаю Регистрация: 03.04.2008
Украина
Сообщений: 5,515
|
|
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,407
|
gomer, уговорил
![]()
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
геодезист Регистрация: 25.10.2011
Москва
Сообщений: 45
|
Подскажите, пожалуйста, кто-нибудь, используя какие функции можно вставить в диалог DCL окно с отображением выбранного блока? Функционально должно выглядеть, как в команде _bedit - выбор блока из списка -> отображение картинки блока в окне. Не понимаю, как это можно реализовать?
|
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,407
|
Создавай слайд и показывай его - это единственный вменяемый вариант. Потому что делать bmp запаришься. ИМХО, конечно.
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
А заполнить надо будет всё равно один или все сто?
__________________
Почему все вдруг становятся умными, когда уже не надо? |
||||
![]() |
|
||||
Стеклоалюминий Регистрация: 23.11.2012
Санкт-Петербург
Сообщений: 63
|
Да, все сто и получить список размеров. Подразумевается, что в каждом edit box имеется значение по умолчанию и сто раз вводить числа не придется. Вообще я сейчас копаю в сторону дот нет. Там такое сделать можно, только вот не соображу пока как.
|
|||
![]() |
|
||||
Регистрация: 10.08.2013
Сообщений: 11,499
|
А почему не хотите, действительно, сделать DCL окошко на 10 полей ввода, а потом просто вызывать нужное количество раз, вверху писать типа "21-30" и вызывать нужное количество раз. В дотнете пользователь тоже "замахается" вводить 100 значений подряд - неужели все значения одинаковы по смыслу или есть какие то группы?
|
|||
![]() |
|
||||
CAD Регистрация: 28.08.2003
Киев
Сообщений: 1,834
![]() |
Вроде в этой теме да и в других решили, что DCL - это громадный шаг назад
__________________
По теории майский жук летать не может. Но он этого не знает. И летает... |
|||
![]() |
|
||||
Стеклоалюминий Регистрация: 23.11.2012
Санкт-Петербург
Сообщений: 63
|
Цитата:
|
|||
![]() |
|
||||
Регистрация: 10.08.2013
Сообщений: 11,499
|
если значения связаны в группы-то получиться что-то типа мастера: ввели общие данные, нажали далее - появилось новое окно со следующей группой входных данных и т.д. Ну, или действительно переписывайте в сторону NETAPI - если не жалко будет времени, потраченного на текущий вариант программы.
----- добавлено через ~20 мин. ----- Ну смотря на чем писать будете диалоги - если на WinForm, то можно использовать тот же TabControl. Если WPF - то там вообще принцип матрешки: элементы внутри контейнеров. |
|||
![]() |
|
||||
CAD Регистрация: 28.08.2003
Киев
Сообщений: 1,834
![]() |
Цитата:
Написал их достаточное количество, поэтому небольшой опыт для сравнения с тем вариантом, что я показывал есть. Одна диагностика введенной информации во внешней программе чего стоит! Ну раз DCL для этого не случая не преступление, ваяй! Вариантов размножения текст-боксов много, сам предлагал да и коллеги подсказывали. Найди причинно-следственную связь ввода инфы, сделай контроль её ввода и тоже будет не плохо. Я вот попытался выполнить с помощью DCL выполнить то окно ввода значений кол. и значений шагов. Получилось ИМХО вполне компактно.
__________________
По теории майский жук летать не может. Но он этого не знает. И летает... Последний раз редактировалось Alan, 07.03.2015 в 15:46. |
|||
![]() |
|
||||
Thượng Tá Quân Đội Nhân Dân Việt Nam Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,372
|
Замечу, что помимо чисто визуального контроло-кидательства необходима еще и обработка данных, их хранение, контроль безошибочного ввода.
Вся работа с данными прекрасно решается при использовании баз данных (любого формата), которых форумчане почему-то боятся. Использование связей таблиц "master-detail" легко позволяет организовать любую иерархию информации. Ну и другие визуальные компоненты для отображения данных, которые есть во всех системах разработки, но нет в DCL. |
|||
![]() |
|
||||
CAD Регистрация: 28.08.2003
Киев
Сообщений: 1,834
![]() |
Цитата:
![]() Пытался я >romabrew в п.106 и 127 объяснить это, он вроде загорелся. Но!... получилось как у многих юзеров: "Я так привык!"
__________________
По теории майский жук летать не может. Но он этого не знает. И летает... |
|||
![]() |
|
||||
Стеклоалюминий Регистрация: 23.11.2012
Санкт-Петербург
Сообщений: 63
|
Цитата:
Код:
Цитата:
|
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,407
|
Поподробнее - это практически любое руководство по любой СУБД: таблицы, связи типа "один-к одному" / "один-ко многим" / "многие-ко многим", запросы, отчеты и т.п. Добро пожаловать в мир SQL
![]()
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Регистрация: 10.08.2013
Сообщений: 11,499
|
И если уж решили переходить на Net - то подумайте, стоит ли тащить за собой основную программу на lisp. Поддержка взаимодействия между старым lisp кодом и внедряемыми net-функциями может оказаться "дороже", чем переписать код. Благо "дружелюбность" редактора той же Visual Studio Express в несколько раз повышает скорость написания кода.
|
|||
![]() |
|
||||
Thượng Tá Quân Đội Nhân Dân Việt Nam Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,372
|
Цитата:
![]() На самом деле для начала всё гораздо проще, тем более что в современных средах программирования значительная часть кода делается автоматом, а сложнейший функционал просто спрятан в компонентах. А примером того, как не надо делать является весьма популярная на форуме программа «Прокат» Василия Кондрата. Она делает простые, но учень нужные всем вещи - разрезы прокатных профилей. Потому и популярна. Но организована безобразно. Но замечу, что претензий к автору нет - когда-то, где-нибудь в AutoCAD R10 (т.е. 25 лет назад) делать можно было если не совсем так, то примерно так - не было инструментальных средств. Хотя и тогда можно было использовать БД. 1. Для такой программы нужны данные - размеры профилей, которые бывают разных видов (уголки, двутавры и т.д.). Причем возможно появление новых видов. У Кондрата данные хранятся в текстовых dat-файлах в виде ЛИСП-списков, наподобие Код:
2. Здесь достоинство в том, что такой список с помощью Лисп можно прочитать и сразу "разложить" по переменным. Но при этом надо абсолютно точно знать, что скрывается за каждым номером элемента списка. 3. Для каждого вида профиля имеется своя функция рисования в отдельном файле, а также "главная" программа, которая формирует списки для вывода в диалог с возможностью последующего выбора функции рисования. При этом в тексте программы зашиты полные имена профилей, которые непременно должны абсолютно точно соответствовать данным, хранящимся отдельно в файлах. Структура "главной" программы сожна и запутана - не зря её много лет "колхозом" корректируют. 4. Еще нужны и иллюстрации к профилям. Они сделаны в виде "слайдов" (которые еще надо сделать) и помещены в библиотеку (которую надо собрать). Надо еще программно и безошибочно показать нужный слайд. Ну и так далее. А как можно было бы сделать: 1. Создать файл базы данных, например формата MDB от MS Access. С помощью самой Access создать несколько таблиц: а)Виды проката с полями ID, NAME, IMAGE, NOTE и LISP. В поле ID - уникальный номер, NAME - название вида профиля, NOTE - какое-нибудь длинное описание, IMAGE - растровая картинка, а LISP - имя функции рисования. б) Профили для каждого вида проката с его данными. Теми, которые необходимы и для рисования сечений и для разных расчетов. При этом не дублировать информацию, т.е. не писать в одном поле число 55.0, а в другом поле "b = 55 мм". Немного пошевелив мозгами можно придумать и единую структуру данных для всех видов проката, т.е. значительно упростить работу. 2. Разработать в подходящей любимой (у каждого может быть своя) среде программирования программу (диалоговое окно) и для редактирования данных и для выбора данных. В этой программе должны быть установлены связи между таблицами Виды проката и Профили по ключевым полям. В результате может быть два отопбражаемых списка - Вид проката и Профиль. При выделении Вида проката в одном списке отображаются Профили, относящиеся только к этому виду. Будет показана и картинка, и подробное описание. И все это можно "на лету" редактировать. Можно, для упрощения работы, сделать кнопку Редактор, по которой отображаются все поля и допускается их изменение, или отображаются только основные данные. Здесь самое главное, что для работы с данными можно использовать компоненты классов TDataSet и TDataSource, а для отображения и редактирования данных - любые визуальные компоненты, связываемые с DataSource - навигаторы, сетки, деревья, отдельные поля. Программа сразу умеет двигаться по данным, безошибочно их редактировать, искать, фильтровать и многое другое. Не надо писать ни строчки кода. 3. Такой "диалог" запускается из LISP-программы известными способами. При выборе нужного профиля диалог закрывается, а в LISP возвращается имя функции рисования и список данных. Lisp, благодаря своим фундаментальным возможностям, выполняет функцию с заданным именем и с переданными данными. Разумеется, такая функция в этот момент должна быть определена, например в библиотеке. Это общая упрощенная схема. Эти же данные могут использоваться не только для рисования, но и для расчетов в других программах. И даже вообще вне Автокада. Освоение таких технологий даст безграничные возможности. А время на это надо будет потратить меньше, чем на мучения с ублюдочным DCL. Его время закончилось одновременно с появлением еще Windows-95. |
|||
![]() |
|
||||
Регистрация: 10.08.2013
Сообщений: 11,499
|
На Access часто экономят при покупке офиса. Наглядный пример - одна российская фирма (имени называть не буду во избежание рекламы) выпустила для продвижения своей продукции расчетную программу для расстановки оборудования. И, не долго думая, влепили БД на Аccess. Прошел год - и вышла новая версия программы, которая для своей работы уже не требовала Access - т.е. к ним поступила далеко не единичное замечание от пользователей по этому поводу. Иначе они бы и не "чесались")
|
|||
![]() |
|
||||
Thượng Tá Quân Đội Nhân Dân Việt Nam Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,372
|
Цитата:
Для работы необходим "движок" Jet, который распространяется Microsoft бесплатно. Но и это только если захочется работать с БД через механизмы ADO. Например, чтобы прямо из LISP выполнить SQL-запрос и получить данные вообще без лишних посредников. Но можно и работать через компоненты прямого доступа к MDB. Вообще-то есть разные локальные БД, в том числе гораздо быстрее и удобнее MDB. Я, например, использую Absolute Database - она просто встраивается в программу, не имеет никаких "движков", DLL, хранит любые виды данных и полностью совместима с SQL. Но это уже вопросы религии - кто "продал душу дьяволу" (т.е. Microsoft) на такое пойтить не может. |
|||
![]() |
|
||||
Регистрация: 10.08.2013
Сообщений: 11,499
|
Если имеется в виду эта БД, то там есть
Цитата:
|
|||
![]() |
|
||||
Thượng Tá Quân Đội Nhân Dân Việt Nam Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,372
|
Цитата:
А для большинства MDB подойдет. Только надо с умом использовать, и применять более удобные инструменты разработчика, которые тоже имеются бесплатные. |
|||
![]() |
|
||||
Thượng Tá Quân Đội Nhân Dân Việt Nam Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,372
|
А ну-ка скриншот. Может быть в какой-то последней версии. Только не надо путать конструктор SQL-запроса, из которого можно потом скопировать выражение (это есть) с обычным окном текстового редактора, в который можно вписать что угодно и выполнить.
Вот такое окно - непременный элемент всех (кроме Access) программ класса "database desktop". Именно с его помощью можно делать любые "чудеса" с базами данных. А MS Access - программа для "конечных" пользователей, и, по мнению Microsoft, им это не надо. Пусть, мол, кнопки жмут, да "мастерами" пользуются. А еще и создает в MDB кучу ненужных служебных таблиц, раздувающих базу. Потому сторонние программисты и пишут множество заменителей Access. |
|||
![]() |
|
||||
Thượng Tá Quân Đội Nhân Dân Việt Nam Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,372
|
Цитата:
Цитата:
|
|||
![]() |
|
||||
строю, ломаю Регистрация: 03.04.2008
Украина
Сообщений: 5,515
|
базы данных - это средства хранения и обработки информации... DCL - это пользовательский интерфейс для программ на лиспе... это как литры и километры сравнивать... если пользователю нужно ввести 3 числа, то DCL ему вполне подойдет, если ему нужно ввести 100 чисел, то может что-то он не правильно делает...
|
|||
![]() |
|
||||
Регистрация: 12.01.2015
Сообщений: 261
|
Цитата:
1 - поле popur_list устанавливает режим работы, 2 - служит для вывода сообщений и пояснений по работе с программой в text_part, 3 - поле list_box с текущем списком данных, 4 - поля edit_box в которые вводятся данные для дополнения списка поля list_box или загружаются параметры выбранной строки поля list_box для корректировки. Обновление поля list_box выполняется либо выбором клавиши "ИЗМЕНИТЬ", либо нажатием Enter. |
|||
![]() |
|
||||
Thượng Tá Quân Đội Nhân Dân Việt Nam Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,372
|
Цитата:
Цитата:
А вот с приведенным примером "решения проблемы DCL в окне" как раз надо писать много кода для заполнения и обработки "контролов". В том-то и беда, что Аутодеск наплевала на LISP и DCL. |
|||
![]() |
![]() |
|
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Создание графика в AutoCAD на основе txt или xls файла | Red Nova | Программирование | 116 | 06.04.2017 09:20 |
AutoCad MEP. Структура проекта. Создание розеточной сети. | serg01 | Вертикальные решения на базе AutoCAD | 3 | 04.03.2008 13:22 |
Создание своего шаблона в AutoCAD 2007 | RodiXX1 | AutoCAD | 2 | 05.08.2007 23:58 |
Одна из целей: Создание экспертных систем на базе AutoCAD. | Сергей Юрьевич | Программирование | 9 | 01.01.2005 15:17 |