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

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

Автоматический перенос размеров на слой размеры. Break макро

Ответ
Поиск в этой теме
Непрочитано 01.03.2005, 12:58
Автоматический перенос размеров на слой размеры. Break макро
Piton
 
Инженер строитель
 
Москва
Регистрация: 24.02.2005
Сообщений: 396

Подскажите макрос на кнопку чтоб команда break разрывала в двух указанных точках (First point, second break point). ACAD2005
---
Добавлено (спасибо VVA): Рабочие варианты
#25
#190
#272
#273

Последний раз редактировалось Кулик Алексей aka kpblc, 16.11.2012 в 13:42.
Просмотров: 171267
 
Непрочитано 13.03.2017, 23:34
#321
Кулик Алексей aka kpblc
Moderator

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


Как вариант, без особого тестирования:
Код:
[Выделить все]
 (vl-load-com)
(if *vlr-cmd*
  (progn (setq *vlr-cmd* nil) (vlr-remove-all :vlr-command-reactor))
  ) ;_ end of if
(if (not *vlr-cmd*)
  (setq *vlr-cmd* (vlr-command-reactor
                    "cmd"
                    '((:vlr-commandwillstart . cmd-start)
                      (:vlr-commandended . cmd-end)
                      (:vlr-commandcancelled . cmd-end)
                      (:vlr-commandfailed . cmd-end)
                      )
                    ) ;_ end of vlr-command-reactor
        ) ;_ end of setq
  ) ;_ end of if
(defun cmd-start (calling-reactor startcommandinfo / thecommandstart obj name)
  (setq thecommandstart (car startcommandinfo))
  (if (null *oldlayer*)
    (setq *oldlayer* (getvar "CLAYER"))
    ) ;_ end of if
  (cond ((wcmatch (strcase thecommandstart) "REVCLOUD")
         (setq obj (vla-add (vla-get-layers (vla-get-activedocument (vlax-get-acad-object)))
                            (setq name (strcat "Замечания_" (itoa (fix (getvar "cdate")))))
                            ) ;_ end of vla-add
               ) ;_ end of setq
         (vla-put-lineweight obj aclnwt025)
         (vla-put-color obj 1)
         (vla-put-linetype obj "Continuous")
         (vla-put-plottable obj :vlax-true)
         (vl-catch-all-apply (function (lambda () (vla-put-freeze obj :vlax-false))))
         (vla-put-layeron obj :vlax-true)
         (vla-put-lock obj :vlax-false)
         (setq *oldsysvar*
                (mapcar (function (lambda (x / tmp)
                                    (if (setq tmp (getvar (car x)))
                                      (progn (setvar (car x)
                                                     (cond ((cdr x))
                                                           (t tmp)
                                                           ) ;_ end of cond
                                                     ) ;_ end of setvar
                                             (cons (car x) tmp)
                                             ) ;_ end of progn
                                      ) ;_ end of if
                                    ) ;_ end of LAMBDA
                                  ) ;_ end of function
                        (list (cons "clayer" name) '("cecolor") '("celweight") '("celtype"))
                        ) ;_ end of mapcar
               ) ;_ end of setq
         )
        (t (setq *oldsysvar* nil))
        ) ;_ end of cond
  ) ;_ end of defun
;;;------------------------------------------------------------- 
(defun cmd-end (calling-reactor cmd / obj cmd_name)
  (setq cmd_name (strcase (car cmd)))
  (cond ((wcmatch cmd_name "REVCLOUD") (foreach item *oldsysvar* (setvar (car item) (cdr item)))))
  ) ;_ end of defun
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 14.03.2017, 09:54
#322
AMDen

Инженер-проектировщик
 
Регистрация: 07.07.2016
Санкт-Петербург
Сообщений: 723


Алексей, большое спасибо! Работает. )
AMDen на форуме  
 
Непрочитано 21.12.2017, 13:32 Диспетчер слоев
#323
Умяр

Инженер-проектировщик
 
Регистрация: 12.05.2016
Пенза
Сообщений: 5
Отправить сообщение для Умяр с помощью Skype™


Добрый день, форумчане! Использую первый лисп из #25.
Со своей задачей справляется.
При открытии документов автоматом выплывает Диспетчер слоев.
Мешает. Недавно подключилась и Справка. Теперь они вдвоем раздражают.
С чем может быть связано? Перечитал всю ветку, так и не догадался.

upd. Проблема решена
__________________
Начинающий

Последний раз редактировалось Умяр, 21.12.2017 в 13:42. Причина: Разобрался с проблемой
Умяр вне форума  
 
Непрочитано 21.12.2017, 13:43
#324
Кулик Алексей aka kpblc
Moderator

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


Проверь другие подключаемые приложения - возможно, там проблемы.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 26.09.2018, 10:42
#325
Папаё

архитектор
 
Регистрация: 17.03.2015
респ. Коми
Сообщений: 55


Обратный вопрос, а как вычислить такой лисп, отправляющий все размеры на слой размеры?
На 17 кад ставил прежние липсы, веткад и тд. Попробовал их настройки- упорно размеры переносятся в тот слой.
__________________
архитектор
дома, эскизы
санаторий, дымоходы
Папаё вне форума  
 
