| Правила | Регистрация | Пользователи | Сообщения за день | | Поиск | | Справка по форуму | Файлообменник | |
|
Поиск в этой теме |
13.01.2020, 16:17 | #1 | |
Как создать набор из блоков двух типов? Помогите откорректировать программу.
Регистрация: 19.11.2014
Сообщений: 2,435
|
||
Просмотров: 6191
|
|
||||
Регистрация: 19.11.2014
Сообщений: 2,435
|
И все же с этим лиспом есть какая-то проблема. Поначалу он вроде бы работает, но после нескольких использований начинает появляться такая ошибка:
Выяснить в какой момент появляется ошибка - пока не удалось. "PRODUCT" - это значение атрибута "Формат" у двух строк-блоков из сокращенной спецификации справа (см. тестовый файл). Атрибут чисто технический, нужен для организации работы с этими блоками. Иногда функция вычисления массы выдает ошибку "NORMAL" - это тоже атрибут "Формат", но для блоков в обычной спецификации слева. Что не так с этим лиспом? Сам лисп в первом сообщении, я только заменил "СпецСтр" на "СпецСтр*". Тестовый файл во вложении. |
|||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,848
|
Ну, я бы вообще переделал (не вижу большого смысла в таких наборах переменных):
Код:
Чуть-чуть напутал со скобками и кодом. Выложил нормальный вариант.
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. Последний раз редактировалось Кулик Алексей aka kpblc, 16.01.2020 в 16:54. |
|||
|
||||
Регистрация: 19.11.2014
Сообщений: 2,435
|
|
|||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,848
|
Ну так заменить одну строку на несколько, делов-то:
Код:
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
Регистрация: 19.11.2014
Сообщений: 2,435
|
Я в этом лиспе плохо соображаю, поэтому для меня это сложно. Спасибо
----- добавлено через ~20 мин. ----- Ну вот, поиспользовал немного этот код, но снова появляется ошибка из поста 5. По-моему она начинает проявляться после того, как я добавляю в чертеж еще один экземпляр блока СпецСтр или СпецСтрИзд, но не уверен. |
|||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,848
|
Ей там неоткуда появляться. Переименуй в моем коде команду (ну, например, в calc1) и вызывай по новому названию.
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
Регистрация: 19.11.2014
Сообщений: 2,435
|
Цитата:
Сообщение при ошибке - неверная функция: "PRODUCT". Такое сообщение появляется, если последним в чертеж был добавлен блок СпецСтрИзд. У него в атрибут Формат я помещаю текст PRODUCT. Если же последним в чертеж добавлен блок СпецСтр, то при попытке подсчета суммарного веса выдается сообщение неверная функция: "NORMAL". Я программно в атрибут Формат блока СпецСтр помещаю текст NORMAL. Почему-то команда подсчета общего веса cs_calculate_weight считает текст в атрибуте Формат блоков СпецСтр и СпецСтрИзд именем функции и пытается эту функцию запустить. Не понимаю как это происходит. ----- добавлено через ~5 мин. ----- И, кстати, я пользуюсь еще лиспом, который нумерует строки спецификации, состоящие из блоков СпецСтр. Код:
|
|||
|
||||
Регистрация: 19.11.2014
Сообщений: 2,435
|
Это не мой код, я не понимаю как он работает.
В сообщении номер 5 я выкладывал файл. Но я не смог точно выяснить при каких условиях появляется ошибка. Некоторое время все работает, но вскоре перестает. Перезагрузка файла решает проблему. |
|||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,848
|
Сет, а кто тебе гарантирует, что порядок описания атрибутов именно такой, как ты предполагаешь?
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
Регистрация: 19.11.2014
Сообщений: 2,435
|
Цитата:
Так порядок же определен самим блоком. Он заранее известен. |
|||
|
||||
Регистрация: 10.08.2013
Сообщений: 11,052
|
да, порядок следования вставок атрибутов должен совпадать с порядком следования определений атрибутов в определении блока. Но лучше "подстелить соломки" и еще имя тэга проверять, имхо - главное, чтобы атрибут вообще был)
|
|||
|
||||
Регистрация: 19.11.2014
Сообщений: 2,435
|
Похоже ошибка начинает появляться сразу после того, как я добавляю в чертеж экземпляр блока "СпецСтр" или "СпецСтрИзд". Причем когда это делаю с помощью специального лиспа. Если просто добавить этот блок в чертеж прямо с палитры блоков - ошибка не возникает. А я добавляю с помощью вот такого набора команд.
Код:
Вот при использовании всего этого механизма и последующей попытке подсчитать сумму позиций по спецификации функцией cs_calculate_weight начинает появляться ошибка из поста 5. |
|||
|
||||
САПР Регистрация: 29.09.2011
СПб
Сообщений: 283
|
Цитата:
__________________
На работе было скучно:shout: |
|||
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Требуется написать программу для автоматической расстановки блоков по полилинии. | Mozgolom | Поиск исполнителей | 0 | 30.12.2019 15:50 |
Как создать одно 3д тело из двух цветов (или материалов)? | Loksana | AutoCAD | 5 | 26.01.2018 14:30 |
народ помогите создать линию проектируемой телефонной канализации | ОлегD | AutoCAD | 13 | 23.08.2011 19:30 |
Подсчет и сортировка блоков на текущем слое. Помогите отредактировать. | Kortes | Программирование | 17 | 26.03.2010 18:46 |
Как создать сопряжение двух швеллеров по косому срезу | BM60 | AutoCAD | 3 | 24.04.2009 14:56 |