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

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

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

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

Требуется выделить объект, затем автоматически выбрать все объекты подобные этому объекту на чертеже (конкретно мне это надо для изменения текста и изменения его формата, поиск и замена текста не подходит, быстрый выбор требует копирования и вставки текста по критериям выбора что не очень подходит). Прошу помочь с лиспом( к сожалению требуемой литературой не обеспечен) Заранее спасибо всем откликнувшимся.
Просмотров: 6617
 
Непрочитано 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,985


Все аналогично за исключением координат.
DEM вне форума  
 
Непрочитано 01.06.2005, 15:59
#5
Apelsinov

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


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

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

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


В общем суть в следующем, Я занимаюсь переработкой китайских чертежей под наши стандарты. Дело в том что очень часто приходится менять текст который втречпется на листе десятки раз, пользуюсь командо быстрого выбора, задаю текст который надо изменить, далее меняю текст через окно свойств, а так же стиль текста. Но это очень трудоемко. Требуется следующее
1. Выделил текст требуемый редактирования
2. Вызвал соответствующую команду и весь остальной текст (contecst)
выделился автоматически
3. Далее я через окно свойств редактирую текст и стиль, а так же если требуется перемещаю его
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,985


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

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

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