Непрочитано 26.09.2018, 12:26
#326
Сергей812


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


локализовать - загружать по одной надстройке и пробовать
Сергей812 вне форума  
 
Непрочитано 27.03.2020, 15:17
#327
SergAM243

инженерю чуть
 
Регистрация: 14.07.2008
Севастополь
Сообщений: 40
<phrase 1=


Уважаемые гуру!
Можно ли в строке изменить цвет линии и или как это сделать правильно
Код:
[Выделить все]
 (vl-cmdf "_layer" "_make" "АР_Оси" "_color" 10 "" "_lt"  "CENTER2" "" "_lw" 0.15 "" "")     ;_Создаем слой Оси и задаем цвет 10 тип линии штрихпунктирная вес 0,15
на
Код:
[Выделить все]
 (vl-cmdf "_layer" "_make" "АР_Оси" "_color" "255,1,1" "" "_lt"  "CENTER2" "" "_lw" 0.15 "" "")     ;_Создаем слой Оси и задаем цвет "255,1,1" тип линии штрихпунктирная вес 0,15
Требуется в монохроме печатать оси красным, устал менять вручную. Частенько забываю и приходится перепечатывать.
SergAM243 вне форума  
 
Непрочитано 01.04.2020, 20:34
#328
skkkk


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


Цитата:
Сообщение от SergAM243 Посмотреть сообщение
Можно ли в строке изменить цвет линии и или как это сделать правильно
В вопросе говорится о цвете линиии, а в строке кода речь идет о цвете слоя.
Если правильно понял, нужно создать слой "АР Оси", цвет которого должен быть из палитры RGB.

Если это так, то нужно обеспечить загрузку лиспа:
Код:
[Выделить все]
 (defun create_layer 
;;; Функция создания слоя.
;;; Аргументы:
	(layer_name ;;; имя слоя (строка)
	 color      ;;; цвет слоя подложки. Варианты:
					;;;   - целое число, например: 1 - красный... 
					;;;	  - список целых чисел, соответствующих цвету RGB, например '(255 255 1)
	 linetype   ;;; тип линии (строка). nil - по умолчанию ("Continuous")
	 lineweight ;;; вес линии (вещественное число, например, 0.25). nil - по умолчанию
	 no_print   ;;; если T, то слой непечатаемый
	 /
	)	


	(if (and linetype (not (tblobjname "LType" linetype)))
		(vla-load (vla-get-Linetypes (vla-get-ActiveDocument (vlax-get-acad-object))) linetype "acadiso.lin")
	)
	(if	(null (tblsearch "layer" layer_name))
		(entmakex 
			(list 
				(vl-list* 0   "LAYER") 
				(vl-list* 100 "AcDbSymbolTableRecord") 
				(vl-list* 100 "AcDbLayerTableRecord") 
				(vl-list* 2 layer_name)
				(vl-list* 70 0)
				(if	(listp color)
					(vl-list* 420 
						(+
							(lsh (car  color) 16) ; R
							(lsh (cadr color)  8) ; G
							(caddr color)	      ; B
						) 
					) 
					(vl-list* 62 color)
				)
				(if	linetype
					(vl-list* 6 linetype)
					(vl-list* 6 "Continuous")
				)
				(if lineweight		 
					(vl-list* 370 (fix (* lineweight 100)))
					(vl-list* 370 -3); вес по умолчанию	
				)
				(if no_print
					(vl-list* 290 0) ; непечатаемый
					(vl-list* 290 1) ; печатаемый
				)
			)
		)

	)
)
, предварительно заменив в строке 16 имя файла типа линий с "acadiso.lin" на свой. Также нужно убедиться, что данный файл лежит в путях доступа.
а затем заменить строку:
Код:
[Выделить все]
 (vl-cmdf "_layer" "_make" "АР_Оси" "_color" 10 "" "_lt"  "CENTER2" "" "_lw" 0.15 "" "")     ;_Создаем слой Оси и задаем цвет 10 тип линии штрихпунктирная вес 0,15
на
Код:
[Выделить все]
 (create_layer "АР_Оси" '(255 1 1) "CENTER2" 0.15 nil)

Последний раз редактировалось skkkk, 07.04.2020 в 13:48.
skkkk вне форума  
 
Непрочитано 01.04.2020, 21:08
#329
skkkk


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


Может, я дальтоник? Кто мне скажет, отличаются ли визуально цвета "1", "10" и "255,1,1"?

И что это за проверяющие, для которых настолько критична разница между ними?
Миниатюры
Нажмите на изображение для увеличения
Название: 41141.PNG
Просмотров: 192
Размер:	7.7 Кб
ID:	224590  
skkkk вне форума  
 
Непрочитано 02.04.2020, 06:50
#330
doctorraz

электрик
 
Регистрация: 19.02.2010
Волгоград
Сообщений: 2,293
Отправить сообщение для doctorraz с помощью Skype™


Цитата:
Сообщение от skkkk Посмотреть сообщение
Кто мне скажет, отличаются ли визуально цвета "1", "10" и "255,1,1"?
очевидно, что после печати с монохромным стилем индексированные цвета будут черные, а 255,1,1 красным
убедиться легко вывести в на Dwg to PDF монохром
__________________
Мастерская СПДС
doctorraz вне форума  
 
Непрочитано 02.04.2020, 12:37
#331
skkkk


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


doctorraz, спасибо. Не знал.
Хотя, мог бы быть повнимательнее, учитывая это:
Цитата:
Сообщение от SergAM243 Посмотреть сообщение
Требуется в монохроме печатать оси красным, устал менять вручную.
skkkk вне форума  
 
Непрочитано 02.04.2020, 17:30
#332
doctorraz

электрик
 
Регистрация: 19.02.2010
Волгоград
Сообщений: 2,293
Отправить сообщение для doctorraz с помощью Skype™


мы так подписи иногда раскрашиваем... знаю что низзя, но иногда очень нада)))
__________________
Мастерская СПДС
doctorraz вне форума  
 
