|
||
| Правила | Регистрация | Пользователи | Сообщения за день | | Поиск | | Справка по форуму | Файлообменник | |
|
![]() |
Поиск в этой теме |
![]() |
#1 | |
Вывод результата вычислений в окне DCL?
Инженер-гидрограф
г.г. Ленинград
Регистрация: 15.09.2011
Сообщений: 170
|
||
Просмотров: 16401
|
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,450
|
После закрытия диалога понадобится снова его создавать с уже новыми данными. У Полещука все это расписано
----- добавлено через ~1 мин. ----- Заодно вспомни, что в done_dialog можно (и часто нужно) передавать соответствующие параметры.
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Регистрация: 12.01.2015
Сообщений: 261
|
Цитата:
Кроме этого у Кулик Алексей aka kpblc, на autolisp.ru много полезной информации по взаимодействию autolisp с dcl. На большее пока нет времени. Думаю справитесь. |
|||
![]() |
|
||||
Инженер-гидрограф Регистрация: 15.09.2011
г.г. Ленинград
Сообщений: 170
|
Спс. буду разбираться с Полещуком в подлиннике.
----- добавлено через ~5 ч. ----- Спс. Кулик Алексей aka kpblc, Я в кнопку вычислить выставил значение done_dialog 2, да теперь окно не закрывается, но недодумываю, как результат вставить в область "Результаты вычислений" ... туда сюда не получается, подкинь идейку.
__________________
AutoCAD Civil 3D 2012г. 32-разрядная. |
|||
![]() |
|
||||
Инженер-гидрограф Регистрация: 15.09.2011
г.г. Ленинград
Сообщений: 170
|
Я победил!
Код:
Код:
----- добавлено через ~1 ч. ----- Где-то недочет... Если изменить значение ключа "fgs" (по умолчанию 75), а потом выбрать точку, то значение "fgs" скидывается обратно на 75.
__________________
AutoCAD Civil 3D 2012г. 32-разрядная. Последний раз редактировалось Pavel_GP, 08.09.2015 в 15:54. |
|||
![]() |
|
||||
Инженер-гидрограф Регистрация: 15.09.2011
г.г. Ленинград
Сообщений: 170
|
Цитата:
Победы нет, черт... Функция выбора точки с временным закрытием диалогового окна (взята мною из руководства Полещука), при загрузки диалога она всегда предлагает выбрать точку (команда while). Но для меня требуется чтобы выбор точки был не конечный результат (чтоб программа временно прерывалась), а при нажатии на кнопку "Вычислить" появлялись результаты основной функции. (set_tile "ln1" "ln2").
__________________
AutoCAD Civil 3D 2012г. 32-разрядная. Последний раз редактировалось Pavel_GP, 09.09.2015 в 12:44. |
|||
![]() |
|
||||
Инженер-гидрограф Регистрация: 15.09.2011
г.г. Ленинград
Сообщений: 170
|
Цитата:
![]() 2. Поправьте если я неправ, я как раз память очищаю закинув переменные defun (/ ......), или я не так понял. спс.
__________________
AutoCAD Civil 3D 2012г. 32-разрядная. |
|||
![]() |
|
||||
Инженер-гидрограф Регистрация: 15.09.2011
г.г. Ленинград
Сообщений: 170
|
Цитата:
![]() 2. После запуска программы в окне результат вычислений сохранены последние результаты, а хотелось бы чтоб было пусто. (см. вложение) 3. После перезагрузки AUTOCad, программа не запускается "Команда: RAD1 ; ошибка: неверный тип аргумента: numberp: nil" (сам лисп загружен), приходиться удалить код Код:
спс.
__________________
AutoCAD Civil 3D 2012г. 32-разрядная. Последний раз редактировалось Pavel_GP, 09.09.2015 в 15:32. |
|||
![]() |
|
||||
Регистрация: 12.01.2015
Сообщений: 261
|
Цитата:
1. Изменения касаются строк кода 114 - 121 2. Разобраться с переменной dfg. В строке 136 ей присваивается тип STR, а в строке 6 функции rpk переменная переопределяется на тип REAL. Разберитесь с глобальными и локальными переменными. Цитата:
Включите трассировку и определите точку и причину сбоя. |
|||
![]() |
|
||||
Инженер-гидрограф Регистрация: 15.09.2011
г.г. Ленинград
Сообщений: 170
|
Всё, что смог изменил, но вопросы так и остались от #13.
1. Прошу загадками для меня не писать. Если можете вставить нужную функцию там где нужно вставьте плз. (большое Вам спасибо) 2. Причина сбоя думаю в том, что при загрузки диалога функция (rpk) не читается, а где именно проблема для меня это долгая дума.
__________________
AutoCAD Civil 3D 2012г. 32-разрядная. |
|||
![]() |
|
||||
Инженер-гидрограф Регистрация: 15.09.2011
г.г. Ленинград
Сообщений: 170
|
Привет.
Я предполагаю, что при нажатии на кнопку "Вычислить" происходят вычисления по функции (rpk) и результаты заносятся в значения "ln1 ln2". Есть какие-то замечания по всему коду ещё? Какой-то баг в функции (rpk), основная функция её не читает. По идее должно быть так Код:
__________________
AutoCAD Civil 3D 2012г. 32-разрядная. Последний раз редактировалось Pavel_GP, 10.09.2015 в 15:55. |
|||
![]() |
|
||||
Регистрация: 12.01.2015
Сообщений: 261
|
Не хочется отнимать победу.
|
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,450
|
Добро пожаловать в пошаговую отладку. А заодно и в области видимости
----- добавлено через ~3 мин. ----- Дополнительно: вход в vlide, меню tools - Environment options - General Options. На закладке Diagnostics установить все флажки. Нажать ОК. Открыть lsp-код и нажать сочетание клавиш Ctrl+Shift+C. Внимательно проанализировать выводимые сообщения.
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
строю, ломаю Регистрация: 03.04.2008
Украина
Сообщений: 5,515
|
Победу в чем?
У вас не код, а аццкий фарш и перловка в голове. Начните комментировать свой код, побуквенно, а то вы плаваете как будущий инвалид на экзамене... Что это??? Открывайте справку и пишите, что делает каждая функция. rpk - это русский православный конь или рулет по-корейски? Что такое функция без аргументов? Что возвращают функции? Что происходит при вызове функции? Дальше диалог. Что происходит при загрузке диалога? Что происходит при закрытии диалога. Что такое плитки? Откуда и когда их заполнять. Что делает каждая плитка? Какие бывают кнопки? Зачем я вставил эту кнопку в диалог? Что происходит когда я нажал кнопку? Что будет, если я случайно нажал [Esc], [Space] или [Enter] при выборе точки? Ну и наконец, почему я вставляю там где нужно, а он волшебным образом не начинает работать... |
|||
![]() |
|
||||
Инженер-гидрограф Регистрация: 15.09.2011
г.г. Ленинград
Сообщений: 170
|
Цитата:
2. Про перловку и инвалида, я не очень понял тебе понятнее., пропустим. 3. Код на столько прост, но от тебя вытекло, что действительно ты профессор, а я ученик. Но если так, то напиши мне ширину покрытия МЛЭ ЕМ3002? 4. rpk ответ ты дал сам, название пользовательской функции - расшифровка не имеет значения. Функция rpk выполняет основной расчет программы с использованием трех переменных dfg_rad, x1, y1. Команды все стандартные, ничего нового. 5. Локальные, глобальные переменные, буду познавать их предназначение. 6. Код прост, запутался, поэтому мой топик тут, пузыриться не нужно. Прошу только по делу. Пример trushev.
__________________
AutoCAD Civil 3D 2012г. 32-разрядная. |
|||
![]() |
|
||||
строю, ломаю Регистрация: 03.04.2008
Украина
Сообщений: 5,515
|
Это был достаточно прагматичный ответ...
вот этого? Еще раз прочитай свой пункт 4. В нем ответ почему твоя программа не запускается |
|||
![]() |
|
||||
конструктор Регистрация: 15.08.2012
г. Пермь
Сообщений: 2
|
Если ещё актуально
В функции RAD1 не определены переменные x1 и y1 (defun C:RAD1 (/ dcl_id step pt x1 y1) (setq dcl_id (load_dialog "RAD2.dcl")) (setq step 2 x1 0.0 y1 0.0).....у меня всё работает. ----- добавлено через ~1 мин. ----- gomer видимо на это и намекал ![]() |
|||
![]() |
|
||||
Инженер-гидрограф Регистрация: 15.09.2011
г.г. Ленинград
Сообщений: 170
|
Для меня намёки, это как аццкий фарш и перловка в голове.
Спс. UrikG ![]() gomer серьёзный продуман, ничего против не имею. Для меня Lisp это лишь упрощение некоторых моментов в моей непосредственной работе. Цитата:
__________________
AutoCAD Civil 3D 2012г. 32-разрядная. |
|||
![]() |
|
||||
конструктор Регистрация: 15.08.2012
г. Пермь
Сообщений: 2
|
Ну тогда вот так...
(defun C:RAD1 (/ dcl_id step pt x1 y1 dfg) (setq dcl_id (load_dialog "RAD2.dcl")) (setq step 2 x1 0.0 y1 0.0 dfg 75)..... ... ;--------------–Результат вычислений----------------------- (rpk) (action_tile "fgs" "(progn (setq dfg (atof (get_tile \"fgs\")))(rpk))") ; ПРИ ИЗМЕНЕНИИ ПОЛЯ ЗАПИСЫВАЕМ ЗНАЧЕНИЕ В ПЕРЕМЕННУЮ dfg (action_tile "ln1" "(rpk)") (action_tile "ln2" "(rpk)") ;------------------------------------------------------------- (defun rpk (/ fg ao f_ps e1 e2 sfg2 ko l1_r ll1_g ll1_m l1_g l1_m l1_s mo1 f1_r ff1_g ff1_m f1_g f1_m f1_s) ;(setq dfg (atof (get_tile "fgs"))) - ЭТУ СТРОКУ ЗАКОМЕТИРОВАТЬ ИЛИ УДАЛИТЬ Последний раз редактировалось UrikG, 10.09.2015 в 21:37. |
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,450
|
Ясно, мои рекомендации в #20 отправились лесом.
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Инженер-гидрограф Регистрация: 15.09.2011
г.г. Ленинград
Сообщений: 170
|
Никуда не лесом. Сегодня всё начну, как раз с п.20., еще не дошёл просто.
----- добавлено через ~1 ч. ----- Цитата:
1. Что выдаёт первое окно? Это ошибки? При правильной работе оно должно быть пустым? 2. Что выдает второе окно? (Shift+Ctrl+R) (трассировка), Как с ними дальше обращаться? Оно тоже должно быть пустым при правильной работе? 3. По твоей рекомендации изменил немного в коде Код:
----- добавлено через ~38 мин. ----- 1. Перевел глобальные переменные в локальные: Код:
Код:
Код:
----- добавлено через ~3 ч. ----- 1. Пока Кулик Алексей aka kpblc нет, но жду его возвращения сюда. 2. Работаю с вариантом от UrikG тут по подробнее: а) Запускается, ошибку не выдает (Спс) б) Вопрос открытый остаётся, при нажатии на кнопку "Вычислить" значение "fgs" становится по умолчанию, т.е если его изменить, то оно возвращается обратно. (Должно не возвращаться)
__________________
AutoCAD Civil 3D 2012г. 32-разрядная. Последний раз редактировалось Pavel_GP, 11.09.2015 в 12:46. |
|||
![]() |
|
||||
Регистрация: 12.01.2015
Сообщений: 261
|
Еще раз. Перед закрытием окна (setq dfg (get_tille "fgs")) сохраняем текущее значение поля. При открытии окна функцией (set_tille "fgs" dfg) восстанавливаем сохраненное значение.
|
|||
![]() |
|
||||
строю, ломаю Регистрация: 03.04.2008
Украина
Сообщений: 5,515
|
Цитата:
Программный код не должен работать правильно Программный код не должен вообще работать Программный код вообще никому ничего не должен... Цитата:
----- добавлено через ~3 мин. ----- Объясни мне зачем закрывать диалог при нажатии кнопки Вычислить? |
|||
![]() |
|
||||
Инженер-гидрограф Регистрация: 15.09.2011
г.г. Ленинград
Сообщений: 170
|
Цитата:
![]() Диалог не закрывается (done_dialog 2). ПыСы gomer смотри п.20
__________________
AutoCAD Civil 3D 2012г. 32-разрядная. |
|||
![]() |
|
||||
Инженер-гидрограф Регистрация: 15.09.2011
г.г. Ленинград
Сообщений: 170
|
Всё правильно понял.
----- добавлено через ~1 мин. ----- Ты предполагал о временном закрытии? При нажатии на кнопку Указать, окно закрывается (указывается точка), окно открывается и заносятся координаты точки в х и y.
__________________
AutoCAD Civil 3D 2012г. 32-разрядная. |
|||
![]() |
|
||||
строю, ломаю Регистрация: 03.04.2008
Украина
Сообщений: 5,515
|
Сам-то понял что написал?
У тебя авгиевы конюшни, а не код, половина написана в лиспе, половина в диалоге... Сам разбирайся... Где исправить? Везде! Ни один адекватный программист не заполняет action и value в диалоге... Беда не в том, что у тебя миллион ошибок, а в том, что ты не хозяин своего кода... Быть хозяином - это знать и отвечать за каждую строчку кода. Тогда тебе и отладка не понадобится. А копипаста - это для студентов. Это так... чтоб работало... Код:
Код:
|
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,450
|
Практически те же фаберже, но вид сбоку
Код:
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,450
|
А мне лениво разбираться в этом спагетти. Сделал, чтобы работало хоть как-то - и пущщай этот Франкенштейн идет дальше
![]() ![]()
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Инженер-гидрограф Регистрация: 15.09.2011
г.г. Ленинград
Сообщений: 170
|
Цитата:
Читай Полещука У тебя лично помощи не попрашу. Если ты помнишь мы с тобой уже общались на тему внутренних вычислений, там ты мне помог без проблем. Если захочешь сам найдешь эту тему. 1. Это не копипаст. Основные расчёты - это моё, и написано мною, и ошибки тоже мои. Временный выход из диалогового окна взят из "Руководтство по автолиспу Полещук", там у него как раз есть пример. Поэтому не нужно говорить того чего не знаешь... 2. gomer Большое тебе спасибо, наконец-то получился ответ на п.35, но я не просил переписывать мой код, а особенно заменять внутри на свои переменные, чтоб я совсем запутался, а ты потом кричал что у меня авгиевы. конюшни. ![]() 3. Кулик Алексей aka kpblc тебе тоже большое спасибо, хоть мои переменные не изменял. 4. Вопрос обоим продуманом gomer и Кулик Алексей aka kpblc, вот нафига из такого простого уравнения вы лепите такие сложности (допфункции, диалоговые окна внутри лиспа и т.д. и т.п.), проще работать не будет? Это конечно всё круто, есть куда стремиться, но мне это не нужно у меня всё просто. 2+2=4, а у вас тоже 4, но через десятки уравнений. 5. Проверю ваши предложения в понедельник, дома не работаю. Хороших выходных
__________________
AutoCAD Civil 3D 2012г. 32-разрядная. Последний раз редактировалось Pavel_GP, 11.09.2015 в 18:35. |
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,450
|
Ну, я бы не сказал, что "уравнение простое" - может, я просто не стал особо сильно вникать. А те "сложности", что были добавлены, лично для меня преследуют прежде всего одну цель: структурировать код. Хоть немного. В "САПР на базе..." этому подходу очень много посвящено - больше половины книги, если не ошибаюсь.
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
строю, ломаю Регистрация: 03.04.2008
Украина
Сообщений: 5,515
|
Тут я с Pavel_GP согласен. Это первая светлая мысль из его головы... kpblc, признайся, что с халтурил, просто перенес диалог в лисп, а все болячки кода так и остались. А раз так, то какой смысл в этом?
|
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,450
|
Почти все - но я поставил доп.обработки nil-значений при вычислениях. Чтобы убрать все болячки, код надо переписывать чуть больше, чем целиком. Я думаю, что пусть лучше автор сам этим займется (да и после твоего кода пытаться что-то сделать - бесперспективняк полнейший
![]()
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Инженер-гидрограф Регистрация: 15.09.2011
г.г. Ленинград
Сообщений: 170
|
Всем привет.
1. gomer. проверил твою работу, всё отлично - как всегда ты любишь краткость и компактность. Есть вопрос: В примере руководства от Полещука (стр. 289), где описывается временный выход из ДО, а именно использована функция done_dialog с аргументом 3, который автоматически становиться возвращаемым значением функции start_dialog. Ты проделал работу по своему усмотрению. Значит временный выход можно достичь разными способами? 2. aka kpblc, твоя обработка работает в старом режиме, при выборе новой точки, слетает значение "fgs". Всем принимавшим участие, внесенный свой вклад в развитие мне нужной программки Огромное спасибо!!! Ну на этом моя работа не заканчивается, я не зря назвал программу RAD (расчет азимута и расстояния). Поэтому продолжение следует. Буду выкладывать свои результаты, для вашей оценки и рассмотрения, и конечно подмоги в нелегком труде. ![]() Планы: 1. Добавить выбор двух точек и их результаты перевода. 2. Добавить формулы расчетов Азимута и Расстояния и выводы их результатов.
__________________
AutoCAD Civil 3D 2012г. 32-разрядная. |
|||
![]() |
|
||||
Регистрация: 12.01.2015
Сообщений: 261
|
Прошу прощения, что лезу вперед батьки. Если мне не изменяет память для done_dialog зарезервировано три значения -1 - аварийное закрытие окна, 0 - по Esc, 1 - по Enter.
Предлагаю повысить дуракоустойчивость кода дополнив на 151 строке (action_tile "fgs_rad" "(kont $value $key 0 'nil 't)") где kont Код:
Последний раз редактировалось trushev, 15.09.2015 в 16:52. |
|||
![]() |
|
||||
Инженер-гидрограф Регистрация: 15.09.2011
г.г. Ленинград
Сообщений: 170
|
Цитата:
----- добавлено через ~3 мин. ----- Цитата:
![]() trushev напиши для чего нужна твоя функция?, применение ее к моей программе. спс. ----- добавлено через ~2 ч. ----- # Откорректировал формулы перевода, можно работать в разных полушариях. За основу брал обработку от qomer. Да теперь выбор двух точек. Код:
Код:
__________________
AutoCAD Civil 3D 2012г. 32-разрядная. Последний раз редактировалось Pavel_GP, 15.09.2015 в 08:54. |
|||
![]() |
|
||||
строю, ломаю Регистрация: 03.04.2008
Украина
Сообщений: 5,515
|
Цитата:
Вместо Код:
И вообще я под этой программой не подписывался, мне дорога моя репутация... |
|||
![]() |
|
||||
Регистрация: 12.01.2015
Сообщений: 261
|
gomer, Никоем образом не думал подвергнуть критике Ваш код. Понятно, написан на скорую руку, лишь бы работал. Не настаиваю на своей затее. Согласен что защищать в этом случае нужно и координаты. Либо для координат предусмотреть блокировку полей или вводить их в text_part. согласен "info" не помешает.
----- добавлено через ~5 мин. ----- Pavel_GP, Исправил ошибку в (action_tile "fgs_rad" (kont $value $key 0 'nil 't)). Функция предназначена для контроля введенных в поле edit_box значений. В случае ввода не цифровых данных или числа более n выводит сообщение об ошибке и подсвечивает поле с ошибкой. При желании может быть дополнена блокировкой клавиши "Вычислить". Последний раз редактировалось trushev, 15.09.2015 в 08:35. |
|||
![]() |
|
||||
Инженер-гидрограф Регистрация: 15.09.2011
г.г. Ленинград
Сообщений: 170
|
1. trushev Сегодня протестирую, посмотрю, спс за труд.
![]() 2. gomer ты опять за своё. ![]() ![]() ![]() ![]() ----- добавлено через ~29 мин. ----- 3. trushev запустил твой код. срабатывает при запуске программы "Обращение к функции не предусмотрено! СПРАВКА" Ошибка: деление на нуль., программа закрывается.
__________________
AutoCAD Civil 3D 2012г. 32-разрядная. Последний раз редактировалось Pavel_GP, 15.09.2015 в 09:34. |
|||
![]() |
|
||||
Регистрация: 12.01.2015
Сообщений: 261
|
Цитата:
(action_tile "fgs_rad" (kont $value $key 0 'nil 't)) $value - считывает текущее значение поля edit_box и всегда должно быть STR. Что подается на вход функции ? |
|||
![]() |
|
||||
Инженер-гидрограф Регистрация: 15.09.2011
г.г. Ленинград
Сообщений: 170
|
Real, опять голову ломать, кто-то халтурил..., и что мне делать с этой бедой..., только не понять, в edit_box летят строковые значения
__________________
AutoCAD Civil 3D 2012г. 32-разрядная. Последний раз редактировалось Pavel_GP, 15.09.2015 в 12:04. |
|||
![]() |
|
||||
Инженер-гидрограф Регистрация: 15.09.2011
г.г. Ленинград
Сообщений: 170
|
что написать, ты меня вводишь в тупик
----- добавлено через ~7 мин. ----- Почему ругается непонятно: После запуска программы в edit_box летят значения Код:
Код:
__________________
AutoCAD Civil 3D 2012г. 32-разрядная. |
|||
![]() |
|
||||
Регистрация: 12.01.2015
Сообщений: 261
|
После запуска программы или функции kont?
Смотри lsp #46 на строке 364 (set_tile "fgs_rad" (rtos dfg_rad)) выполняется присвоение полю текущего значения dfg_rad. Если на пустую 369 строку вставить (action_tile "fgs_rad" (kont $value $key 0 'nil 't)), то при редактировании поля (вводе другого значения) будет выполняться контроль корректности введенного значения. При переходе к другому полю (клавише) $value считает введенное значение поля "fgs_rad", $key считает имя ключа - "fgs_rad", 0 - допускаемое минимальное значение поля "fgs_rad", 'nil - разрешен ввод только цифровых данных, 't - при ошибке сообщение не блокируется. Если в поле будет введен не цифровой символ, или число менее 0 появится информационное сообщение об ошибке и подсветится введенное в поле "fgs_rad" ошибочное значение. Функция должна быть описана в lsp. |
|||
![]() |
|
||||
Инженер-гидрограф Регистрация: 15.09.2011
г.г. Ленинград
Сообщений: 170
|
в п.#49 я писал о том, что вылетает ошибка до редактирования, сразу после запуска [с твоей строки (action_tile "fgs_rad" (kont $value $key 0 'nil 't))], смысл работы твоего кода понятен. Но если бы в edit_box подавалось бы не текстовое значение, он бы сразу ругнулся. А у меня подается текст.
__________________
AutoCAD Civil 3D 2012г. 32-разрядная. Последний раз редактировалось Pavel_GP, 15.09.2015 в 15:49. |
|||
![]() |
|
||||
Инженер-гидрограф Регистрация: 15.09.2011
г.г. Ленинград
Сообщений: 170
|
Спс. всё заработало.
![]() Просьба если не трудно: доделать свой код , а именно внести проверку на точку (.) Код:
спс. ----- добавлено через ~2 ч. ----- Вставил Расчёт Азимута (в прямом и обратном направлениях) Код:
Код:
Спс. trushev вставил его код на проверку введённых данных. Пысы: С вычислением расстояния могут возникнуть трудности, буду преодолевать их.
__________________
AutoCAD Civil 3D 2012г. 32-разрядная. Последний раз редактировалось Pavel_GP, 16.09.2015 в 16:53. |
|||
![]() |
|
||||
Регистрация: 12.01.2015
Сообщений: 261
|
Цитата:
|
|||
![]() |
|
||||
Инженер-гидрограф Регистрация: 15.09.2011
г.г. Ленинград
Сообщений: 170
|
Всем Привет.
Закончил работать над своей программой, выкладываю ее конечный результат, дописал расчёт расстояния. Если администрация не против могу выложить ее в готовые программы. Буду ждать от Вас ответа. Код:
Код:
Спасибо большое Всем кто помогал мне в её реализации. ![]() ![]() Пысы: Кто будет ей пользоваться прошу обратить внимание на 2 и 3 строку кода .lsp
__________________
AutoCAD Civil 3D 2012г. 32-разрядная. Последний раз редактировалось Pavel_GP, 05.10.2015 в 13:04. Причина: удалил из локальных в rpk (x1 x2 y1 y2) |
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,450
|
А что функции преобразований как локальные не сделал?
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Инженер-гидрограф Регистрация: 15.09.2011
г.г. Ленинград
Сообщений: 170
|
я ждал твоего возмущения... жестко и в точку.
![]() Пысы: для тебя лично повторюсь я НЕ программист!!!
__________________
AutoCAD Civil 3D 2012г. 32-разрядная. Последний раз редактировалось Pavel_GP, 05.10.2015 в 22:02. |
|||
![]() |
|
||||
строю, ломаю Регистрация: 03.04.2008
Украина
Сообщений: 5,515
|
Ну, хорошо. Я расскажу еще раз. Однажды ко мне обратился заказчик и попросил сделать программу. Оказалось, что программу уже сделали до меня и выдали на руки заказчику, получив денежку. Возможно даже кто-то из местных. По-крайней мере призрак Полещука в ней бродил. Оказалось так же, что эта программа делала ровным счетом чуть менее, чем ничего. Но зато выглядела она увесисто... Так вот мне бы хотелось, чтоб если даже у меня и увели работу, то эта работа была выполнена качественно. Иначе какой в ней смысл.
Почему локальные функции - хлам? Потому что сегодня ты написал одну программу, завтра вторую, а через год у тебя будет 20 программ, в которых будут 100 одинаковых функций, определенных локально. А потом ты забудешь, что уже определил 20 раз функцию и воспользуешься встроенной, пару раз. А потом ты уже запутаешься в типах данных на входе и выходе и будешь городить еще функции для конвертации одного типа данных в другой и обратно. И наконец у тебя получится нечто подобное bgtools в которой из 150кб кода полезным будет максимум 20-50. При этом у тебя даже элементарной менюшки не окажется, не говоря уже о справке... Но не смотря на то, что ты все сделал правильно, тебе еще понадобится универсальный обработчик ошибок, но и он тебе не поможет. При этом тебе придется минимизировать комментарии, чтоб хоть как-то разобраться в написанном, а без комментариев ты все равно не разберешься. Не пройдет и 5 лет как ты будешь смотреть на свой, родной код, как... ну, в общем исступленно (это я тебе по собственному опыту говорю). А переписывать ты свой код будешь не раз и не два. Вместо локальных функций в визуал лисп придумали проекты и компиляцию в с отдельным пространством имен. Это даже эффективней, чем создавать функции с "именными" префиксами. Единственный минус - исходники рано или поздно потеряются, но до тех пор много воды утечет... |
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,450
|
gomer, в данном конкретном случае локальные функции значительно более выгодны, чем глобальные: проект единственный, команда единственная и мусора лишнего вносить не надо. При условии предоставления только vlx / fas без исходников лично я даже смотреть в сторону такой программы не буду - черт его знает, что там нарисовано и как. Вычищать потом замучаешься.
----- добавлено через 37 сек. ----- Pavel_GP, ты бы обновил стартовый пост, указав окончательное решение...
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Thượng Tá Quân Đội Nhân Dân Việt Nam Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,372
|
Цитата:
Ну а такие, как rtd, dtr, kont, ввод данных и прочие универсальные надо сразу выносить в библиотеку. А также надо избегать элементарных ошибок. Вот например в коде наивно написано: Код:
|
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,450
|
ShaggyDoc, я же сказал, что "в данном конкретном случае". Я не говорил про потоковую разработку взаимоувязанных функций и команд. Если человек начнет заниматься подобной библиотекой / комплексом / как-хочется-так-и-называй, то вопрос исключения дублирования функционала встанет в полный рост. Но сейчас? Для этой одной задачи? ИМХО смысла нет.
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Инженер-гидрограф Регистрация: 15.09.2011
г.г. Ленинград
Сообщений: 170
|
Цитата:
2. Окончательное решение лежит тут http://forum.dwg.ru/showthread.php?t=125631 3. Форумчане опять горячая дискуссия по поводу красоты написания кода, которые на результаты расчетов не вливают. С вашей точки зрения всё правильно глаголите, это ваше программисткое дело, ваш хлеб. Я для своей результат получил. Это уже отходы от темы топика. Создайте топик "с 0 и до релиза программы" и там можно оспаривать. 4. Вставил информацию по Вашим просьбам =) 5. Ув. gomer опять много текста и воды не в тему топика, что-то непонятно хочешь доказать, человеку который далек от программного дела. 6. И главное aka kpblc если с твоей точки зрения моя программа, которая лежит в готовых не актуальна или как-то не профессионально написана (оформлена), в твоей власти её удалить. Я возражать не буду и на профессионализм в вашем деле не претендую. Тему можно закрывать. Всем спс. До встреч в новых топиках.
__________________
AutoCAD Civil 3D 2012г. 32-разрядная. |
|||
![]() |
|
||||
Как бы всё правильно пишите, но а смысл?
Во-первых, автор уже писал Во-вторых, чаше всё равно все учатся на своих ошибках, пускай так и дольше зато усваивается лучше.
__________________
Почему все вдруг становятся умными, когда уже не надо? |
||||
![]() |
![]() |
|
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Как сосчитать сумму цифр из отдельных мтекстов (и лисп для подсчета спецификаций) | Red Nova | LISP | 667 | 18.07.2025 17:09 |
Ваши сканы, наша обработка и перевод в DJVU. | Armin | Поиск литературы, чертежей, моделей и прочих материалов | 3866 | 02.04.2025 09:21 |