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

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

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

Ответ
Поиск в этой теме
Непрочитано 25.11.2014, 19:18 #1
Выбор подобных объектов в произвольном замкнутом контуре
Papagan
 
инженер-топограф
 
Томск
Регистрация: 25.11.2014
Сообщений: 5

Столкнулся с проблемой, надо как-то автоматизировать процесс.
Итак, имеем замкнутый контур, который заполняется штриховкой (н-р усл. знак проходимые болота М 1:500), далее расчленяем штриховку, далее в данном контуре имеются другие замкнутые контуры (н-р озеро) которое то же залито штриховкой и эту штриховку удаляют вручную выделяя отдельные штрихи. Инструмент "выбор подобных" конечно ускоряет процесс, но видится он мне другим. Либо изначально заштриховать нормально, либо удалять путём выбора подобных объектов внутри произвольного замкнутого контура, указывая его. Прошу совета. Заранее благодарен.
Просмотров: 4521
 
Непрочитано 25.11.2014, 21:09
#2
Хмурый


 
Регистрация: 29.10.2004
СПб
Сообщений: 16,379


так можно выбор сделать по контуру.... _Select _f
Хмурый вне форума  
 
Автор темы   Непрочитано 26.11.2014, 07:24
#3
Papagan

инженер-топограф
 
Регистрация: 25.11.2014
Томск
Сообщений: 5


_Select_f в данном случае выбирает объекты которые пересекает. Мне не подходит такое решение. Набросал небольшой пример. Требуется выделить штриховку внутри малого контура, отфильтровав её от остальных объектов через быстрый выбор.
Вложения
Тип файла: dwg
DWG 2010
Чертеж1.dwg (1.24 Мб, 783 просмотров)
Papagan вне форума  
 
Непрочитано 26.11.2014, 07:34
#4
Krieger

инженер (КМ)
 
Регистрация: 30.10.2004
Красноярск
Сообщений: 3,837


Цитата:
Сообщение от Papagan Посмотреть сообщение
Инструмент "выбор подобных"
Что за инструмент такой?

По какому признаку надо выделить?
__________________
Делай хорошо, плохо само получится.
Krieger вне форума  
 
Автор темы   Непрочитано 26.11.2014, 07:40
#5
Papagan

инженер-топограф
 
Регистрация: 25.11.2014
Томск
Сообщений: 5


Выбери несколько разных объектов, правой кнопкой мыши в списке выбери "быстрый выбор", а там все просто, в данном случает можно отфильтровать по цвету. Конечное решение - внутри малого контура не должно быть зеленой штриховки.
Papagan вне форума  
 
Непрочитано 26.11.2014, 07:59
#6
Хмурый


 
Регистрация: 29.10.2004
СПб
Сообщений: 16,379


ObjectARX для Autocad 2010-2014. Выделение элементов по существующим контурам а потом фильтруй
Хмурый вне форума  
 
Автор темы   Непрочитано 26.11.2014, 08:11
#7
Papagan

инженер-топограф
 
Регистрация: 25.11.2014
Томск
Сообщений: 5


Слава Вам. Спасибо!
Papagan вне форума  
 
Непрочитано 26.11.2014, 08:11
1 | #8
Krieger

инженер (КМ)
 
Регистрация: 30.10.2004
Красноярск
Сообщений: 3,837


