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

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

Автоматическая разбивка контуров на слои

Ответ
Поиск в этой теме
Непрочитано 05.10.2020, 06:02 #1
Автоматическая разбивка контуров на слои
abyss
 
Регистрация: 05.10.2020
Сообщений: 1

Добрый день, форумчане. Столкнулись с нетривиальной проблемой: ЧПУ станки дают раскрой в одном листе, а программа всасывающая эти данные -- хочет, чтобы каждый элемент был на своем слое.
Стандартный взрыв автокада, тут, конечно, не годится.
Как, очевидно, макросом разбить, допустим 50 кружков и квадратиков на одном слое в автокаде на 50 разных слоев. Автоматически?
Просмотров: 1221
 
Непрочитано 05.10.2020, 08:43
#2
Кулик Алексей aka kpblc
Moderator

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


Сам AutoCAD подобное делать не умеет, насколько я знаю. Нету в нем штатных команд под такие задачи, как мне кажется.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 05.10.2020, 09:28
#3
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 11,499


Цитата:
Сообщение от abyss Посмотреть сообщение
ЧПУ станки дают раскрой в одном листе, а программа всасывающая эти данные -- хочет, чтобы каждый элемент был на своем слое.
неожиданный переход от листа к слоям)

А так задача тривиальная:
1. Создается набор примитивов;
2. В цикле пройти по этому набору, создавать слой с именем %Имя слоя_% + индекс цикла и переносить туда текущий элемент из набора.
но это другая ветка уже - программирование или поиск исполнителей.
Сергей812 вне форума  
 
Непрочитано 05.10.2020, 13:28
#4
skkkk


 
Регистрация: 20.03.2008
Сообщений: 2,680


Раз плюнуть:
Код:
[Выделить все]
 (vl-load-com)
(defun C:UNIQLAYER ( / ss i vl_obj layer_name)
	(setq ss (ssget "_A"))
	(if ss
		(repeat (setq i (sslength ss))
			(setq vl_obj (vlax-ename->vla-object (ssname ss (setq i (1- i)))))
			(setq layer_name (vla-get-Name (create-layer (vla-get-Handle vl_obj) 256 nil nil T)))
			(vla-put-Layer vl_obj layer_name)
		)
	)
	(princ (strcat "\nОбработано объектов: " (itoa (sslength ss))))
	(princ)
)


;;; Вспомогательная функция 
;;; Создание нового слоя.
;;; Аргументы: имя; цвет, тип линии, вес линии (если nil, то по умолчанию); печатаемость(T - да, nil - нет)

(defun create-layer (layer_name color linetype lineweight no_print / adoc col vla_layer)
	(setq adoc (vla-get-ActiveDocument (vlax-get-acad-object))
		  col 
			(vla-GetInterfaceObject 
				(vlax-get-acad-object)
				(strcat "autocad.accmcolor." (vl-princ-to-string (atoi (getvar "acadver"))))
			)
	)
	(if	(null (tblsearch "layer" layer_name))
		(setq vla_layer (vla-Add (vla-get-Layers adoc) layer_name))
		(setq vla_layer (vla-Item (vla-get-Layers adoc) layer_name))
	)
	(cond
	  (	color 
		(vla-put-ColorIndex col color)
		(vla-put-TrueColor vla_layer col)
	  )
	)
	(cond
	  (	linetype
		(if (not (tblobjname "LType" linetype)) (vla-load (vla-get-Linetypes adoc) linetype "acadiso.lin"))
		(vla-put-Linetype vla_layer linetype)
	  )
	)
	(cond
	  (	lineweight
		(vla-put-LineWeight vla_layer lineweight)
	  )
	)
	(vla-put-Plottable vla_layer (if no_print 0 1))
	vla_layer
)
(princ "\nC:UNIQLAYER")
(princ)
Создаст для каждого объекта слой, имя которого равно хэндлу данного объекта и разместит все объекты по своим слоям.
skkkk вне форума  
 
Непрочитано 05.10.2020, 13:42
#5
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 11,499


только осталось выяснить - что ТС подразумевает под листом, какими примитивами сделаны контура, есть ли еще информация помимо контуров.. ну и почему там фигурировало расчленение блока в топике.
Сергей812 вне форума  
 
Непрочитано 05.10.2020, 15:07
#6
nickname2019


 
Регистрация: 18.11.2019
Сообщений: 1,705


Интересно, если деталь состоит из двух контуров - внутри одного контура находится другой контур (отверстие) - слои этих контуров должны быть одинаковые?
nickname2019 вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > AutoCAD > Автоматическая разбивка контуров на слои



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Geonics Группировка (компановка) слоев в слои согласно шаблона Dimas77 Прочее. Программное обеспечение 2 29.12.2015 14:23
Автоматическая разбивка трассы на листы eldarmaga Программирование 6 18.03.2013 14:04
ЛИСП слои цвета преобразование Gotch LISP 97 08.11.2011 10:22
AutoCAD 2007 создает новые слои Sneginka_Clan AutoCAD 7 26.05.2009 21:09
Как удалять слои???????? Абдула AutoCAD 2 03.10.2005 19:07