Проблема: (ssget "_x" <фильтр>) и источник с
| Правила | Регистрация | Пользователи | Сообщения за день |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Проблема: (ssget "_x" <фильтр>) и источник с

Проблема: (ssget "_x" <фильтр>) и источник с

Ответ
Поиск в этой теме
Непрочитано 10.08.2007, 10:13 #1
Проблема: (ssget "_x" <фильтр>) и источник с
Ax3
 
Programming, automation, CADs, GISs. "Теплоком"
 
Россия, Санкт-Петербург
Регистрация: 02.02.2007
Сообщений: 306

Всем привет и приятного рабочего дня!
Создал в пустом чертеже источник света с расширенными данными:
Код:
[Выделить все]
Command: (entget (ssname (ssget) 0) (list "_cam"))

Select objects: 1 found

Select objects:  ((-1 . <Entity name: 7ef74570>) (0 . "INSERT") (330 . <Entity 
name: 7ef79cf8>) (5 . "1BD6") (100 . "AcDbEntity") (67 . 0) (410 . "Model") (8 
. "0") (100 . "AcDbBlockReference") (66 . 1) (2 . "overhead") (10 -6.06344e-016 
8.51642e-017 -2.974e-018) (41 . 1.0) (42 . 1.0) (43 . 1.0) (50 . 4.71239) (70 . 
0) (71 . 0) (44 . 0.0) (45 . 0.0) (210 0.0345599 0.00485707 0.999391) (-3 
("_cam" (1070 . 0) (1011 0.0 -6.12303e-016 -3.85186e-034))))
При попытке получить этот источник в набор вот так работает:
Код:
[Выделить все]
Command: (ssget "_X" (list (list -3 (list "_cam"))))
<Selection set: 413>
, а вот так - нет:
Код:
[Выделить все]
Command: (ssget "_X" (list (list -3 (list "_cam" (cons 1070 0)))))
nil
Хотя при применении такой комбинации к чертежу, содержащему любой другой примитив с такими же расширенными данными, получаем
Код:
[Выделить все]
Command: (entget (ssname (ssget) 0) (list "_cam"))
Select objects: 1 found

