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

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

SSGET выбор текста по содержимому

Ответ
Поиск в этой теме
Непрочитано 18.12.2019, 13:08 #1
SSGET выбор текста по содержимому
lesnaya
 
Регистрация: 10.11.2013
Сообщений: 52

Добрый день!
Сразу скажу, что я не имею особого опыта в написание кодов для lisp, но возникла потребность оптимизировать процесс чтобы выбирать объекты в обход команды qselect.
Нужно чтобы по вызову lsp файла у меня запрашивало текст, который я ищу и потом он выделялся.
Вот пока такой код
(setq posit (getstring "Enter value ")
(setq ss1
(ssget '((0 . "TEXT")(-4 . "=")(10 . posit)))
)
Не нашел где расписаны значения всех чисел для команды ssget
Как я понимаю:
(0 . "TEXT") - выбор текста
(-4 . "=") - который равен (возможно тут надо другую цифру, чтобы он понял что имеется в виду содержание текста)
(10 . posit))) - и в конце должно случиться сравнение с заданным значением

Прошу помочь кто разбирается...Спасибо
Просмотров: 1746
 
Непрочитано 18.12.2019, 13:21
#2
Krieger

инженер (КМ)
 
Регистрация: 30.10.2004
Красноярск
Сообщений: 3,825


Как вариант:
https://forum.dwg.ru/showpost.php?p=1841812&postcount=5
Воспользоваться опцией coNtents. Только текст нужно не вводить, а указать на чертеже один из них.
__________________
Делай хорошо, плохо само получится.
Krieger вне форума  
 
Непрочитано 18.12.2019, 14:25
1 | #3
kp+

идущий по граблям
 
Регистрация: 26.05.2005
Сообщений: 5,091


Цитата:
Сообщение от lesnaya Посмотреть сообщение
выбирать объекты в обход команды qselect
Если задача только в этом, можно пользоваться опцией 'filter обычных команд выбора.

Цитата:
Сообщение от lesnaya Посмотреть сообщение
Не нашел где расписаны значения всех чисел для команды ssget
Опции ssget здесь (официально) или здесь (доходчиво)
Коды DXF
И поиск в помощь.

Цитата:
Сообщение от lesnaya Посмотреть сообщение
(-4 . "=")
применять в ssget логические и сравнительные операторы с кодами -4 без необходимости не стоит. Пример, где он нужен, приведен по второй ссылке в конце. В Вашем коде это лишнее.

Цитата:
Сообщение от lesnaya Посмотреть сообщение
(10 . posit)
Во-первых, содержимое текста находится под кодом 1. А во-вторых, переменные в список ssget просто так ввести нельзя.
Придется написать
(setq ss1 (ssget (list (cons 0 "TEXT") (cons 1 posit))))

Ну и по мелочи, проверка соответствия скобок, с этим сами разберетесь.
kp+ вне форума  
 
Автор темы   Непрочитано 18.12.2019, 18:38
#4
lesnaya


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


Благодарю, уже что-то получилось
Код следующий:
Код:
[Выделить все]
 (defun c:selqq (/ posit ss1)
(setq posit (getstring "Enter value "))
(setq ss1 (ssget "X" (list (cons 0 "TEXT") (cons 1 posit))))
(command "select" "p")
) ; end_defun
Как я понимаю, после срабатывания лиспа, нужные мне объекты сохраняются в"ss1", но не выделяются, чтобы они выделились, я дописал select -p, все хорошо, НО они выделяются только цветом и работать с ними нельзя, как только что-то нажимаю выбор пропадает, и в свойствах написано ничего не выбрано, хотя объекты подсвечены...
lesnaya вне форума  
 
Непрочитано 18.12.2019, 19:20
#5
kp+

идущий по граблям
 
Регистрация: 26.05.2005
Сообщений: 5,091


Цитата:
Сообщение от lesnaya Посмотреть сообщение
нужные мне объекты сохраняются в"ss1"...я дописал select -p
лучше (command "_pselect" ss1)
А еще лучше, если других задач перед прогой нет, не страдать ерундой, а пользоваться стандартной опцией 'filter
Кстати, опции фильтрации у нее точно такие же, как и у функции SSGET
kp+ вне форума  
 
Непрочитано 18.12.2019, 19:37
#6
Кулик Алексей aka kpblc
Moderator

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


Ох как мне нравится наблюдать подобное!..
Миниатюры
Нажмите на изображение для увеличения
Название: 2019-12-18_19-35-43.png
Просмотров: 231
Размер:	1.7 Кб
ID:	221225  
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 18.12.2019, 21:10
#7
skkkk


 
Регистрация: 20.03.2008
Сообщений: 2,653


Цитата:
Сообщение от lesnaya Посмотреть сообщение
НО они выделяются только цветом и работать с ними нельзя, как только что-то нажимаю выбор пропадает, и в свойствах написано ничего не выбрано, хотя объекты подсвечены...
Вместо:
Код:
[Выделить все]
(command "select" "p")
нужно
Код:
[Выделить все]
(sssetfirst nil ss1)
.
skkkk вне форума  
 
Автор темы   Непрочитано 19.12.2019, 08:38
#8
lesnaya


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


Огромное спасибо, все работает
lesnaya вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > SSGET выбор текста по содержимому

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Убрать выбор высоты однострочного текста в AutoCad 2018 (команда _text) allar8 AutoCAD 10 29.07.2019 09:19
Макрос VBA Excel для извлечения таблиц из линий, полилиний, текста из DWG файлов в Excel с помощью NanoCAD/AutoCAD JZY Готовые программы 8 14.07.2016 06:31
LISP Объединение нескольких объектов многострочного текста в один Cren LISP 8 26.02.2016 08:57
Выравнивание текста по элементу чертежа roman56 Программирование 4 20.03.2010 22:07