|
||
| Правила | Регистрация | Пользователи | Сообщения за день | | Поиск | | Справка по форуму | Файлообменник | |
|
![]() |
Поиск в этой теме |
|
||||
Проектировщик ВК. LISP-любитель. Регистрация: 15.12.2003
Москва
Сообщений: 1,202
![]() |
Код:
__________________
apel.fas |
|||
![]() |
|
||||
Программист широкого профиля. Регистрация: 08.09.2005
Челябинск
Сообщений: 722
|
Цитата:
А вот отверстия бывают в основном для болтов М10 М16...... итд, если запросить радиус то например у механика мозги больше закипят. Хотя программа создавалась как раз для тупого ввода и при тупом вводе проще получить худобедный фланец оперируя радиусами, а так как болты измеряются в диаметрах то им и дан диаметр. Вобщем по этому вопросу можно целую тему открыть и долго дискутировать. А по поводу ввода текста или нецелых чисел в поле "количество", то тут все сделано, недаром там есть функция ALERT с предупреждением. Вчера перешел на 2006 и появились баги ведем отладку. |
|||
![]() |
|
||||
Программист широкого профиля. Регистрация: 08.09.2005
Челябинск
Сообщений: 722
|
Уважаемые господа, вам представилась возможность оценить мой первый шедевр «Фланец», а также пользователям Автокад 2006 все его баги.
Баги я исправлю, но есть вопросы вопросы и еще раз вопросы. Проблемы автоповтора уже устранил, они скрывались в команде установки текущего слоя -- неверный синтаксис команды VL-CMDF хотя слой и устанавливается, но Автокад после установки слоя выкладывает кучу мата. -- Спасибо kpblcу Включение выключение привязок походу здесь не страдает, потомучто программа была рассчитана на редактирование привязок в момент выбора точки вставки тк без привязок или возможности их редактирования указание точки будет затруднительным. ??????????????????????????????????????????? Осталась одна проблема (getpoint) CMDECHO страдает, что делать? Как позволить пользователю нажать ESK безболезненно? Если например он задал количество фланцев 100 и решил что это много и только в момент выбора точки вставки он может отказаться от продолжения программы. ??????????????????????????????????????????? |
|||
![]() |
|
||||
сисадмин Регистрация: 26.08.2003
Самара
Сообщений: 1,022
![]() |
Цитата:
В начале программы ставишь точку возврата. Можно через команду _.UNDO, а можно где то в начале, пока не было сделано изменений Код:
Код:
Код:
![]() ![]() ![]() Разумеется, *error* нужно так же локализовать. Кстати, ее можно переопределять по ходу программы любое число раз. Это даст возможность отследить какие то специфические ошибки. |
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,450
|
> mmax : Честно скажу, я не запускал на выполнение код. Есть вопрос: а почему бы не сделать цикл такого типа:
Код:
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Project Engineer Регистрация: 05.01.2005
Лос Анджелес
Сообщений: 1,392
|
Я, оно, канешна, дико извиняюсь
![]() ![]() Да, главное забыл! Такая программа уже выкладывалась в Download. Я ее использовал - работает, как часы. |
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,450
|
> Лентяй : Так и ссылочку покажи на download-е
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Инженер LISP Регистрация: 11.05.2005
Минск
Сообщений: 6,996
|
>favorite №162
Цитата:
2- имя блока Можно использовать шаблоны, как в ф-ции wcmatch Код:
- все в имени которых есть блок (мойблок, блок1, и т.д.) - все, заканчивающиеся на _с (krug_c, treug_c и т.д.) - и в придачу к ним блок TEST |
|||
![]() |
|
||||
Project Engineer Регистрация: 05.01.2005
Лос Анджелес
Сообщений: 1,392
|
Цитата:
![]() |
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,450
|
> Лентяй : я далек от таких проблем, мене оно не треба. Ссылка больше нужна mmax, так что от его имени (да и от моих юзеров) Тебе земной поклон (ох-охо-ох, теперь бы разогнуться
![]()
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Project Engineer Регистрация: 05.01.2005
Лос Анджелес
Сообщений: 1,392
|
Цитата:
Цитата:
|
|||
![]() |
|
|||||
Программист широкого профиля. Регистрация: 08.09.2005
Челябинск
Сообщений: 722
|
Цитата:
Цитата:
Стандартов много, а две окружности по краям кружочки, -- одни для всех. Если выбирать из ГОСТа то должна бвыть хорошая база данных, а здесь и двух страниц кода не наберется. Да и вообще перед выбором фланца его предварительно надо расчитать руками и оформить расчеты на бумаге и на этой же бумаге в конце расчета указать "выбран фланец ГОСТ ххххх " и вроде только тогда приступают к черчению. Так почему бы просто не указать три радиуса да количество отверстий так более универсально будет. Цитата:
Нецелые округляются до целых. А программ позволяет рисовать не только фланцы, но и наборы окружностей по заданному алгоритму. Цитата:
Огромное им спасибо. |
||||
![]() |
|
||||
Программист широкого профиля. Регистрация: 08.09.2005
Челябинск
Сообщений: 722
|
Фланец готов полностью если не считать нажатие ЕSC во время указания точки.
И еще один БЭД не очень значительный. Не буду приводить пока полностью всю программу суть проблемы можно извлечь отсюда: Код:
Код:
Почему вообще возникает такая проблема? И почему точка получает инвалидность именно при втором и третьем запуске а при других запусках нет я пробовал (repeat 50 (test)) тоже только второй и третий раз. Пробовал просто от балды Код:
Скажите как избавиться от инвалидности вообще. |
|||
![]() |
|
||||
сисадмин Регистрация: 26.08.2003
Самара
Сообщений: 1,022
![]() |
Цитата:
В любом случае, в первую очередь поглядеть в дебагере (или же просто через (princ) вывести содержимое переменной cpoint в командную строку), в какой момент дурь лезет, убедиться что точка передается верно. Ну и наверняка стоит обратить внимание на функцию (initget). PS 2006 не имею, потому посмотреть не смогу. Может там что то изменили в (getpoint) - это в хелп лезть надоть.... |
|||
![]() |
|
||||
Программист широкого профиля. Регистрация: 08.09.2005
Челябинск
Сообщений: 722
|
Цитата:
Забыл напомнить если запускать из редактора VisualLISP, то все проходит гладко, а если запустить с помошью (load) или через Tools==>Load App... тогда вылезает этот косяк, И вообще я давно заметил, что если из редактора VisualLISP программы идут без косяков, то это не значит, что они будут работать нормально вне редактора -- при вызове другими средствами. |
|||
![]() |
|
||||
инженер Регистрация: 05.12.2005
Москва
Сообщений: 425
|
Помогите. При изучении возникли вопросы .
Пробую программу написать для спецификации арматуры. Как из файла прочесть нужную строку командой read-line требуется прочесть 7 строку, но сразу команду read -line не повторяя. Можно ли это сделать и как? Тотже самый вопрос по Entsel у меня блок с аттрибутами требуется вычленить к примеру 3 аттрибут, я делал так (entnext(entnext (entnext gggg))) Можно как-то иначе Entnext не повторяя? Причем предварительно записав предыдушие значения имен аттрибутов в локальные переменные. Я организовал так: Код:
|
|||
![]() |
|
||||
сисадмин Регистрация: 26.08.2003
Самара
Сообщений: 1,022
![]() |
> mmax
Таки что же в таком случае дает вывод текущих значений в командную строку? И еще, бормотание в командной строке можно придавить - системные переменные cmdecho и nomutt (последняя не документирована была) > favorite По первому - вопросу читать построчно, в цикле. По второму - можно попробовать "угадать" хендл (5 группа DXF) и по нему выцепить. А можно и не угадать. Перебором надежнее. Ну и еще есть метод GetAttributes. Записать в переменные можно так Код:
![]() Проверяем Цитата:
|
|||
![]() |