Select objects:  ((-1 . <Entity name: 7ef747a0>) (0 . "REGION") (330 . <Entity 
name: 7ef79cf8>) (5 . "1C74") (100 . "AcDbEntity") (67 . 0) (410 . "Model") (8 
. "0") (100 . "AcDbModelerGeometry") (70 . 1) (1 . "mogoo lg m o          ") (1 
. "ni ^*+0;:,4 ^*+0\\^[ nh ^LR iqoqjqhook QK mk Y-6 ^*8 no noeloeoj mooh ") (1 
. "mjqlffffffffffffff fqfffffffffffffffj:rooh n:rono ") (1 . ">,27:>;:- {rn rn 
_nm mogqoqjqhook |") (1 . "=0;& {m rn {rn {l {rn {rn |") (1 . 
"-:9@)+r:&:r>++-6= {rn rn {rn {rn {n {k {j |") (1 . "3*2/ {i rn {rn {rn {h {n 
|") (1 . ":&:@-:961:2:1+ {rn rn _j 8-6;  n _l +-6 n _k ,*-9 o _l >;5 o _k 8->; 
o _f /0,+<7:<4 o _k ,+03 oqlflomjhhnolknnioh _k 1+03 lo _k ;,63 o _g 93>+1:,, o 
_h /6'>-:> o _k 72>' o _i 8-6;>- o _j 28-6; looo _j *8-6; o _j )8-6; o _no 
:1;@96:3;, |") (1 . "):-+:'@+:2/3>+: {rn rn l o n g |") (1 . "-:9@)+r:&:r>++-6= 
{rn rn {rn {rn {l {k {j |") (1 . ",7:33 {g rn {rn {rn {rn {f {rn {l |") (1 . 
"-:9@)+r:&:r>++-6= {rn rn {rn {rn {h {k {j |") (1 . "9><: {no rn {rn {rn {nn {h 
{rn {nm 90-(>-; ;0*=3: 0*+ |") (1 . "92:,7r:&:r>++-6= {rn rn {nl {rn {f |") (1 
. "300/ {rn rn {rn {rn {nk {f |") (1 . "/3>1:r,*-9><: {rn rn {rn 
noiqjjhjhmhflghgff nqmkjhnkgjmogmlhfj:roni gqlffhlfnjomookhil 
roqohgjgklfhjoloiojlg nqjihnknhffnohkkmi:ronh oqffifohkiklkinjjk 
oqffifohkiklkinjjk o oqohgjgklfhjoloiojlg 90-(>-;@) V V V V |") (1 . 
"-:9@)+r:&:r>++-6= {rn rn {rn {no {f {k {j |") (1 . "<0:;8: {rn rn {rn {nj {ni 
{rn {nh 90-(>-; {nn {rn |") (1 . "<0:;8: {rn rn {rn {ng {nk {rn {nf 90-(>-; {nn 
{rn |") (1 . "<0:;8: {rn rn {rn {nk {ng {rn {mo 90-(>-; {nn {rn |") (1 . ":;8: 
{mn rn {rn {mm o {ml nghqmhjfhfglggogjg {nk {mk 90-(>-; _h *1410(1 |") (1 . 
"<0:;8: {rn rn {rn {ni {nj {rn {mj 90-(>-; {nn {rn |") (1 . ":;8: {mi rn {rn 
{ml o {mh nqojnokmljmijihikj {nj {mg 90-(>-; _h *1410(1 |") (1 . ":;8: {mf rn 
{rn {lo o {mm koqogmimloknmiinjl {ni {ln 90-(>-; _h *1410(1 |") (1 . 
"/+36,+r:&:r>++-6= {rn rn {rn {rn {nh |") (1 . "):-+:' {rn rn {rn {nh {lm |") 
(1 . "):-+:' {rn rn {rn {nh {ll |") (1 . ",+->687+r<*-): {rn rn {rn 
nfoqigolknfkhfnmfj moqoknlnnjmoillohh njqolofglikokhkgog roqffnkhfhjnkhjjonmh 
roqnokmoghmnoiomljj roqohgnjijkohfjnhiimf V V |") (1 . ":;8: {lk rn {rn {mh o 
{lo nghqmhjfhfglggogjg {ng {lj 90-(>-; _h *1410(1 |") (1 . "/+36,+r:&:r>++-6= 
{rn rn {rn {rn {nf |") (1 . "):-+:' {rn rn {rn {nf {li |") (1 . ",+->687+r<*-): 
{rn rn {rn j oqjmjjmnnhilmglgnjg oqlfknkoggmmkimgiig o rn o V V |") (1 . 
"/+36,+r:&:r>++-6= {rn rn {rn {rn {mo |") (1 . "):-+:' {rn rn {rn {mj {lh |") 
(1 . ",+->687+r<*-): {rn rn {rn nfoqigolknfkhfnmfj rmoqoknlnnjmoillohh 
njqolofglikokhkgog o n o V V |") (1 . "/061+ {rn rn {rn nfoqigolknfkhfnmfj 
moqoknlnnjmoillohh njqolofglikokhkgog |") (1 . "/061+ {rn rn {rn j 
oqjmjjmnnhilmglgnjg oqlfknkoggmmkimgiig |") (1 . "/+36,+r:&:r>++-6= {rn rn {rn 
{rn {mj |") (1 . ",+->687+r<*-): {rn rn {rn j roqjmjjmnnhilmglgmfn 
oqlfknkoggmmkimgiig oqffnkhfhjnkhjjonmh roqnokmoghmnoiomljj 
oqohgnjijkohfjnhiimf V V |") (1 . "/061+ {rn rn {rn j roqjmjjmnnhilmglgmfn 
oqlfknkoggmmkimgiig |") (1 . "/061+ {rn rn {rn nfoqigolknfkhfnmfj 
rmoqoknlnnjmoillohh njqolofglikokhkgog |") (-3 ("_cam" (1070 . 0) (1011 0.0 
-6.12303e-016 0.0))))

Command: (ssget "_X" (list (list -3 (list "_cam" (cons 1070 0)))))
<Selection set: 444>
В чем беда?
ЗЫ. Блин, еду в командировку, хотел сегодня доделать прогу, а тут такая засада...
__________________
На LISPе можно мыслить!
Просмотров: 3819
 
Непрочитано 10.08.2007, 10:35
#2
Кулик Алексей aka kpblc
Moderator

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


Попробуй проаудитить файл, в котором не работает.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 10.08.2007, 10:38
#3
Ax3

Programming, automation, CADs, GISs. "Теплоком"
 
Регистрация: 02.02.2007
Россия, Санкт-Петербург
Сообщений: 306


Хм... Никогда не пробовал. Говорит, норамально все:
Код:
[Выделить все]
Command: audit

Fix any errors detected? [Yes/No] <N>: y
 42      Blocks audited
Pass 1 179     objects audited
Pass 2 179     objects audited
Pass 3 800     objects audited
Total errors found 0 fixed 0
Что он проверяет?

ЗЫ Доброе утро!
__________________
На LISPе можно мыслить!
Ax3 вне форума  
 
Непрочитано 10.08.2007, 10:58
#4
Кулик Алексей aka kpblc
Moderator

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


Утро добрым не бывает.
Приложи файлики - оба, и в котором работает, и в котором нет. Может, и доберемся до причин...
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 10.08.2007, 11:13
#5
Ax3

Programming, automation, CADs, GISs. "Теплоком"
 
Регистрация: 02.02.2007
Россия, Санкт-Петербург
Сообщений: 306


Но все равно сохраняется надежда, что хоть у кого-то оно доброе .
Вот чертеж, я поочередно удалял из него объекты, оставляя либо источник света (находится внутри параллелепипеда), либо один из region'ов.
[ATTACH]1186730022.dwg[/ATTACH]
__________________
На LISPе можно мыслить!
Ax3 вне форума  
 
Непрочитано 10.08.2007, 11:34
#6
AY

webcad.pro
 
Регистрация: 06.01.2005
Московская обл.
Сообщений: 501


Вобщем давно уже обсуждалось, что фильтры ssget обрабатывают лишь наличие расширенных данных [ некоторого приложения ], но не их содержание - которое надо проверять самому - перебором.

В этом проблема или я не понял суть вопроса?
AY вне форума  
 
Автор темы   Непрочитано 10.08.2007, 11:44
#7
Ax3

Programming, automation, CADs, GISs. "Теплоком"
 
Регистрация: 02.02.2007
Россия, Санкт-Петербург
Сообщений: 306


По-моему, не в этом дело. У меня фильтр
Код:
[Выделить все]
(setq ss_to_del_ (ssget "_X" (list (list -3 (list "_cam" (cons 1070 0) (cons 1011 pt_))))))
(sssetfirst nil ss_to_del_)
, где pt_ - точка вставки объекта, выделял все, что нужно, пока не дошло дело до источника света. Потом я увидел, что точка вставки источника света имеет какие-то странные координаты, ну да ладно, попробовал без нее:
Код:
[Выделить все]
(setq ss_to_del_ (ssget "_X" (list (list -3 (list "_cam" (cons 1070 0))))))
(sssetfirst nil ss_to_del_)
- та же история. Возвращается все, что надо, кроме источника света.
__________________
На LISPе можно мыслить!
Ax3 вне форума  
 
Автор темы   Непрочитано 10.08.2007, 11:54
#8
Ax3

Programming, automation, CADs, GISs. "Теплоком"
 
Регистрация: 02.02.2007
Россия, Санкт-Петербург
Сообщений: 306


Вот полный файл
[ATTACH]1186732496.dwg[/ATTACH]
__________________
На LISPе можно мыслить!
Ax3 вне форума  
 
Непрочитано 10.08.2007, 12:44
#9
Кулик Алексей aka kpblc
Moderator

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


Забавно, но (ADT 2005 as ACAD2005 Eng + SP1):
Код:
[Выделить все]
_$ (setq selset (ssget "_X" '((-3 ("_cam" (1070 . 0))))))
<Selection set: 196>
_$ (SSSETFIRST selset selset)
(<Selection set: 196> <Selection set: 196>)
Ну или так:
Код:
[Выделить все]
_$ (setq selset (ssget "_X" (list (list -3 (list"_cam" (cons 1070 0))))))
<Selection set: 1a6>
_$ (SSSETFIRST selset selset)
(<Selection set: 1a6> <Selection set: 1a6>)
---
Или я тоже чего-то не понял...
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 10.08.2007, 14:02
#10
Ax3

Programming, automation, CADs, GISs. "Теплоком"
 
Регистрация: 02.02.2007
Россия, Санкт-Петербург
Сообщений: 306


Хм, странно... У меня по-прежнему не выделяется источник света (ACAD2004, ACAD2006). Глюк акада?
__________________
На LISPе можно мыслить!
Ax3 вне форума  
 
Непрочитано 10.08.2007, 14:15
#11
AY

webcad.pro
 
Регистрация: 06.01.2005
Московская обл.
Сообщений: 501


Глюк-не-глюк, но ситуация выходит такая: возможность фильтрации по содержанию расширенных данных не документирована и как показывает практика на обычных примитивах не работает, поэтому скорее надо признать глюком то что она работает применительно к регионам и солидам. В таком свете можно сказать, что блок (источник света) ведет себя правильно не попадая в фильтр с группой (1070 . 0).

Вобщем я бы пользоваться проверенными механизмами - фильтруем по имени приложения, а дальше перебор полученного в цикле.
AY вне форума  
 
Автор темы   Непрочитано 10.08.2007, 14:21
#12
Ax3

Programming, automation, CADs, GISs. "Теплоком"
 
Регистрация: 02.02.2007
Россия, Санкт-Петербург
Сообщений: 306


Да, получается так. Тем более что перебирать-то немного, всего две группы. Ну что ж, спасибо, друзья! Еду в командировку без груза на душе .
__________________
На LISPе можно мыслить!
Ax3 вне форума  
 
Непрочитано 12.08.2007, 00:04
#13
Александр Ривилис

программист, рыцарь ObjectARX
 
Регистрация: 09.05.2005
Киев
Сообщений: 2,413
Отправить сообщение для Александр Ривилис с помощью Skype™


Цитата:
Сообщение от AY
Глюк-не-глюк, но ситуация выходит такая: возможность фильтрации по содержанию расширенных данных не документирована и как показывает практика на обычных примитивах не работает, поэтому скорее надо признать глюком то что она работает применительно к регионам и солидам. В таком свете можно сказать, что блок (источник света) ведет себя правильно не попадая в фильтр с группой (1070 . 0).

Вобщем я бы пользоваться проверенными механизмами - фильтруем по имени приложения, а дальше перебор полученного в цикле.
Подписываюсь под каждым словом.
Александр Ривилис вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Проблема: (ssget "_x" <фильтр>) и источник с