Самому часто приходится выбирать по слою, накидал себе программку такую. Для тебя добавил цвет.
Выбираем все в твоем контуре. Вводим в комстроке "ss", потом "с" и указываем на объект, у которого есть такой цвет, который тебе нужно выделить, т.е. из твоего примера нужно ткнуть по зеленому треугольнику. Из всего что выбрано отфильтруются и выделятся все зеленые объекты.
ps С цветом "по слою" не работает.
Код:
[Выделить все]
(defun c:ss (/ ss ss1 ent keyword typeent entity)
  (setq keyword t
	ss1 (ssadd))
  (if (setq ss (ssget))
  (while keyword
  (initget 128 "Layer Block Text Color")
  (if (setq keyword (getkword "Чего выбираем? [Layer (По слою), Block (По блоку), Text (Текст), Color (По цвету)] <Выход> : "))
    (progn
  
;(setq ent (Kr_entsel "\nВыберите объект" nil nil))
  (cond
    ((eq keyword "Layer") (setq ent (Kr_entsel "\nВыберите объект" nil nil) typeent (assoc 8 (entget ent))))
    ((eq keyword "Block") (setq ent (Kr_entsel "\nВыберите объект" '("INSERT") nil) typeent (assoc 2 (entget ent))))
    ((eq keyword "Text") (setq ent (Kr_entsel "\nВыберите объект" '("TEXT" "MTEXT") nil) typeent (assoc 0 (entget ent))))
    ((eq keyword "Color") (setq ent (Kr_entsel "\nВыберите объект" nil nil) typeent (assoc 62 (entget ent))))
    );cond
(foreach entity (ssnamex ss) (if (eq (type (cadr entity)) 'ENAME) (if (member typeent (entget (cadr entity))) (ssadd (cadr entity) ss1))))
(command "_.pselect" ss1 "" "_regen")
  );progn
    );if
    );while
    );if
  )

;|Функция Kr_entsel
*** Автор Морозов С.В. aka Krieger ***
Еденичный выбор объекта, замена функции entsel
Возвращает entity name выбранного примитива или nil, точку указки запоминает в переменной LASTPOINT
Параметры:
promt - предложение выбрать объект (string)
filter - фильтр объектов для выбора вида '("LINE" "LWPOLYLINE")
entlist - список примитивов которые не надо выбирать (либо список entity name, либо PICKSET)

Примеры:
(Kr_entsel "\nВыберите объекты" '("LINE" "LWPOLYLINE") nil)
(Kr_entsel "\nВыберите объекты" nil nil)
(setq aa nil) (Kr_entsel "\nВыберите объекты" '("LINE" "LWPOLYLINE") (while (setq a (car (entsel))) (setq aa (append aa (list a)))))
(Kr_entsel "\nВыберите объекты" '("LINE" "LWPOLYLINE") (ssget))

|;

(defun Kr_entsel (promt filter entlist / key n newentlist ent_point promt)
  
  (setq key T n 0 newentlist nil)
  (if (eq (type entlist) 'PICKSET)
    (progn
    	(while (setq a (ssname entlist n)) (setq newentlist (append newentlist (list a)) n (1+ n)))
    	(setq entlist newentlist)
    );progn
   );if
    (while key
    	(if (or (setq ent_point (entsel promt)) (= (getvar "ERRNO") 7))
	  	(if (or (eq (type ent_point) 'LIST) (not ent_point))
		  (if ent_point
		    (if (member (setq ent (car ent_point)) entlist)
		      (princ "\nПримитив уже выбран")
		      (if filter
			      (if (not (member (cdr (assoc 0 (entget ent))) filter))
				(progn (setq str "\nНе верный выбор, выберите: ")
				  (princ (substr (setq str (foreach n filter (setq str (strcat str n ", ")))) 1 (- (strlen str) 2)))
				);progn
				(setq key nil)
			      );if
				(setq key nil)
			);if
		    );if
		    (setq key T)
		  );if
	    	(setq key nil)
	    );if
	  (setq key nil)
      	);if
     );while
  (if (eq (type ent_point) 'LIST)
    (progn (setvar "LASTPOINT" (cadr ent_point)) ent)
    ent_point
  );if
);defun
__________________
Делай хорошо, плохо само получится.
Krieger вне форума  
 
Непрочитано 26.11.2014, 11:49
#9
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,996


Цитата:
Сообщение от Хмурый Посмотреть сообщение
Мои 5 копеек
LISP.Выделение объектов в области контура
Выделение объектов в области контура, AutoCAD
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 26.11.2014, 12:08
#10
Vassa


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


Цитата:
Сообщение от Papagan Посмотреть сообщение
Либо изначально заштриховать нормально,
Может чего-то не понял, но почему бы сразу не штриховать, как Вы говорите, нормально, т.е. не через выбор замкнутого контура, а посредством выбора точек внутри контуров, предназначенных для штрихования?
__________________
В действительности все иначе, чем на самом деле.
(Антуан де Сент-Экзюпери)
Vassa вне форума  
 
Автор темы   Непрочитано 18.12.2014, 21:25
#11
Papagan

инженер-топограф
 
Регистрация: 25.11.2014
Томск
Сообщений: 5


Цитата:
Сообщение от Vassa Посмотреть сообщение
Может чего-то не понял, но почему бы сразу не штриховать, как Вы говорите, нормально
Я все понимаю, что лучше сразу делать все как надо. Но в этом случае речь шла о переделке того что камеральщики наделали.
Спасибо всем откликнувшимся!
Papagan вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > AutoCAD > Выбор подобных объектов в произвольном замкнутом контуре



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Выбор объектов подобных данному DEM AutoCAD 11 22.01.2025 14:06
Выбор объектов SergU AutoCAD 20 16.03.2020 14:36
Выбор объектов с учетом XData (VBA) e_v_a Программирование 2 23.08.2007 13:32
Выбор объектов в VBA Бродяга Программирование 19 12.03.2007 09:33