Непрочитано 05.04.2020, 22:44
#333
SergAM243

инженерю чуть
 
Регистрация: 14.07.2008
Севастополь
Сообщений: 40
<phrase 1=


Цитата:
Сообщение от skkkk Посмотреть сообщение
Если правильно понял, нужно создать слой "АР Оси", цвет которого должен быть из палитры RGB.

Если это так, то нужно обеспечить загрузку лиспа: ...
Спасибо за попытку помочь. Но я же как чукча-читатель, а не писатель. Привел только понятную и нужную мне строчку мне строчку. Но у меня по подсказке ничего не получилось.
Вот мой код, на основе кода №25:
Код:
[Выделить все]
 ;;; Автор идеи Kenny Ramage, Эдуард, Torino, он же Кочетков Андрей 
;;; Доработка Владимир Азарко (VVA)
;;; Опубликовано http://forum.dwg.ru/showpost.php?p=58664&postcount=25
;;;Автоматический перенос размеров на слой "размеры" 
;;;и заливки на слой "заливка" 
;;;Просто добавь этот файл в автозагрузку 
;;;Команда в Палитре_Инструментов:
;;;^C^C^P(load "01_Zagr_layer_АР-018.lsp")
(vl-load-com) 
;;;----------------------------------------
 (defun create_layer 
;;; Функция создания слоя.
;;; Аргументы:
	(layer_name ;;; имя слоя (строка)
	 color      ;;; цвет слоя подложки. Варианты:
					;;;   - целое число, например: 1 - красный... 
					;;;	  - список целых чисел, соответствующих цвету RGB, например '(255 255 1)
	 linetype   ;;; тип линии (строка). nil - по умолчанию ("Continuous")
	 lineweight ;;; вес линии (вещественное число, например, 0.25). nil - по умолчанию
	 no_print   ;;; если T, то слой непечатаемый
	 /
	)	


	(if (and linetype (not (tblobjname "LType" linetype)))
		(vla-load (vla-get-Linetypes (vla-get-ActiveDocument (vlax-get-acad-object)) linetype "acadiso.lin"))
	)
	(if	(null (tblsearch "layer" layer_name))
		(entmakex 
			(list 
				(vl-list* 0   "LAYER") 
				(vl-list* 100 "AcDbSymbolTableRecord") 
				(vl-list* 100 "AcDbLayerTableRecord") 
				(vl-list* 2 layer_name)
				(vl-list* 70 0)
				(if	(listp color)
					(vl-list* 420 
						(+
							(lsh (car  color) 16) ; R
							(lsh (cadr color)  8) ; G
							(caddr color)	      ; B
						) 
					) 
					(vl-list* 62 color)
				)
				(if	linetype
					(vl-list* 6 linetype)
					(vl-list* 6 "Continuous")
				)
				(if lineweight		 
					(vl-list* 370 (fix (* lineweight 100)))
					(vl-list* 370 -3); вес по умолчанию	
				)
				(if no_print
					(vl-list* 290 0) ; непечатаемый
					(vl-list* 290 1) ; печатаемый
				)
			)
		)

	)
)
;;;----------------------------------------
(vl-cmdf "_layer" "_make" "АР_Размеры" "_color" 150 "" "_lw" 0.15 "" "") ;_Создаем слой Размеры и задаем цвет 150 
(vl-cmdf "_layer" "_make" "АР_Размеры осевые" "_color" 26 "" "_lw" 0.15 "" "") ;_Создаем слой Размеры осевые и задаем цвет 26
(vl-cmdf "_layer" "_make" "АР_Штриховка" "_color" 176 "" "_lw" 0.09 "" "") ;_Создаем слой Штриховка и задаем цвет 176 
(vl-cmdf "_layer" "_make" "АР_Основ" "_color" 2 "" "_lw" 0.60 "" "") ;_Создаем слой АР_Осн и задаем цвет 2
(vl-cmdf "_layer" "_make" "АР_Армат" "_color" 1 "" "_lw" 0.15 "" "") ;_Создаем слой Армат и задаем цвет 1
(vl-cmdf "_layer" "_make" "АР_Окна_двери" "_color" 5 "" "_lw" 0.15 "" "") ;_Создаем слой Окна_двери и задаем цвет 5
(vl-cmdf "_layer" "_make" "АР_Перегородки" "_color" 73 "" "_lw" 0.15 "" "") ;_Создаем слой Перегородки и задаем цвет 73
(vl-cmdf "_layer" "_make" "АР_Стены" "_color" 115 "" "_lw" 0.35 "" "") ;_Создаем слой Стены и задаем цвет 115
(vl-cmdf "_layer" "_make" "АР_Земля" "_color" 155 "" "_lw" 0.90 "" "") ;_Создаем слой АР_Земля и задаем цвет 155
(vl-cmdf "_layer" "_make" "АР_Текст" "_color" 5 "" "_lw" 0.15 "" "")     ;_Создаем слой Текст и задаем цвет 5
(vl-cmdf "_layer" "_make" "АР_Штрихдветочки" "_color" 42 "" "_lt"  "ACAD_ISO12W100" "" "_lw" 0.15 "" "")     ;_Создаем слой штрихдветочки и задаем цвет 42 тип линии ACAD_ISO12W100 вес 0,15
(vl-cmdf "_layer" "_make" "АР_Пунктир" "_color" 5 "" "_lt"  "Штриховая" "" "_lw" 0.15 "" "")     ;_Создаем слой Пунктир и задаем цвет 6 тип линии штриховая вес 0,15
(vl-cmdf "_layer" "_make" "АР_Рамка" "_color" 151 "" "")     ;_Создаем слой Рамка и задаем цвет 151
(vl-cmdf "_layer" "_make" "АР_Непечат" "_color" 205 "" "_lw" 0.15 "" "_plot" "_n" "" "")   ;_Создаем слой Вспомогат и задаем цвет 205 непечатаемый
(vl-cmdf "_layer" "_make" "АР_Таблицы" "_color" 33 "" "")   ;_Создаем слой Таблицы и задаем цвет 33
(vl-cmdf "_layer" "_make" "АР_Сантехника" "_color" 6 "" "_lw" 0.15 "" "")   ;_Создаем слой Сантехника и задаем цвет 5
(vl-cmdf "_layer" "_make" "АР_Выноски" "_color" 5 "" "_lw" 0.15 "" "")   ;_Создаем слой Выноски и задаем цвет 6
(vl-cmdf "_layer" "_make" "АР_Оборуд" "_color" 3 "" "_lw" 0.40 "" "")   ;_Создаем слой Оборуд и задаем цвет 3
(setvar "clayer" *OldLayer*) 
(setq *OldLayer* nil) 
(setq *OldLayer* (getvar "CLAYER"))
;;;;;;По аналогии добавить создание своего слоя 
;;; ... 
;;;;;; 
;;;;;;------------------------------------------------------------- 
(if *vlr-cmd*
  (progn
    (setq *vlr-cmd* nil)
    (vlr-remove-all :vlr-command-reactor)
    ) ;_ end of progn
  ) ;_ end of if
