|
||
| Правила | Регистрация | Пользователи | Поиск | Сообщения за день | Все разделы прочитаны | Справка по форуму | Файлообменник | |
|
Поиск в этой теме |
|
||||
Регистрация: 23.04.2015
Сообщений: 163
|
Пока разбирался тут с ssget-ом, заметил, что фактические цвета рамки выбора (переменные windowareacolor и crossingareacolor) не соответствуют таковым в окне выбора цвета, видимо, из-за прозрачности. После экспериментов со сменой цвета и проверкой в паинте выяснилось, что величины RGB компонент меньше примерно в 4 раза. Но если пробовать вычислять цвет так, то на некоторых значениях отличается на несколько единиц, а хочется, конечно, точно. Так вот, как определить "настоящий" цвет заливки?
|
|||
|
||||
Алюминиевые фасадные системы (Инженер-Конструктор) Регистрация: 29.07.2009
Санкт-Петербург
Сообщений: 2
|
Есть имя переменной взятое из файла (пр. "SAPsto")
Есть значение переменной взятое из файла (пр. "KRF-107") Вопрос: Как в LISP составить команду (setq SAPsto "KRF-107") ? Имя переменной получается из файла и может меняться. Попробовал (atoi "(setq SAPsto "KRF-107")") - не получилось. Или другой вариант той же проблемы: Есть цикл, в нем N = N+1 В первом повторении цикла должны получить (setq testN 1), где testN = test1 Во втором (setq testN 1), где testN = test2 Последний раз редактировалось ZloyEjik, 07.08.2016 в 14:24. |
|||
|
||||
Регистрация: 10.08.2013
Сообщений: 10,961
|
Цитата:
|
|||
|
||||
Алюминиевые фасадные системы (Инженер-Конструктор) Регистрация: 29.07.2009
Санкт-Петербург
Сообщений: 2
|
Цитата:
(setq test1 "1") (setq test2 "1") (setq test3 "1") (setq test4 "1") ... (setq testN "1") Другими словами, чтобы имя переменной тоже было переменно Другими способами я уже решил задачу. (1ая через cond): (while (setq stroka (read-line sett)) (cond ( (wcmatch stroka "*SAPsto*") (setq SAPsto (substr stroka 1 (vl-string-position (ascii ";") stroka)))) ; Стойка ( (wcmatch stroka "*SAPrigF*") (setq SAPrigF (substr stroka 1 (vl-string-position (ascii ";") stroka)))) ; Ригель с фрезеровкой .... )) (2ую можно записывать не одну переменную а добавлять в один список (list) все переменные, а потом считывать) Но интересно, можно ли решить задачу через изменение имени переменной. |
|||
|
||||
Регистрация: 10.08.2013
Сообщений: 10,961
|
не усложняйте себе задачу, потом при попытке что-то изменить сами запутаетесь) автоматизировать надо то-что невозможно или затруднено сделать стандартными средствами программы. Со списком правильная мысль, в "нормальных" ЯП были бы массивы.
|
|||
|
||||
Цитата:
Примеры функций DwgRuLispLib: Две функции работы со списками _dwgru-assoc и _dwgru-assoc-multi
__________________
Как использовать код на Лиспе читаем здесь |
||||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,772
|
Второй вариант обычно быстрее. И читается, как правило, проще.
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
строю, ломаю Регистрация: 03.04.2008
Украина
Сообщений: 5,515
|
|
|||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,772
|
Уууу, робяты, ну вы и тему подняли
Копирастинг кода - зло. Если какая-то последовательность действий выполняется больше чем 1 раз, стоит рассмотреть необходимость ее выноса в отдельную функцию. Например, функция создания слоя с различными параметрами, или функция вставки блока / ссылки, или функция открытия стороннего файла dwg, или функция сохранения лога, или... Короче, общий принцип понятен. При таком подходе не надо комментировать код внутри функции, достаточно дать ее внятное описание, рассказать, какой параметр за что отвечает и теде. Функция (что бы она ни делала) работает так, как написано, и возвращает строго определенные типы результатов. Постарайтесь все же найти "САПР на базе AutoCAD - как это делается" - там много интересного.
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,772
|
Кому как, кому как ))) У меня сейчас больше 700 функций, копипастингом не занимаюсь принципиально. Вопрос в организации работы, я думаю. Ну, все, пофлудил - и будя
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
Регистрация: 20.03.2008
Сообщений: 2,653
|
Может, я не совсем правильно понял, но (даже не вникая в суть кода) разве это переменная? Все, что до знака "/" - это аргументы функции, а sp_peremen, стало быть - один из них, представленный списком. И этот аргумент может стать переменной в функции более высокого уровня, и тогда его нужно локализовать в ней, но уже после "/". При этом, по-моему, придется локализовать и все остальные переменные, которые этот список будет в себя включать. Могу ошибаться, но, кажется, нельзя локализовать все переменные, локализовав одну, содержащую в себе их в виде списка.
|
|||
|
||||
Регистрация: 12.01.2015
Сообщений: 261
|
Постараюсь дать более подробные пояснения.
В коде выполнена попытка унифицировать считывание данных с различных диалоговых окон. Не знаю на сколько эта идея бредовая. sp_peremen аргумент функции test является списком произвольного числа произвольных имен переменных и может иметь вид: (list 'ed1 'ed2 'tg1) или (list 'ed5 'ed6 'ed7 'ls1 'tg4 'tg8) или нечто иное. sp_klpoley аргумент функции test является списком ключей полей диалогового окна. Количество элементов списка и их последовательность должны соответствовать списку sp_peremen. sp_klpoley может иметь вид: (list "ed1" "ed2" "tg1") или (list "ed5" "ed6" "ed7" "ls1" "tg4" "tg8") или нечто иное. В цикле с использованием функции "set" (не setq) выполняется присвоение переменным значений. Цитата:
Ничего не нашел по локализации вложенной функции. Скорее всего ее имя должно фигурировать в перечне локальных переменных основной функции. Но подтверждение этому не нашел. Цитата:
Значит без принудительного обнуления переменных из списка не обойтись. Либо искать другие варианты решения задачи. |
|||
|
||||
Регистрация: 20.03.2008
Сообщений: 2,653
|
Цитата:
А чем смущает такой подход? Причем, я бы даже добавил это в локальный *error* и вызывал бы его в конце выполнения кода. |
|||
|
||||
Регистрация: 12.01.2015
Сообщений: 261
|
|
|||
|
||||
Регистрация: 08.02.2012
Сообщений: 16
|
Добрый день, подскажите , пожалуйста, есть ли возможность с помощью Lisp преобразовать объект в блок и программно добавить к полученному блоку атрибут? Пытаюсь выполнить следующие преобразования: пользователь выбирает полилинию-полилиния преобразуется в блок-атрибут блока пользователь выбирает с помощью выпадающего DCl списка-итог, блок состоящий из полилинии с невидимым атрибутом в нем.
|
|||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,772
|
_.attsync или его альтернативы (написанные самостоятельно)
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
Опции темы | Поиск в этой теме |
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
LISP. Вставка в таблицу поля, соотвествующего площади примитива | Profan | Готовые программы | 272 | 06.06.2021 23:12 |
Сейсмозащита и сейсмоизоляция существующих, построенных зд. | IANationalInformAgentstvo | Прочее. Архитектура и строительство | 216 | 20.01.2015 16:51 |
Мониторы LCD CRT | Разное | 94 | 17.06.2008 10:51 | |
ЮМОР 2006 =) | Perezz!! | Разное | 1122 | 04.01.2007 00:46 |