| Правила | Регистрация | Пользователи | Поиск | Сообщения за день | Все разделы прочитаны |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Выделение объектов с определенным весом линий

Выделение объектов с определенным весом линий

Ответ
Поиск в этой теме
Непрочитано 28.08.2016, 23:57 #1
Выделение объектов с определенным весом линий
nikolaevas
 
Регистрация: 12.09.2013
Сообщений: 6

Как на лиспе описать команду выделения объектов с весом линий 0.15?
И как к выделенному применить команду изменения веса линий на 0.40?
Возможно это баян, но правда искал - не нашел(
Просмотров: 1830
 
Непрочитано 29.08.2016, 00:13
#2
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 11,038


какие хоть объекты - примитивы типа полилиний, отрезков? или и блоки, и т.д.?
Сергей812 вне форума  
 
Автор темы   Непрочитано 29.08.2016, 01:21
#3
nikolaevas


 
Регистрация: 12.09.2013
Сообщений: 6


Выбор по типу "Быстрого выбора" с параметром вес линий = "0.15" (Блоки не обязательно... линии окружности полилинии сплайны)
nikolaevas вне форума  
 
Непрочитано 29.08.2016, 01:51
#4
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 11,038


ну если на всем чертеже, то смотри функцию ssget с параметром "_X" и фильтром на соответствующую группу (вроде 370 группа, но не уверен)
Сергей812 вне форума  
 
Автор темы   Непрочитано 29.08.2016, 22:56
#5
nikolaevas


 
Регистрация: 12.09.2013
Сообщений: 6


Попробовал, не выходит.
Код:
[Выделить все]
 Команда: (ssget "_x" '(370 0.15))
; ошибка: неверный точечный аргумент
эта команда видимо определяет мой фильтр как координаты... хотя координаты не обязательны по синтаксису
nikolaevas вне форума  
 
Непрочитано 29.08.2016, 23:19
#6
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,833


Попробуй лучше (ssget "_X" '((370 . 15)))
Пишу без проверки
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 29.08.2016, 23:23
#7
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 11,038


Алексей опередил - у Полещука написано: 370 - вес, преобразованный в целое число умножением на 100
Сергей812 вне форума  
 
Непрочитано 29.08.2016, 23:34
#8
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,833


Это не все Посчитай количество скобочек ))

----- добавлено через 56 сек. -----
Ну и разница между списком и точечной парой, опять же ))
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 30.08.2016, 23:17
#9
nikolaevas


 
Регистрация: 12.09.2013
Сообщений: 6


Команда выполнилась и селекшн сет определен.
Теперь вопрос как поменять для селекшн сета толщину линий на 0.4
Код:
[Выделить все]
 (setq ssWidth15 (ssget "_X" '((370 . 15))))
nikolaevas вне форума  
 
Непрочитано 30.08.2016, 23:43
#10
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 11,038


получили коллекцию элементов. Пройдите по ней и обновите в каждом элементе группу 370 через entmod с последующим обновлением через entupd
Сергей812 вне форума  
 
Автор темы   Непрочитано 31.08.2016, 00:07
#11
nikolaevas


 
Регистрация: 12.09.2013
Сообщений: 6


Код:
[Выделить все]
 (setq one_ent (entnext))            ; Gets name of first entity.
 (while one_ent 
 . 
 .                                  ; Processes new entity.
 . 
  (setq one_ent (entnext one_ent))
)                                   ; Value of one_ent is now nil.
Нашел в справке, но это перебор всей базы, а для селекшн сета пока увидел функцию
Код:
[Выделить все]
 (setq ilast (sslength ssWidth15))  ; Finds index of the last entity 
                              ; in sset.
nikolaevas вне форума  
 
Непрочитано 31.08.2016, 00:13
#12
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 11,038


ssname - получение примитива из набора по порядковому номеру
Сергей812 вне форума  
 
Автор темы   Непрочитано 31.08.2016, 08:44
#13
nikolaevas


 
Регистрация: 12.09.2013
Сообщений: 6


Код:
[Выделить все]
 (setq ssWidth15 (ssget "_X" '((370 . 15))))
(setq ilast (sslength ssWidth15))
(setq i 0)
(while (< i ilast)
 (setq ent (ssname ssWidth15 i))
 (setq ent (subst (cons 370 "40") (assoc 370 ent) ent ))
 (entmod ent)
 (entupd ent)
 (setq i (1+ i))
)
При этом пишет Неверный тип аргумента listp
nikolaevas вне форума  
 
Непрочитано 31.08.2016, 08:49
#14
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 11,038


на чем именно пишет то? используйте пошаговую отладку из редактора VLisp
Сергей812 вне форума  
 
Непрочитано 31.08.2016, 08:50
#15
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,833


Потому что ent у тебя не список, а указатель на примитив. http://autolisp.ru/2009/09/10/vlide-misc-01/ ; http://autolisp.ru/2009/09/12/vlide-misc-02/

----- добавлено через 31 сек. -----
И заодно в документации посмотри, с чем работает subst. entmod, entupd
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Выделение объектов с определенным весом линий

Размещение рекламы
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Какой язык перспективен для инженера-конструктора с условием The_Mercy_Seat Программирование 705 17.03.2021 14:19
Тормозит выделение объектов и дергается курсор MeshIN AutoCAD 21 07.08.2017 22:18
Как в Адванс Стиле 2015 управлять толщиной (весом) линий? виктор1986 Advance Steel 6 03.02.2016 08:45
Проблема с весом линий valera.schetnev AutoCAD 4 09.06.2011 14:49