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

Вернуться   Форум DWG.RU > Программное обеспечение > AutoCAD > Как преобразовать region в кучу полилиний?

Как преобразовать region в кучу полилиний?

Ответ
Поиск в этой теме
Непрочитано 23.04.2006, 23:35 #1
Как преобразовать region в кучу полилиний?
xbt
 
Регистрация: 25.02.2006
Сообщений: 12

Есть 1 регион состоящий из кучи линий. Надо сделать кучу замкнутых полилиний. Это нужно чтобы экспортировать в corel draw чтобы затем вырезать на режущем плоттере. Плоттер режет только линии/полилинии (никаких регионов). И только из корела. В ручную (pedit) переводить очень долго. Пример в файле.
Кто-нибудь сталкивался с этим?
[ATTACH]1145820955.dwg[/ATTACH]
Просмотров: 11692
 
Непрочитано 24.04.2006, 06:38
#2
Profan


 
Регистрация: 25.12.2005
Москва
Сообщений: 13,627


Можно воспользоваться командой "flatten" из "Express Tools" с удалением скрытых линий. Желательно для преобразования выбирать только области (region). Однако возможны проблемы с преобразованием кривых участков.
Область в левой части рисунка можно расчленить на отдельные области. Тогда к некоторым из них можно применить комануду "контур" ("_boundary") на отдельном слое. Но не ко всем.
Profan вне форума  
 
Непрочитано 24.04.2006, 08:56
#3
Кулик Алексей aka kpblc
Moderator

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


Я и без Express обошелся
[ctrl]+[a]
_explode
_pedit
_m
_all
_join (если был вопрос о преобразовании отрезков в полилинии, ответить Да)
0 (это ответ на запрос fuzz distance)
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 24.04.2006, 09:08
#4
Profan


 
Регистрация: 25.12.2005
Москва
Сообщений: 13,627


Для kpblc
Да, хорошо получилось. Только для данного примера "Ctrl+A" и "_all" не надо, выбрать только объекты в левой части рисунка.
Profan вне форума  
 
Непрочитано 24.04.2006, 09:45
#5
Profan


 
Регистрация: 25.12.2005
Москва
Сообщений: 13,627


В CorelDRAW X3 (13) появился инструмент Smart Fill Tool, который позволяет создавать контур с заливкой или без указанием точки внутри области, ограниченной отдельными линиями. Условие: линии должны быть сопряжены без разрывов. В текущем примере есть области с разрывами, и данный инструмент их не берет.
Profan вне форума  
 
Непрочитано 24.04.2006, 10:40
2 | #6
VVA

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


Писал как-то для себя преобразование Region'ов в полилинии.
Преобразует в полилинии так же эллипсы и круги в регионах.