(if (not *vlr-cmd*)
  (setq	*vlr-cmd* (vlr-command-reactor "cmd"
		    '((:vlr-commandwillstart . cmd-start)
		      (:vlr-commandended . cmd-end)
		      (:vlr-commandcancelled . cmd-end)
		      (:vlr-commandfailed . cmd-end)))))
;;;;;;------------------------------------------------------------- 
(defun cmd-start (calling-reactor startcommandInfo / thecommandstart) 
   (setq thecommandstart (nth 0 startcommandInfo))
  (if (null *OldLayer*)(setq *OldLayer* (getvar "CLAYER")))
  (cond 
 ;;;_Реакция на начало команды DIM* (DIMALIGNED DIMLINEAR и все что начинается с DIM)    
    ((wcmatch thecommandstart "DIM*")  ;_Если выполняется команда DIM* 
     (setvar "clayer" "АР_Размеры")       ;_Слой размеры должен быть создан выше (vl-cmdf "_layer" ... 
    ) 
 ;;; Конец реакции на DIM*    
    ((wcmatch thecommandstart "*HATCH*") ;_Если выполняется команда *HATCH* 
     (setvar "clayer" "АР_Штриховка") 
    ) 
    ((wcmatch thecommandstart "*TEXT") ;_Если выполняется команда *TEXT (TEXT DTEXT) 
     (setvar "clayer" "АР_Текст") 
    )
    ((wcmatch thecommandstart "*TABLE") ;_Если выполняется команда *TABLE
     (setvar "clayer" "АР_Таблицы") 
    )
    ((wcmatch thecommandstart "*LEADER") ;_Если выполняется команда *QLEADER MLEADER
     (setvar "clayer" "АР_Выноски") 
    )
	   ((wcmatch thecommandstart "*XLINE") ;_Если выполняется команда XLINE
     (setvar "clayer" "АР_Непечат")
    )
	((wcmatch thecommandstart "*RAY") ;_Если выполняется команда_ray RAY -ЛУЧ-
     (setvar "clayer" "АР_Непечат")
    )
	((wcmatch thecommandstart "*ЛУЧ") ;_Если выполняется команда ЛУЧ
     (setvar "clayer" "АР_Непечат")
    )
    (t (setq *OldLayer* nil)) ;;_Если не наша команда, чистим список текущих слоев
;;;См http://forum.dwg.ru/showpost.php?p=318806&postcount=139
;;;и http://forum.dwg.ru/showpost.php?p=318806&postcount=143
    )
  (princ)) 
 ;;;------------------------------------------------------------- 
(defun cmd-end (calling-reactor cmd / cmd_name)
(setq cmd_name (strcase (car cmd)))
(if (or
      (wcmatch cmd_name "*HATCH*") ;_Если выполняется команда DIM*
      (wcmatch cmd_name "DIM*")    ;_Если выполняется команда *HATCH*
      (wcmatch cmd_name "*TEXT")   ;_Если выполняется команда *TEXT (TEXT DTEXT)
      (wcmatch cmd_name "*TABLE")   ;_Если выполняется команда ТАБЛИЦА
      (wcmatch cmd_name "*LEADER")   ;_Если выполняется команда *QLEADER или MLEADER
	  (wcmatch cmd_name "*XLINE") ;_Если выполняется команда XLINE
	  (wcmatch cmd_name "*RAY") ;_Если выполняется команда RAY
      )
  (progn
    (if *OldLayer* (setvar "clayer" *OldLayer*)) 
    (setq *OldLayer* nil)
    ))
 (princ))
;;;----------------------------------------
 (create_layer "АР_Оси" '(255 1 1) "CENTER2" 0.15 nil)     ;_Создаем слой Оси и задаем цвет "255,1,1" тип линии штрихпунктирная вес 0,15
Загрузку лиспа вставил после (vl-load-com). А строчку (create_layer "АР_Оси" '(255 1 1) "CENTER2" 0.15 nil)
вставлял и сразу после лиспа, и в списке создаваемых слоев, и как в приведенном варианте, в самом конце кода.

Но все время выдает ошибку:
Команда: ; ошибка: Настройка переменной AutoCAD отвергнута: "clayer" nil

Система Вин-7про-32, Кад-18_ру чистый со стандартной установкой СПДС и Експрессов.
Если есть возможность, то прошу внести изменения в этот код, чтобы запускать один лисп.
Если нет такой возможности, то отдельный лисп, чтобы они запускались по очереди.
SergAM243 вне форума  
 
Непрочитано 06.04.2020, 20:46
#334
skkkk


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


Цитата:
Сообщение от SergAM243 Посмотреть сообщение
Загрузку лиспа вставил после (vl-load-com)
Можно туда, да.


Цитата:
Сообщение от SergAM243 Посмотреть сообщение
А строчку (create_layer "АР_Оси" '(255 1 1) "CENTER2" 0.15 nil)
вставлял и сразу после лиспа, и в списке создаваемых слоев, и как в приведенном варианте, в самом конце кода.
А вот эту строку правильнее и логичнее вставить между 81-й и 82-й строкой в коде в #333. Я так делал, у меня срабатывало - слой создавался, правда для пробы я прописывал тип линий из имеющихся у меня, а перед публикацией кода поменял на CENTER2.

Плюс, напоминаю, что нужно обеспечить либо наличие в файле типа линий CENTER2, либо переименовать в коде имя файла с "acadiso.lin" на свой, в котором описан данный тип линий. Также файл должен находиться в путях доступа.

К тому же в коде (#333) я не увидел, какой из типов объектов должен добавляться на слой "АР_Оси"? Либо код просто используется для создания слоя, сами оси (полагаю, блоки) переносятся на слой вручную?
skkkk вне форума  
 
Непрочитано 06.04.2020, 22:51
#335
SergAM243

инженерю чуть
 
Регистрация: 14.07.2008
Севастополь
Сообщений: 40
<phrase 1=


skkkk, спасибо за помощь!
Вставил, как советовали.


CENTER2 в файле "acadiso.lin" есть. Во всяком случае, если создавать слой по подобию 79 или 80 строки с цветом 10, слой создается.
Для пробы менял на "осевая". она тоже есть в файле "acadiso.lin".

В обоих случаях сейчас другая ошибка:
Цитата:
Введите имя нового слоя (этот слой станет текущим) <АР_Выноски>: АР_Оборуд Задайте параметр [?/Создать/Установить/Новый/ПЕРеименоватЬ/Вкл/Откл/Цвет/Тип/вЕс/пРозрачность/Материал/пеЧать/Заморозить/РАзморозить/Блок/рАзблок/Конфигурация/опИсание/соГласовать/ВНешняя ссылка]: _color
Новый цвет [изПалитры/Альбом] : 3
Список имен слоев для присвоения цвета 3 (зеленый) <АР_Оборуд>: Задайте параметр [?/Создать/Установить/Новый/ПЕРеименоватЬ/Вкл/Откл/Цвет/Тип/вЕс/пРозрачность/Материал/пеЧать/Заморозить/РАзморозить/Блок/рАзблок/Конфигурация/опИсание/соГласовать/ВНешняя ссылка]: _lw
Вес линий (0.0мм - 2.11мм): 0.4
Список имен слоев для присвоения веса линий 0.40мм <АР_Оборуд>: Задайте параметр [?/Создать/Установить/Новый/ПЕРеименоватЬ/Вкл/Откл/Цвет/Тип/вЕс/пРозрачность/Материал/пеЧать/Заморозить/РАзморозить/Блок/рАзблок/Конфигурация/опИсание/соГласовать/ВНешняя ссылка]:
Команда: ; ошибка: Слишком много фактических параметров
Т.е. слой по строке 81 создается, а дальше ступор.

Файл создаю новый, каждый раз загружаю КАД заново. А слой нужен просто, чтобы был. Не для "автоматики".
SergAM243 вне форума  
 
Непрочитано 07.04.2020, 13:10
#336
doctorraz

электрик
 
Регистрация: 19.02.2010
Волгоград
Сообщений: 2,293
Отправить сообщение для doctorraz с помощью Skype™


мой лисп слишком слаб и имха задача назначить при создании слоя ему цвет RGB нетривиальна, иначе признанные метры лиспа давно послали где об этом почитать или предложили боевой код..
поэтому до выяснения предлагаю не парить мозг, а создаваемому слою задавать цвет из индексированных, редко используемых,
в стиле печати монохром назначить этому индексированному цвету цвет пера который возжелал видеть нормоконтроллер или какой другой проверяющий

----- добавлено через ~2 мин. -----
ЗЫ для автоматизации создания слоев весьма рекомендую LayerDirector благо он теперь умеет создавать слои с заданными свойствами не только объектам-примитивам, но и на команды
__________________
Мастерская СПДС
doctorraz вне форума  
 
Непрочитано 07.04.2020, 13:55
#337
skkkk


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


Цитата:
Сообщение от SergAM243 Посмотреть сообщение
ошибка: Слишком много фактических параметров
SergAM243, попробуйте так:
Код:
[Выделить все]
  ;;; Автор идеи Kenny Ramage, Эдуард, Torino, он же Кочетков Андрей 
;;; Доработка Владимир Азарко (VVA)
;;; Опубликовано http://forum.dwg.ru/showpost.php?p=58664&postcount=25
;;;Автоматический перенос размеров на слой "размеры" 
;;;и заливки на слой "заливка" 
;;;Просто добавь этот файл в автозагрузку 
;;;Команда в Палитре_Инструментов:
;;;^C^C^P(load "01_Zagr_layer_АР-018.lsp")
(vl-load-com) 
;;;----------------------------------------
 (defun create_layer 
;;; Функция создания слоя.
;;; Аргументы:
	(layer_name ;;; имя слоя (строка)
	 color      ;;; цвет слоя подложки. Варианты:
					;;;   - целое число, например: 1 - красный... 
					;;;	  - список целых чисел, соответствующих цвету RGB, например '(255 255 1)
	 linetype   ;;; тип линии (строка). nil - по умолчанию ("Continuous")
	 lineweight ;;; вес линии (вещественное число, например, 0.25). nil - по умолчанию
	 no_print   ;;; если T, то слой непечатаемый
	 /
	)	


	(if (and linetype (not (tblobjname "LType" linetype)))
		(vla-load (vla-get-Linetypes (vla-get-ActiveDocument (vlax-get-acad-object))) linetype "acadiso.lin")
	)
	(if	(null (tblsearch "layer" layer_name))
		(entmakex 
			(list 
				(vl-list* 0   "LAYER") 
				(vl-list* 100 "AcDbSymbolTableRecord") 
				(vl-list* 100 "AcDbLayerTableRecord") 
				(vl-list* 2 layer_name)
				(vl-list* 70 0)
				(if	(listp color)
					(vl-list* 420 
						(+
							(lsh (car  color) 16) ; R
							(lsh (cadr color)  8) ; G
							(caddr color)	      ; B
						) 
					) 
					(vl-list* 62 color)
				)
				(if	linetype
					(vl-list* 6 linetype)
					(vl-list* 6 "Continuous")
				)
				(if lineweight		 
					(vl-list* 370 (fix (* lineweight 100)))
					(vl-list* 370 -3); вес по умолчанию	
				)
				(if no_print
					(vl-list* 290 0) ; непечатаемый
					(vl-list* 290 1) ; печатаемый
				)
			)
		)

	)
)
;;;----------------------------------------
(vl-cmdf "_layer" "_make" "АР_Размеры" "_color" 150 "" "_lw" 0.15 "" "") ;_Создаем слой Размеры и задаем цвет 150 
(vl-cmdf "_layer" "_make" "АР_Размеры осевые" "_color" 26 "" "_lw" 0.15 "" "") ;_Создаем слой Размеры осевые и задаем цвет 26
(vl-cmdf "_layer" "_make" "АР_Штриховка" "_color" 176 "" "_lw" 0.09 "" "") ;_Создаем слой Штриховка и задаем цвет 176 
(vl-cmdf "_layer" "_make" "АР_Основ" "_color" 2 "" "_lw" 0.60 "" "") ;_Создаем слой АР_Осн и задаем цвет 2
(vl-cmdf "_layer" "_make" "АР_Армат" "_color" 1 "" "_lw" 0.15 "" "") ;_Создаем слой Армат и задаем цвет 1
(vl-cmdf "_layer" "_make" "АР_Окна_двери" "_color" 5 "" "_lw" 0.15 "" "") ;_Создаем слой Окна_двери и задаем цвет 5
(vl-cmdf "_layer" "_make" "АР_Перегородки" "_color" 73 "" "_lw" 0.15 "" "") ;_Создаем слой Перегородки и задаем цвет 73
(vl-cmdf "_layer" "_make" "АР_Стены" "_color" 115 "" "_lw" 0.35 "" "") ;_Создаем слой Стены и задаем цвет 115
(vl-cmdf "_layer" "_make" "АР_Земля" "_color" 155 "" "_lw" 0.90 "" "") ;_Создаем слой АР_Земля и задаем цвет 155
(vl-cmdf "_layer" "_make" "АР_Текст" "_color" 5 "" "_lw" 0.15 "" "")     ;_Создаем слой Текст и задаем цвет 5
(vl-cmdf "_layer" "_make" "АР_Штрихдветочки" "_color" 42 "" "_lt"  "ACAD_ISO12W100" "" "_lw" 0.15 "" "")     ;_Создаем слой штрихдветочки и задаем цвет 42 тип линии ACAD_ISO12W100 вес 0,15
(vl-cmdf "_layer" "_make" "АР_Пунктир" "_color" 5 "" "_lt"  "Штриховая" "" "_lw" 0.15 "" "")     ;_Создаем слой Пунктир и задаем цвет 6 тип линии штриховая вес 0,15
(vl-cmdf "_layer" "_make" "АР_Рамка" "_color" 151 "" "")     ;_Создаем слой Рамка и задаем цвет 151
(vl-cmdf "_layer" "_make" "АР_Непечат" "_color" 205 "" "_lw" 0.15 "" "_plot" "_n" "" "")   ;_Создаем слой Вспомогат и задаем цвет 205 непечатаемый
(vl-cmdf "_layer" "_make" "АР_Таблицы" "_color" 33 "" "")   ;_Создаем слой Таблицы и задаем цвет 33
(vl-cmdf "_layer" "_make" "АР_Сантехника" "_color" 6 "" "_lw" 0.15 "" "")   ;_Создаем слой Сантехника и задаем цвет 5
(vl-cmdf "_layer" "_make" "АР_Выноски" "_color" 5 "" "_lw" 0.15 "" "")   ;_Создаем слой Выноски и задаем цвет 6
(vl-cmdf "_layer" "_make" "АР_Оборуд" "_color" 3 "" "_lw" 0.40 "" "")   ;_Создаем слой Оборуд и задаем цвет 3
(create_layer "АР_Оси" '(255 1 1) "CENTER2" 0.15 nil)     ;_Создаем слой Оси и задаем цвет "255,1,1" тип линии штрихпунктирная вес 0,15(setvar "clayer" *OldLayer*) 
(setq *OldLayer* nil) 
(setq *OldLayer* (getvar "CLAYER"))
;;;;;;По аналогии добавить создание своего слоя 
;;; ... 
;;;;;; 
;;;;;;------------------------------------------------------------- 
(if *vlr-cmd*
  (progn
    (setq *vlr-cmd* nil)
    (vlr-remove-all :vlr-command-reactor)
    ) ;_ end of progn
  ) ;_ end of if
(if (not *vlr-cmd*)
  (setq	*vlr-cmd* (vlr-command-reactor "cmd"
		    '((:vlr-commandwillstart . cmd-start)
		      (:vlr-commandended . cmd-end)
		      (:vlr-commandcancelled . cmd-end)
		      (:vlr-commandfailed . cmd-end)))))
;;;;;;------------------------------------------------------------- 
(defun cmd-start (calling-reactor startcommandInfo / thecommandstart) 
   (setq thecommandstart (nth 0 startcommandInfo))
  (if (null *OldLayer*)(setq *OldLayer* (getvar "CLAYER")))
  (cond 
 ;;;_Реакция на начало команды DIM* (DIMALIGNED DIMLINEAR и все что начинается с DIM)    
    ((wcmatch thecommandstart "DIM*")  ;_Если выполняется команда DIM* 
     (setvar "clayer" "АР_Размеры")       ;_Слой размеры должен быть создан выше (vl-cmdf "_layer" ... 
    ) 
 ;;; Конец реакции на DIM*    
    ((wcmatch thecommandstart "*HATCH*") ;_Если выполняется команда *HATCH* 
     (setvar "clayer" "АР_Штриховка") 
    ) 
    ((wcmatch thecommandstart "*TEXT") ;_Если выполняется команда *TEXT (TEXT DTEXT) 
     (setvar "clayer" "АР_Текст") 
    )
    ((wcmatch thecommandstart "*TABLE") ;_Если выполняется команда *TABLE
     (setvar "clayer" "АР_Таблицы") 
    )
    ((wcmatch thecommandstart "*LEADER") ;_Если выполняется команда *QLEADER MLEADER
     (setvar "clayer" "АР_Выноски") 
    )
	   ((wcmatch thecommandstart "*XLINE") ;_Если выполняется команда XLINE
     (setvar "clayer" "АР_Непечат")
    )
	((wcmatch thecommandstart "*RAY") ;_Если выполняется команда_ray RAY -ЛУЧ-
     (setvar "clayer" "АР_Непечат")
    )
	((wcmatch thecommandstart "*ЛУЧ") ;_Если выполняется команда ЛУЧ
     (setvar "clayer" "АР_Непечат")
    )
    (t (setq *OldLayer* nil)) ;;_Если не наша команда, чистим список текущих слоев
;;;См http://forum.dwg.ru/showpost.php?p=318806&postcount=139
;;;и http://forum.dwg.ru/showpost.php?p=318806&postcount=143
    )
  (princ)) 
 ;;;------------------------------------------------------------- 
(defun cmd-end (calling-reactor cmd / cmd_name)
(setq cmd_name (strcase (car cmd)))
(if (or
      (wcmatch cmd_name "*HATCH*") ;_Если выполняется команда DIM*
      (wcmatch cmd_name "DIM*")    ;_Если выполняется команда *HATCH*
      (wcmatch cmd_name "*TEXT")   ;_Если выполняется команда *TEXT (TEXT DTEXT)
      (wcmatch cmd_name "*TABLE")   ;_Если выполняется команда ТАБЛИЦА
      (wcmatch cmd_name "*LEADER")   ;_Если выполняется команда *QLEADER или MLEADER
	  (wcmatch cmd_name "*XLINE") ;_Если выполняется команда XLINE
	  (wcmatch cmd_name "*RAY") ;_Если выполняется команда RAY
      )
  (progn
    (if *OldLayer* (setvar "clayer" *OldLayer*)) 
    (setq *OldLayer* nil)
    ))
 (princ))
;;;----------------------------------------
skkkk вне форума  
 
Непрочитано 07.04.2020, 21:33
#338
SergAM243

инженерю чуть
 
Регистрация: 14.07.2008
Севастополь
Сообщений: 40
<phrase 1=


Цитата:
Сообщение от skkkk Посмотреть сообщение
SergAM243, попробуйте так:
Спасибо! Попробовал.
Слой "АР_Оси" с цветом 255,1,1 в новом чистом файле создается, но если в файле уже есть слой "АР_Оси" с цветом 10, то он так 10-кой и остается.
После отработки лиспа добросовестно выводится "Команда: CMD-END", но текущим остается созданный "АР-Оборуд", а не стоявший перед применением лиспа.
И даже не последний созданый "АР-Оси".
Может легче программно просто менять имеющийся "АР-Оси" - 10 на "АР-Оси" - 255,1,1.
Т.е. создавать, как у меня и было, "АР-Оси" - 10 по аналогии с другими слоями, а потом отдельно искать "АР-Оси" и менять ему цвет?

Цитата:
Сообщение от doctorraz Посмотреть сообщение
в стиле печати монохром назначить этому индексированному цвету цвет пера который возжелал видеть нормоконтроллер или какой другой проверяющий
А вот за это простейшее и очевиднейшее решение моей задачи огромное и нижайшее СПАСИБО!
Ничуть не меньше такого же огромного и нижайшего СПАСИБО для skkkk, помогающего решить эту задачу программно!

LayerDirector обязательно посмотрю.

Для skkkk
В принципе моя проблемка решена. Но если есть желание и возможность решать и решить эту задачку на программном уровне,
то обязуюсь быть ответственным тестером до получения удовлетворяющих не только меня результатов.

Еще раз Большое спасибо всем откликнувшимся и помогавшим в решении проблеммы!

Последний раз редактировалось SergAM243, 07.04.2020 в 21:56.
SergAM243 вне форума  
 
Непрочитано 08.04.2020, 10:03
1 | #339
koMon


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


Цитата:
Сообщение от doctorraz Посмотреть сообщение
имха задача назначить при создании слоя ему цвет RGB нетривиальна
да как бы нет
Код:
[Выделить все]
 (defun add_layer (layer_name_string rgb_string / color_list layer_being_added dwg_layers_collection color_object)
	(setq color_list (read (strcat "(" rgb_string ")")))
	(if (vl-catch-all-error-p
			(setq layer_being_added (vl-catch-all-apply 'vla-item
														(list
															(setq dwg_layers_collection (vla-get-Layers (vla-get-ActiveDocument (vlax-get-acad-object))))
															layer_name_string
														)
									)
			)
		)
			(setq layer_being_added (vla-add dwg_layers_collection layer_name_string))
	)
	(setq color_object (vlax-create-object (strcat "AutoCAD.AcCmColor." (substr (getvar "ACADVER") 1 2))))
	(vla-put-colormethod (vla-get-truecolor layer_being_added) acColorMethodByRGB)
    (vla-setrgb color_object (car color_list) (cadr color_list) (caddr color_list))
	(vla-put-truecolor layer_being_added color_object)
	(princ)
)
koMon вне форума  
 
Непрочитано 08.04.2020, 11:44
#340
doctorraz

электрик
 
Регистрация: 19.02.2010
Волгоград
Сообщений: 2,293
Отправить сообщение для doctorraz с помощью Skype™


Offtop:
Цитата:
Сообщение от koMon Посмотреть сообщение
да как бы нет
по сравнению с назначить индексированный цвет...))))
как спутник в космос запускать
__________________
Мастерская СПДС
doctorraz вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Автоматический перенос размеров на слой размеры. Break макро

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

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