Autolisp. ssget и СПДС,как получить список?
| Правила | Регистрация | Пользователи | Сообщения за день |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Autolisp. ssget и СПДС,как получить список?

Autolisp. ssget и СПДС,как получить список?

Ответ
Поиск в этой теме
Непрочитано 30.03.2015, 20:23 #1
Autolisp. ssget и СПДС,как получить список?
prajdziswet
 
Регистрация: 30.03.2015
Сообщений: 153

Добрый день, в принципе вопрос написан в заколовке.
Подскажите пожалуства, как мне получить список СПДС рамок (spdsFormat) делаю так:
(ssget "X" '((0 . "spdsFormat"))) в ответ получаю nil, что я делаю не так и как мне получить спдс рамки содержащие в чертеже
Заранее благодарю за подсказку.
Просмотров: 2781
 
Непрочитано 30.03.2015, 20:37
#2
Кулик Алексей aka kpblc
Moderator

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


http://forum.dwg.ru/showthread.php?t=24951
http://forum.dwg.ru/showthread.php?t=27273
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 31.03.2015, 06:18
#3
prajdziswet


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


Спасибо,ознакомлюсь и попробую
prajdziswet вне форума  
 
Непрочитано 31.03.2015, 06:46
#4
AndruxaZ


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


Я делал так на основе кода Алексей из этой темы http://forum.dwg.ru/showthread.php?t=24951
Код:
[Выделить все]
 (setq selset (ssget))
        (setq
           selset (vl-remove-if-not
                    (function (lambda (x)
				(cdr (assoc 0 (entget x))) '("spdsFormat")
				) ;_ end of lambda
                              ) ;_ end of function
                    (_dwgru-conv-pickset-to-list selset)
		    ) ;_ end of vl-remove-if-not
           ) ;_ end of setq
Функцию (_dwgru-conv-pickset-to-list selset) взять по той же ссылке
AndruxaZ вне форума  
 
Автор темы   Непрочитано 31.03.2015, 18:30
#5
prajdziswet


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


может не так хорошо (но проще), а насчет производительности и не думал,сделал простым перебором:
Код:
[Выделить все]
 
(setq nabor (ssget "X"))

(if (null nabor)

  (progn
    (princ "\nНе составлен список. "); сообщение об отсутствии
    (princ); тихий выход
  ); конец progn

  (progn
    (setq i -1 len (sslength nabor))
    (repeat len
      (setq i (1+ i))
; Выбор следующего примитива и получение его списка
      (setq list1 (entget (ssname nabor i)))
      (if (= "spdsFormat" (cdr (assoc 0 list1))) (princ "\nyes\n");или что надо
	)

      );;конец repeat
   );конец progn

);;конец if
п.с Большая благодарность и за ваши примеры , спасибо еще раз...
prajdziswet вне форума  
 
Непрочитано 31.03.2015, 18:40
#6
gomer

строю, ломаю
 
Регистрация: 03.04.2008
Украина
Сообщений: 5,515


разве фильтры ssget не работают с объектами СПДС?
gomer вне форума  
 
Непрочитано 31.03.2015, 22:47
#7
Кулик Алексей aka kpblc
Moderator

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


prajdziswet, твой код не будет работать в русском AutoCAD
gomer, фильтры ssget не обрабатывают имена объектов СПДС из-за разницы регистров (смесь прописных и строчных букв) в типе объекта.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 01.04.2015, 06:34
#8
AndruxaZ


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


Кулик Алексей aka kpblc, начиная с версии 8.0.1317, появилась воможность обработки фильтрами ssget. Тип объекта сделал полностью прописными буквами
AndruxaZ вне форума  
 
Непрочитано 01.04.2015, 08:56
#9
Кулик Алексей aka kpblc
Moderator

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


AndruxaZ, хорошо, уточняю: "не обрабатывал" на момент написания кода из #2 и #4
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 02.04.2015, 08:55
#10
prajdziswet


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


gomer, как Александр сказал фильтры ssget на СПДС не обрабатываюет
Александр Кулик:"prajdziswet, твой код не будет работать в русском AutoCAD" - Я на русском его и тестил, удивительно почему то как "Х" так и "_Х" обрабатываются оба (версия автокада на работе 2010 рус).
пс ну проверку языка автокада можно сделать без проблем, спасибо
prajdziswet вне форума  
 
Автор темы   Непрочитано 02.04.2015, 08:57
#11
prajdziswet


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


Нажмите на изображение для увеличения
Название: 0.png
Просмотров: 16
Размер:	4.9 Кб
ID:	146896
prajdziswet вне форума  
 
Непрочитано 02.04.2015, 09:02
#12
Кулик Алексей aka kpblc
Moderator

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


prajdziswet, версия русская или русифицированная? В официальных локализциях конструкция (ssget "X") не срабатывает - выдает ошибку ключевого слова.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Autolisp. ssget и СПДС,как получить список?



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как получить Список файлов в директории (поддиректорий) VBA sf Программирование 2 17.12.2010 12:06
как получить список всех видов в чертеже Димас Программирование 12 22.02.2006 02:29
Можно ли получить список загруженных команд? Кулик Алексей aka kpblc Программирование 8 11.10.2005 09:04
Как получить список открытых файлов? ===AAA=== Программирование 2 26.08.2005 11:55
Можно ли получить список реакторов объекта? kos Программирование 1 13.01.2005 13:28