Код:
[Выделить все]
(defun C:EXP_REGION ( / adoc el ssnab en item lays lay lock pell ptcen)
  (setq adoc (vla-get-activedocument (vlax-get-acad-object)))
  (setq lays (vla-get-layers adoc))
  (vla-startundomark adoc)
  (setq el (entlast))
;;; (setq ssnab (ssget "_X" '((0 . "REGION"))))  ;_Если все Region'ы в рисунке
 (setq ssnab (ssget '((0 . "REGION"))))          ;_Выбор Region'ов в рисунке
  (while (and ssnab
	      (> (sslength ssnab) 0))
    (setq en (ssname ssnab 0))
    (setq item (vlax-ename->vla-object en))
    (setq lay (vla-item lays (vla-get-layer item)))
    (if (= (vla-get-lock lay) :vlax-true)
      (progn (vla-put-lock lay :vlax-false) (setq lock (cons lay lock))))
    (if (not (vl-catch-all-error-p 
           (vl-catch-all-apply 'vla-explode (list item))
	   ))
      (vla-Delete item))
    (ssdel en ssnab)
    )
  (if el
    (progn
       (setq ssnab nil ssnab (ssadd))
       (setq pell (getvar "PELLIPSE"))
       (setvar "PELLIPSE" 1)
       (while (setq el (entnext el))
	 (setq en (vlax-ename->vla-object el))
	 (setq item (vla-get-ObjectName en))
	 (cond ((= item "AcDbCircle") ;_"AcDbSpline"
		(setq ptcen (vlax-safearray->list
			      (vlax-variant-value (vla-get-center en))))
                (command "_ellipse" "_C" ptcen (polar ptcen 0 (vla-get-radius en)) "_R" 0)
		(mapcar '(lambda (x y)
			   (vlax-put-property (vlax-ename->vla-object (entlast)) x y))
			'(Linetype LineWeight Color Layer)
			(mapcar '(lambda (x)
				   (vlax-get-property en x))
			'(Linetype LineWeight Color Layer)))
         	(vla-Delete en)
		)
	       ((= item "AcDbEllipse")
		(setq ptcen (vlax-safearray->list
			      (vlax-variant-value (vla-get-center en))))
		(command "_ellipse" "_C" ptcen
			 (mapcar '+ ptcen
				 (vlax-safearray->list
				   (vlax-variant-value (vla-get-MajorAxis en))))
			 (mapcar '+ ptcen
				 (vlax-safearray->list
				   (vlax-variant-value (vla-get-MinorAxis en)))))
		(mapcar '(lambda (x y)
			   (vlax-put-property (vlax-ename->vla-object (entlast)) x y))
			'(Linetype LineWeight Color Layer)
			(mapcar '(lambda (x)
				   (vlax-get-property en x))
			'(Linetype LineWeight Color Layer)))
		(vla-Delete en)
		)
	       ((= item "AcDbSpline") nil );_Нужно ли?
	       (t (ssadd el ssnab))
	       )
	 )
       (if (> (sslength ssnab) 0)
          (command "_pedit" "_multiple" ssnab "" "_y" "_Join" "" "")
       )
      )
      (setvar "PELLIPSE" pell)
    )
  (setq ssnab nil)  
  (if lock (foreach x lock (vla-put-lock x :vlax-true)))
  (vla-endundomark adoc)
  (princ "\nПреобразование Регионов завершено")
  (princ)
)
 (princ "\nНаберите в ком. строке EXP_REGION")
VVA вне форума  
 
Непрочитано 15.08.2011, 10:23
#7
makcez

изыскатель
 
Регистрация: 03.05.2011
Москва
Сообщений: 19


не работает. пишет "AutoCAD variable setting rejected: "CMDECHO" nil"
makcez вне форума  
 
Непрочитано 15.08.2011, 10:28
#8
Хмурый


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


применить к области команду _boundary
Хмурый вне форума  
 
Непрочитано 15.08.2011, 10:41
#9
makcez

изыскатель
 
Регистрация: 03.05.2011
Москва
Сообщений: 19


тогда у меня поверх области появляется новая полилиния, а мне же надо массово преобразовывать области в полилинии.
до дня строителя лисп работал устойчиво, теперь ошибка. в чем дело? AutoCAD 2012.
makcez вне форума  
 
Непрочитано 15.08.2011, 10:44
#10
Хмурый


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


makcez, да, зато её можно создать на определённом слое....
Хмурый вне форума  
 
Непрочитано 15.08.2011, 10:49
#11
makcez

изыскатель
 
Регистрация: 03.05.2011
Москва
Сообщений: 19


а почему раньше все работало, а теперь нет?
makcez вне форума  
 
Непрочитано 15.08.2011, 15:12
#12
АлексЮстасу

топограф, технолог
 
Блог
 
Регистрация: 24.05.2009
Москва
Сообщений: 3,072


В ToolPack есть преобразование регионов в замкнутые полилинии в одно действие.
АлексЮстасу вне форума  
 
Непрочитано 15.08.2011, 15:42
#13
makcez

изыскатель
 
Регистрация: 03.05.2011
Москва
Сообщений: 19


Цитата:
Сообщение от АлексЮстасу Посмотреть сообщение
В ToolPack есть преобразование регионов в замкнутые полилинии в одно действие.
Спасибо, хороший инструмент
makcez вне форума  
 
Непрочитано 15.08.2011, 16:04
#14
АлексЮстасу

топограф, технолог
 
Блог
 
Регистрация: 24.05.2009
Москва
Сообщений: 3,072


Цитата:
Сообщение от makcez Посмотреть сообщение
а почему раньше все работало, а теперь нет?
Может быть дело в версии Автокада?
У меня сей момент 2006, и программка VVA работает отлично.

Кстати, почему-то про ToolPack на форуме как будто забыли - не встречаю уже давно никаких упоминаний. Предан анафеме?

Последний раз редактировалось АлексЮстасу, 15.08.2011 в 18:52.
АлексЮстасу вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > AutoCAD > Как преобразовать region в кучу полилиний?