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

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

Выбор объектов подобных данному

Ответ
Поиск в этой теме
Непрочитано 01.06.2005, 13:51 #1
Выбор объектов подобных данному
DEM
 
YngIngKllr
 
СПб
Регистрация: 29.03.2005
Сообщений: 12,968

Требуется выделить объект, затем автоматически выбрать все объекты подобные этому объекту на чертеже (конкретно мне это надо для изменения текста и изменения его формата, поиск и замена текста не подходит, быстрый выбор требует копирования и вставки текста по критериям выбора что не очень подходит). Прошу помочь с лиспом( к сожалению требуемой литературой не обеспечен) Заранее спасибо всем откликнувшимся.
__________________
Работаю за еду.
Working for food.
Für Essen arbeiten.
العمل من أجل الغذاء
Працую за їжу.
Просмотров: 12002
 
Непрочитано 01.06.2005, 15:19
#2
Torino


 
Регистрация: 21.08.2003
Штаб
Сообщений: 943
<phrase 1=


А каковы критерии подобия объектов?
Torino вне форума  
 
Непрочитано 01.06.2005, 15:58
#3
{Smirnoff}

Инженер по системам безопасности
 
Регистрация: 23.11.2003
Рига
Сообщений: 1,099


Да тут действительно надо знать критерии. Но попробуем помочь.

Во первых существует команда _filter которая позволяет делать более интеллектуальные выюорки чем _qselect.

Во вторых если установлен Express Tools можно использовать команду ssx. Причем в версиях до 2004- она кажется вызывалась как (ssx) - т. е как LISP-функция.

Теперь перейдем к AutoLISP. Наберите в командной строке (entget(car(entsel))) и щелкните по тексту или другому объекту. В ответ получите к примеру:
Код:
[Выделить все]
Command: (entget(car(entsel)))

Select object: ((-1 . <Entity name: 7ef8af70>) (0 . "TEXT") (330 . <Entity 
name: 7ef8acf8>) (5 . "E6") (100 . "AcDbEntity") (67 . 0) (410 . "Model") (8 . 
"0") (100 . "AcDbText") (10 349.947 452.932 0.0) (40 . 2.5) (1 . "Sample for 
DEM") (50 . 0.0) (41 . 1.0) (51 . 0.0) (7 . "Standard") (71 . 0) (72 . 0) (11 
0.0 0.0 0.0) (210 0.0 0.0 1.0) (100 . "AcDbText") (73 . 0))
Т. е. DXF- коды указанного примитива. Это делаем чтобы вы представляли о чем идет речь в дальнейшем. О конкретных группах DXF- кодов можно прочитать в Help или просто догадаться при просмотре списка.

