|
||
| Правила | Регистрация | Пользователи | Сообщения за день | | Поиск | | Справка по форуму | Файлообменник | |
|
Поиск в этой теме |
|
||||
Цитата:
Код:
в *error* 1. Не использовать mapcar 2. Не использовать командные методы. Спасибо за помощь
__________________
Блог Последний раз редактировалось Red Nova, 13.01.2018 в 00:04. |
||||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,848
|
Есть еще вариант - вообще отказаться от переопределения *error*
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,848
|
Откуда считываешь? С текста/атрибута? Если да, кто мешает получать TextString, а не FieldCode?
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
Регистрация: 27.01.2012
Сообщений: 240
|
Здравствуйте, подскажите пожалуйста красивую и лаконичную функцию или еще лучше лямбда-функцию которая бы принимала два значения - количество элементов, и элемент - и выдавала список из одинаковых элементов:
то есть чтобы это работало так (func 5 "элемент") -> ("элемент" "элемент" "элемент" "элемент" "элемент") Пробую так, почему-то не получается : Код:
Последний раз редактировалось kurstep, 13.02.2018 в 11:59. |
|||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,848
|
Фигню-с написал.
----- добавлено через ~2 мин. ----- ((LAMBDA(count i / res) (repeat count (setq res (cons i res))) res) 2 "i")
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
автоматизация и организация черчения Регистрация: 17.11.2009
Sterlitamak
Сообщений: 135
|
Здравствуйте! Такая проблема. Исходные данные:
имеется блок, прямоугольной формы, размерами допустим 100х100 мм, левая нижняя точка его лежит в начале координат 0,0, имеется точка (setq pt '(50 50)). Вопрос, как выяснить попадает ли точка в область блока или нет? Решал с помощью ssget, ничего не помогает, везде nil. Код:
Подскажите метод определяющий попадет ли точка в область блока!
__________________
слесарь САПР |
|||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,848
|
Тут две задачи
1. Определить область блока. Вопрос на форуме поднимался, советую заняться поиском 2. Определить вхождение точки в контур (может быть, даже не существующий) - тоже поднимался на форуме. Опять же, поиск.
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
Регистрация: 27.10.2015
Сообщений: 18
|
Здравствуйте, товарищи корифеи.
В лиспе не силён, попробовал оптимизировать работу из кусков кода, нашёл здесь на форуме и в интернете. Сначала выходило вроде полезно. Но когда файл DWG разросся, то код оказался очень медленным. Подскажите - можно ли как-то оптимизировать код, увеличить скорость работы? Идея такая - код подсчитывает количество вхождений каждого вида блоков. Блоки динамические. Названия блоков могут быть типа: ИМЯ_БЛОКА_ХХ, где ХХ - версия блока. На выходе получается: количество светильников - 25 шт., количество выключателей - 3 шт., количество розеток - 8 шт. и т.д. Код:
|
|||
|
||||
Шаражпроектхалтурмонтаж Регистрация: 29.10.2004
Талды-Париж
Сообщений: 5,992
|
Doctor_Che, посмотри альтернативные варианты:
http://www.lee-mac.com/nestedblockcounter.html http://www.lee-mac.com/blockcounter.html |
|||
|
||||
Инженер LISP Регистрация: 11.05.2005
Минск
Сообщений: 6,992
|
Doctor_Che, Замени анализ имени блока и всех его динамических представлений на сравнение эффективного имени и маски wcmatch
Т.е допустим, если динамические блоки светильника имеют имя "Светильник_01", "СвелильниК_02" и т.п. то Цитата:
Код:
__________________
Как использовать код на Лиспе читаем здесь Последний раз редактировалось VVA, 16.02.2018 в 11:50. |
|||
|
||||
Регистрация: 27.10.2015
Сообщений: 18
|
VVA, спасибо огромное. Теперь фрагмент с подсчётом блоков просто летает!
А можно ли оптимизировать момент с выбором блоков? Там у меня идея такая, что бы выбирались только определённые типы блоков (светильники, выключатели и т.д.), если выбор идёт рамкой. И что бы все левые объекты отсеивались. Потом я всё что удовлетворяет требованию упаковываю в блок. Вот здесь я создаю список всех вхождений блоков, которые удовлетворяют условию. Код:
Код:
|
|||
|
||||
Инженер LISP Регистрация: 11.05.2005
Минск
Сообщений: 6,992
|
Я думаю будет быстрее в ssget отфильтровать только блоки (ssget '((0 . "INSERT")), а затем пробежаться по полученному набору и удалить блоки, у которых эффективное имя не соответствует маске wcmatch см #3456
затем SSSETFIRST подсветить нужные
__________________
Как использовать код на Лиспе читаем здесь |
|||
|
||||
Регистрация: 27.10.2015
Сообщений: 18
|
Цитата:
Сделал фильтрацию (sget '((cons 0 "INSERT")(cons 8 "ЭО*,ЭМ*"))) - скорость выросла до реактивной. |
|||
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
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 |