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

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

Набор объектов

Ответ
Поиск в этой теме
Непрочитано 17.01.2008, 08:12 #1
Набор объектов
DEM
 
YngIngKllr
 
СПб
Регистрация: 29.03.2005
Сообщений: 12,968

Довольно странная штука получается.
Создаю набор объектов, но при этом на различные команды наобор объектов реагирует по разному.
Например хочу удалить набор объектов с перфиксом PS
Код:
[Выделить все]
 
(defun C:daun (/   daun 
       )
(setq daun (ssget "_X" '((0 . "PS_*"))))
(command "_erase" daun "")
(setq daun nil)
)
Все срабатывает нормально.
А вот команда
Код:
[Выделить все]
 
(defun C:daun (/   daun 
       )
(setq daun (ssget "_X" '((0 . "PS_*"))))
(command "_explode" daun "")
(setq daun nil)
)
Срабатывает не корректно и обрабатывает примитивы по очереди.
Хочу сразу сказать что объекты с перфиксом PS это объекты Проджект студио.
Так же довольно интересно получается, почемуто не получается с помощью подобной функции сделать набор объектов СПДС-ки.
__________________
Работаю за еду.
Working for food.
Für Essen arbeiten.
العمل من أجل الغذاء
Працую за їжу.
Просмотров: 8552
 
Непрочитано 17.01.2008, 09:48
#2
Кулик Алексей aka kpblc
Moderator

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


Для объектов СПДС попробуй использовать маску spds*.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 17.01.2008, 09:54
#3
DEM

YngIngKllr
 
Регистрация: 29.03.2005
СПб
Сообщений: 12,968


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
Для объектов СПДС попробуй использовать маску spds*.
А вот и фиг там не получается почему то.
И совсем уж не понятно почему не корректно срабатывает "_explode".
__________________
Работаю за еду.
Working for food.
Für Essen arbeiten.
العمل من أجل الغذاء
Працую за їжу.
DEM вне форума  
 
Непрочитано 17.01.2008, 11:03
#4
Кулик Алексей aka kpblc
Moderator

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


Нда, выбрать объекты СПДС не получилось. А вот _.explode сработало нормально. У тебя pickfirst чему равно в момент выполнения?
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 17.01.2008, 11:19
#5
DEM

YngIngKllr
 
Регистрация: 29.03.2005
СПб
Сообщений: 12,968


Хммм
Странно почему объекты СПДС-ки не получилось выбрать.
Пробовал и 0 и 1
Результат один и тот же
__________________
Работаю за еду.
Working for food.
Für Essen arbeiten.
العمل من أجل الغذاء
Працую за їжу.
DEM вне форума  
 
Автор темы   Непрочитано 17.01.2008, 12:13
#6
DEM

YngIngKllr
 
Регистрация: 29.03.2005
СПб
Сообщений: 12,968


Обекты СПДСки попали в набор по маске (100 . "mcsDbObject")
ХММММ
Сорри по данному фильтру все объекты выбираются.
__________________
Работаю за еду.
Working for food.
Für Essen arbeiten.
العمل من أجل الغذاء
Працую за їжу.

Последний раз редактировалось DEM, 17.01.2008 в 12:23.
DEM вне форума  
 
Непрочитано 17.01.2008, 14:47
#7
Кулик Алексей aka kpblc
Moderator

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


DEM, А.Ривилис сказал примерно следующее: "фильтр по 0 группе работать не будет, если в ней есть символы нижнего регистра (обрати внимание для всех штатных примитивов - там везде заглавные). Короче, фильтр по 0 группе не сработает и это непобедимо, только если SPDS или AutoCAD переделают."
---
От себя добавлю: я бы, наверное, просто сделал бы фильтр по 100 группе, как у тебя получилось, с последующим проходом по набору и "выбросу" ненужного. Хотя на фига оно тебе надо? Сделай 2 штатные СПДС-ные команды по разбитию примитивов и всех делов
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 17.01.2008, 16:43
#8
DEM

YngIngKllr
 
Регистрация: 29.03.2005
СПб
Сообщений: 12,968


А как же тогда можно выбрать объекты СПДСки
__________________
Работаю за еду.
Working for food.
Für Essen arbeiten.
العمل من أجل الغذاء
Працую за їжу.
DEM вне форума  
 
Непрочитано 17.01.2008, 17:20
#9
Александр Ривилис

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


Выбрать все примитивы при помощи (ssget "_X"), а потом из выбранных отобрать только примитивы СПДС (в цикле проверяя группу 0).
И почитай еще здесь по поводу то, что бывает, когда не все буквы в группе 0 в верхнем регистре: http://www.caduser.ru/cgi-bin/f1/board.cgi?t=39318ZF

Последний раз редактировалось Александр Ривилис, 17.01.2008 в 17:31.
Александр Ривилис вне форума  
 
Автор темы   Непрочитано 17.01.2008, 18:29
#10
DEM

YngIngKllr
 
Регистрация: 29.03.2005
СПб
Сообщений: 12,968


Хмм даже с заглавными буквами выбор объектов не получается.
Цикл вводить не хочется т.к. это значительно увеличит продолжительность программы.
Неужели нельз выбрать объекты по приложению.
__________________
Работаю за еду.
Working for food.
Für Essen arbeiten.
العمل من أجل الغذاء
Працую за їжу.
DEM вне форума  
 
Непрочитано 17.01.2008, 19:05
#11
Александр Ривилис

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


Цитата:
Сообщение от DEM Посмотреть сообщение
Хмм даже с заглавными буквами выбор объектов не получается.
С какими заглавными буквами? Это разработчики СПДС должны изменить у себя в программе имена примитивов на заглавные буквы. Только тогда нормально заработает ssget!
Цитата:
Сообщение от DEM Посмотреть сообщение
Цикл вводить не хочется т.к. это значительно увеличит продолжительность программы.
Неужели нельз выбрать объекты по приложению.
Может быть и есть способ, который специально создан разработчиками СПДС, но это тебе нужно обратиться к ним. Мне такой способ не известен, а так как СПДС у меня нет и искать его не на чем. Обратись к ним.
Александр Ривилис вне форума  
 
Автор темы   Непрочитано 17.01.2008, 19:15
#12
DEM

YngIngKllr
 
Регистрация: 29.03.2005
СПб
Сообщений: 12,968


Хммм
По первому пункту все понятно.
Но вот интересно быстрый выбор поэлементно срабатывает, практически по всем свойствам объектов СПДСки.
__________________
Работаю за еду.
Working for food.
Für Essen arbeiten.
العمل من أجل الغذاء
Працую за їжу.
DEM вне форума  
 
Непрочитано 18.01.2008, 00:01
#13
Александр Ривилис

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


Цитата:
Сообщение от DEM Посмотреть сообщение
Хммм
По первому пункту все понятно.
Но вот интересно быстрый выбор поэлементно срабатывает, практически по всем свойствам объектов СПДСки.
Так как проверить не могу, то буду задавать вопросы:
1. В списке примитивов быстрого выбора есть объекты СПДС?
2. Можно ли в быстром выборе выбрать примитивы СПДС только по имени (т.е. когда значения их свойств произвольны)?
3. Что возвращает такая строка: (entget (car (entsel)) '("*")) при выборе одного из примитивов СПДС?
Возможно есть какая-то друга информация по которой можно отфильтровать.
А вообще не проще ли задать этот вопрос Якову?
Александр Ривилис вне форума  
 
Непрочитано 18.01.2008, 01:18
#14
Кулик Алексей aka kpblc
Moderator

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


1. Есть.
2. Можно. Но имена будут вида "spdsNotePosition" (именно так, в нижнем регистре).
3. РД отсутствуют.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 18.01.2008, 10:34
#15
Александр Ривилис

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


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
...
2. "spdsNotePosition" (именно так, в нижнем регистре).
...
Т.е. средствами быстрого выбора можно отобрать только спримитивы СПДС? Значит он использует другие средства, а не аналог ssget. Скорее всего проходится по всей базе чертежа. Но на ObjectARX это не дольше, чем (ssget "_X")
Александр Ривилис вне форума  
 
Непрочитано 18.01.2008, 12:14
#16
Кулик Алексей aka kpblc
Moderator

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


Цитата:
Сообщение от Александр Ривилис Посмотреть сообщение
<...>Но на ObjectARX это не дольше, чем (ssget "_X")
Охотно верю, учитывая быстродействие твоих arx
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 19.01.2008, 23:42
#17
DEM

YngIngKllr
 
Регистрация: 29.03.2005
СПб
Сообщений: 12,968


Обидно что ssget нельзя этого сделать.
Бум трясти Якова, надеюсь поможет.
__________________
Работаю за еду.
Working for food.
Für Essen arbeiten.
العمل من أجل الغذاء
Працую за їжу.
DEM вне форума  
 
Автор темы   Непрочитано 22.01.2008, 15:13
#18
DEM

YngIngKllr
 
Регистрация: 29.03.2005
СПб
Сообщений: 12,968


Хммм а через ActiveX можно ли сделать выбор объектов СПДСки????
__________________
Работаю за еду.
Working for food.
Für Essen arbeiten.
العمل من أجل الغذاء
Працую за їжу.
DEM вне форума  
 
Непрочитано 22.01.2008, 15:55
#19
Кулик Алексей aka kpblc
Moderator

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


DEM, вот вариант. Работает, конечно, не так быстро, как хотелось бы, да и до уровня Alspher'a далеко, но тем не менее:
Код:
[Выделить все]
(defun ssget-by-name (name / selset ent count sellen)
  (if (setq selset (ssget))
    (progn
      (setq sellen (sslength selset))
      (repeat sellen
        (setq ent (ssname selset
                          (setq count (1+ (cond (count)
                                                (t (setq count -1))
                                                ) ;_ end of cond
                                          ) ;_ end of 1+
                                ) ;_ end of setq
                          ) ;_ end of ssname
              ) ;_ end of setq
        (if
          (not (wcmatch (strcase (cdr (assoc 0 (entget ent)))) (strcase name)))
           (progn
             (ssdel ent selset)
             (setq sellen (sslength selset)
                   count  (1- count)
                   ) ;_ end of setq
             ) ;_ end of progn
           ) ;_ end of if
        ) ;_ end of repeat
      ) ;_ end of progn
    ) ;_ end of if
  (sssetfirst selset selset)
  selset
  ) ;_ end of defun
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 22.01.2008, 16:35
#20
DEM

YngIngKllr
 
Регистрация: 29.03.2005
СПб
Сообщений: 12,968


Чей то туплю похоже
Пример вызова функции можно???
__________________
Работаю за еду.
Working for food.
Für Essen arbeiten.
العمل من أجل الغذاء
Працую за їжу.
DEM вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Набор объектов

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как увеличить количество объектов с ручками в Автокаде dextron3 AutoCAD 5 20.08.2007 15:49
Рамка выбора объектов и USC. vn AutoCAD 12 21.10.2006 18:41
Помогите доделать программу добавления объектов в блок МишаVBA Программирование 1 20.05.2006 01:04
Хранение данных о группе объектов kserg Программирование 24 30.01.2006 11:55
Масштабирование объектов при печати в разных форматах Yuri AutoCAD 4 13.05.2004 19:27