Теперь наберите в командной строке: (setq a(ssget "_X" '((0 . "TEXT")(7 . "Standard") (8 . "0"))))
Таким образом вы сделаете набор из примитивов TEXT во всем чертеже, причем тех которые лежат на слое "0" и имеют стиль "Standard". Такие выборки можно делать по любым параметрам которые вы видите в списке DXF- кодов. Можно также применять логические операторы AND, OR, NOT, а также * в качестве любого набора знаков и др. Подробнее можете почитать в Developer Help, главное чтобы принцип вам был понятен. Если убрать "_X" то AutoCAD предложит "ручной" метод выбора (вообще опций много).

Теперь когда набор создан, сделает последний штрих - выделим примитивы на экране: (sssetfirst nil a)
{Smirnoff} вне форума  
 
Автор темы   Непрочитано 01.06.2005, 15:58 Привет
#4
DEM

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


Все аналогично за исключением координат.
__________________
Работаю за еду.
Working for food.
Für Essen arbeiten.
العمل من أجل الغذاء
Працую за їжу.
DEM вне форума  
 
Непрочитано 01.06.2005, 15:59
#5
Apelsinov

Проектировщик ВК. LISP-любитель.
 
Регистрация: 15.12.2003
Москва
Сообщений: 1,202
<phrase 1=


есть такая команда FILTER, как раз позволяет создать набор по выбранным свойствам выбранного объекта.

PS
пока писал, Fantomas уже успел...
Apelsinov вне форума  
 
Автор темы   Непрочитано 01.06.2005, 16:09 Привет
#6
DEM

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


В общем суть в следующем, Я занимаюсь переработкой китайских чертежей под наши стандарты. Дело в том что очень часто приходится менять текст который втречпется на листе десятки раз, пользуюсь командо быстрого выбора, задаю текст который надо изменить, далее меняю текст через окно свойств, а так же стиль текста. Но это очень трудоемко. Требуется следующее
1. Выделил текст требуемый редактирования
2. Вызвал соответствующую команду и весь остальной текст (contecst)
выделился автоматически
3. Далее я через окно свойств редактирую текст и стиль, а так же если требуется перемещаю его
__________________
Работаю за еду.
Working for food.
Für Essen arbeiten.
العمل من أجل الغذاء
Працую за їжу.
DEM вне форума  
 
Непрочитано 01.06.2005, 16:32
#7
Torino


 
Регистрация: 21.08.2003
Штаб
Сообщений: 943
<phrase 1=


Если я правильно понял, то вот так:
Код:
[Выделить все]
(defun c:sel-sim (/ data ss)
  (setq data (entget (car (entsel "\nPick an object: "))))
  (setq	ss (ssget "_X"
		  (list '(0 . "*TEXT") (car (list (assoc 1 data))))
	   )
  )
  (sssetfirst nil ss)
  (princ)
)
Torino вне форума  
 
Автор темы   Непрочитано 05.06.2005, 13:40
#8
DEM

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


Огромное спасибо за лисп.
__________________
Работаю за еду.
Working for food.
Für Essen arbeiten.
العمل من أجل الغذاء
Працую за їжу.
DEM вне форума  
 
Непрочитано 28.12.2024, 10:29
#9
Gretech89


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


Цитата:
Сообщение от Torino Посмотреть сообщение
Если я правильно понял, то вот так:
Код:
[Выделить все]
(defun c:sel-sim (/ data ss)
  (setq data (entget (car (entsel "\nPick an object: "))))
  (setq	ss (ssget "_X"
		  (list '(0 . "*TEXT") (car (list (assoc 1 data))))
	   )
  )
  (sssetfirst nil ss)
  (princ)
)
Кто знает как уйти от формата записи
Код:
[Выделить все]
 (list '(0 . "*TEXT") (car (list (assoc 1 data))))
И прийти к
Код:
[Выделить все]
 '((0 . "*TEXT") (car (list (assoc 1 data))))
Пробовал и так и сяк и через преобразование точечной пары в строку с помощью vl-princ-to-string, но ничего не выходит..
Gretech89 вне форума  
 
Непрочитано 28.12.2024, 10:35
#10
Кулик Алексей aka kpblc
Moderator

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


Цитата:
Сообщение от Gretech89 Посмотреть сообщение
как уйти от формата записи
Никак. Читай разницу между list и quote.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 28.12.2024, 20:30
#11
koMon


 
Блог
 
Регистрация: 26.09.2017
Сообщений: 1,809


Цитата:
Сообщение от Gretech89 Посмотреть сообщение
И прийти к
а в чём тайный смысл?

Цитата:
Сообщение от Gretech89 Посмотреть сообщение
(car (list (assoc 1 data)))
≡ (assoc 1 data)
__________________
K Lisp
koMon вне форума  
 
Непрочитано 22.01.2025, 14:06
#12
Gretech89


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


Цитата:
Сообщение от koMon Посмотреть сообщение
а в чём тайный смысл?
Только лишь в самой записи.

Цитата:
Сообщение от koMon Посмотреть сообщение
≡ (assoc 1 data)
Спасибо)
Gretech89 вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > AutoCAD > Выбор объектов подобных данному