|
||
| Правила | Регистрация | Пользователи | Сообщения за день | | Поиск | | Справка по форуму | Файлообменник | |
|
![]() |
Поиск в этой теме |
![]() |
#1 | |
Выбор элементов автокад с заданнанными свойствами
Регистрация: 17.02.2014
Сообщений: 50
|
||
Просмотров: 4194
|
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,450
|
1. DXF Reference в руки
2. Найди разницу между '(50. 4.71238898) и '(50 . 4.71238898)
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
инженер (КМ) Регистрация: 30.10.2004
Красноярск
Сообщений: 3,837
|
Думаю сначала нужно выбрать отрезки в слое "Слой_1" и сформировать список. А уже из этого списка фильтровать по углу и длине. Т.к. ssget не выберет отрезок по углу если он будет отличаться в 16-м знаке (или выберет?), т.е. фильтровать так или иначе нужно в каком то допуске (например, от 269.9999 до 270,0001 градусов, ну в пересчете на радианы разумеется). Ну а длина отрезка в dxf вообще не прописана, её сначала вычислить нужно будет.
__________________
Делай хорошо, плохо само получится. |
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,450
|
Krieger, ну помимо прочего есть еще группа -4 и логические операторы
![]()
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Регистрация: 17.02.2014
Сообщений: 50
|
А можно поподробнее про группу -4 и логические операторы? где почитать про это можно подробно?
----- добавлено через ~10 мин. ----- В самом коде точка стоит правильно: (50 . 4.71238898038469) но всё равно не работает... Буду читать про |
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,450
|
справка по ssget
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
инженер (КМ) Регистрация: 30.10.2004
Красноярск
Сообщений: 3,837
|
Цитата:
Цитата:
__________________
Делай хорошо, плохо само получится. |
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,450
|
ТЬфу, е-мое... Я еще не проснулся, похоже ))
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Регистрация: 17.02.2014
Сообщений: 50
|
Почему не работает код?
Код:
Пройтись циклом по всем этим отрезкам, вытащить из каждого коодринаты начала и конца (р1 и р2), из координат вытащить отдельно Х и У, сравнить Х начала отрезка и Х конца отрезка, при их равенстве (то есть вертикальная линия) и разнице Y-ков более 5, перетаскивать такие отрезки в слой Слой_2 |
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,450
|
nynokne, выполняй пошаговую отладку и выясняй, в каком месте у тебя ошибка.
P.S. вместо "-.copytolayer" можно выполнить элементарную замену 8 группы. Эффект будет таким же.
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
инженер (КМ) Регистрация: 30.10.2004
Красноярск
Сообщений: 3,837
|
1. У тебя разность неправильно написана
(y1 - y2), надо так -> (- y1 y2) 2. У функции and всего один аргумент (and ((= x1 x2) (> (y1 - y2) 5))) надо так -> (and (= x1 x2) (> (- y1 y2) 5)) 3. Счетчик забыл. У тебя i то не меняется, добавь это в конце: (setq i (1+ i)) 4. Функции command нужно скармливать не dxf коды, а entity name, т.е. у тебя это не переменная line, а lineObj: (command "_.copytolayer" lineObj "" "слой_2" "_exit") 5. Команда copytolayer не сработает, если нет в чертеже слоя "слой_2", поэтому нужно предусмотреть его создание. 6. Ну и координаты нужно все таки сравнивать с некоторым допуском.
__________________
Делай хорошо, плохо само получится. |
|||
![]() |
|
||||
Начинающий проектировщик Регистрация: 07.02.2008
Санкт-Петербург
Сообщений: 443
![]() |
Поправил немного код. Вызывается командой test. Посмотри про entmod. Нужно стараться избегать использование "command".
Код:
Последний раз редактировалось Mozgunov, 11.06.2015 в 00:57. |
|||
![]() |
|
||||
Регистрация: 17.02.2014
Сообщений: 50
|
А как при помощи lisp объединить все отрезки в определённом слое?
Я пробую так: Код:
Пробую так: Код:
Я так понимаю, команда JOIN требует обязательного выделения объектов "руками". Но как выделить объекты программно? ----- добавлено через ~15 мин. ----- попробовал так: Код:
Последний раз редактировалось nynokne, 15.06.2015 в 17:15. |
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,450
|
nynokne, во-первых, один вопрос = одна тема. Во-вторых, проверяй вызов команды. В-третьих, посмотри pltools (есть в Download).
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Регистрация: 17.02.2014
Сообщений: 50
|
В следующий раз учту обязательно
не понял, о чём ты... Видел, грузил, работает, но я пытаюсь лисп написать не для себя, а для большого числа коллег, поэтому сторонних приложений стараюсь избегать. |
|||
![]() |
![]() |
|
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Документация Проектировщику на Torrents | DEM | Разное | 263 | 03.09.2024 12:25 |
Создание дополнительных параметров Visibility Set в динамических блоках. | Supermax | Программирование | 716 | 22.07.2024 11:04 |
SCAD Неверен список координат для элементов, неверна геометрическая форма элементов | alexandrei99 | SCAD | 5 | 02.06.2015 15:56 |
DwgRuLispLib: Функции чтения и установки свойств рисунка (_dwgprops) | VVA | Библиотека функций | 15 | 14.12.2013 10:04 |
Расчет плоских элементов по СП 52-103-2007 | Ал-й | Конструкции зданий и сооружений | 3 | 29.12.2010 09:46 |