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

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Не создает слой

Не создает слой

Ответ
Поиск в этой теме
Непрочитано 08.02.2018, 11:47 #1
Не создает слой
jackUAROBEY
 
Проектировщик ВК
 
Анапа
Регистрация: 18.09.2014
Сообщений: 55

Добрый день
Странное дело
Когда в чертеже один слой "0" программа приведнная ниже не создает слой.
Но стоит добавить слой "Слой1" и программа начинает работать.

Код:
[Выделить все]
 (defun MakeLayer ( / ryz_name ryz_colour ryz_linetype ryz_lineweight ryz_willplot ryz_bitflag ryz_description) ;создание слоя "not prin"
    (setq ryz_name (strcat  (getvar "CLAYER") "_выноски" )
	  ryz_colour 90
	  ryz_linetype "CONTINUOUS"
	  ryz_lineweight 0.3  
	  ryz_willplot t
	  ryz_bitflag 0
	  ryz_description "")
    (or
      (tblsearch "LAYER" ryz_name)
      (entmake
	(append
	  (list
	    (cons 0 "LAYER")
	    (cons 100 "AcDbSymbolTableRecord")
	    (cons 100 "AcDbLayerTableRecord")
	    (cons 2  ryz_name)
	    (cons 70 ryz_bitflag)
	    (cons 290 (if ryz_willplot 1 0))
	    (cons 6
		  (if (and ryz_linetype (tblsearch "LTYPE" ryz_linetype))
		    ryz_linetype "CONTINUOUS"
		    )
		  )
	    (cons 62 (if (and ryz_colour (< 0 (abs ryz_colour) 256)) ryz_colour 1))
	    (cons 370
		  (fix
		    (* 100
		       (if (and ryz_lineweight (<= 0.0 ryz_lineweight 2.11)) ryz_lineweight 0.3)
		       )
		    )
		  )
	    )
	  (if ryz_description
	    (list
	      (list -3
		    (list "AcAecLayerStandard" (cons 1000 "") (cons 1000 ryz_description))
		    )
	      )
	    )
	  )
	)
      )
    )
Думаю что при создание "Слоя1" включается какая то переменная, а какая не пойму.
Просмотров: 1772
 
Непрочитано 08.02.2018, 11:54
#2
Кулик Алексей aka kpblc
Moderator

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


Код:
[Выделить все]
 (defun makelayer (/ ryz_name ryz_colour ryz_linetype ryz_lineweight ryz_willplot ryz_bitflag ryz_description) ;создание слоя "not prin"
  (setq ryz_name        (strcat (getvar "CLAYER") "_выноски")
        ryz_colour      90
        ryz_linetype    "CONTINUOUS"
        ryz_lineweight  0.3
        ryz_willplot    t
        ryz_bitflag     0
        ryz_description ""
        ) ;_ end of setq
  (or (tblsearch "LAYER" ryz_name)
      (entmake
        (append (list (cons 0 "LAYER")
                      (cons 100 "AcDbSymbolTableRecord")
                      (cons 100 "AcDbLayerTableRecord")
                      (cons 2 ryz_name)
                      (cons 70 ryz_bitflag)
                      (cons 290
                            (if ryz_willplot
                              1
                              0
                              ) ;_ end of if
                            ) ;_ end of cons
                      (cons 6
                            (if (and ryz_linetype (tblsearch "LTYPE" ryz_linetype))
                              ryz_linetype
                              "CONTINUOUS"
                              ) ;_ end of if
                            ) ;_ end of cons
                      (cons 62
                            (if (and ryz_colour (< 0 (abs ryz_colour) 256))
                              ryz_colour
                              1
                              ) ;_ end of if
                            ) ;_ end of cons
                      (cons 370
                            (fix (* 100
                                    (if (and ryz_lineweight (<= 0.0 ryz_lineweight 2.11))
                                      ryz_lineweight
                                      0.3
                                      ) ;_ end of if
                                    ) ;_ end of *
                                 ) ;_ end of fix
                            ) ;_ end of cons
                      ) ;_ end of list
                (if (and ryz_description (/= ryz_description ""))
                  (list (list -3 (list "AcAecLayerStandard" (cons 1000 "") (cons 1000 ryz_description))))
                  ) ;_ end of if
                ) ;_ end of append
        ) ;_ end of entmake
      ) ;_ end of or
  ) ;_ end of defun
Вообще-то я бы не стал устанавливать описание слоя через entmake / entmakex. Но дело хозяйское
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 08.02.2018, 12:01
#3
jackUAROBEY

Проектировщик ВК
 
Регистрация: 18.09.2014
Анапа
Сообщений: 55


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
Вообще-то я бы не стал устанавливать описание слоя через entmake / entmakex. Но дело хозяйское
да вроде нормально работало. А при одном слое не срабатывает. Можно конечно просто добавить команду создать слой а потом исполнить код но как то не айс
jackUAROBEY вне форума  
 
Непрочитано 08.02.2018, 12:16
#4
Setvar


 
Регистрация: 10.02.2007
Москва
Сообщений: 611


Цитата:
Сообщение от jackUAROBEY Посмотреть сообщение
но как то не айс
Ну и кушал бы мороженное, а не страдал ерундой. Это лупить из пушки по воробьям - не айс.
Setvar вне форума  
 
Автор темы   Непрочитано 08.02.2018, 13:38
#5
jackUAROBEY

Проектировщик ВК
 
Регистрация: 18.09.2014
Анапа
Сообщений: 55


Да, наверно исправлю на программный метод. Ну все таки в чем проблема почему при одном слое"0" не срабатывает. Стоит поставить размер, появится еще один слой Defpoints и сразу все работает.
jackUAROBEY вне форума  
 
Непрочитано 08.02.2018, 14:50
#6
Кулик Алексей aka kpblc
Moderator

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


Скорее всего, потому что прописывается какое-то количество словарей.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 11.02.2018, 00:15
2 | #7
koMon


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


Если добавить (regapp "AcAecLayerStandard"), то создаёт

Код:
[Выделить все]
 

(defun MakeLayer (/ ryz_name ryz_colour ryz_linetype ryz_lineweight ryz_willplot ryz_bitflag ryz_description )	;создание слоя "not prin"
  (setq	ryz_name	(strcat (getvar "CLAYER") "_выноски")
	ryz_colour	90
	ryz_linetype	"CONTINUOUS"
	ryz_lineweight	0.3
	ryz_willplot	t
	ryz_bitflag	0
	ryz_description	""
  )
  (regapp "AcAecLayerStandard") 
  (or
    (tblsearch "LAYER" ryz_name)
    (entmake
      (list
	(cons 0 "LAYER")
	(cons 100 "AcDbSymbolTableRecord")
	(cons 100 "AcDbLayerTableRecord")
	(cons 2 ryz_name)
	(cons 70 ryz_bitflag)
	(cons 290
	      (if ryz_willplot
		1
		0
	      )
	)
	(cons 6
	      (if (and ryz_linetype (tblsearch "LTYPE" ryz_linetype))
		ryz_linetype
		"CONTINUOUS"
	      )
	)
	(cons 62
	      (if (and ryz_colour (< 0 (abs ryz_colour) 256))
		ryz_colour
		1
	      )
	)
	(cons
	  370
	  (fix
	    (* 100
	       (if (and ryz_lineweight (<= 0.0 ryz_lineweight 2.11))
		 ryz_lineweight
		 0.3
	       )
	    )
	  )
	)
	(if ryz_description
	  (list	-3
		(list "AcAecLayerStandard"
		      (cons 1000 "")
		      (cons 1000 ryz_description)
		)
	  )
	)
      )
    )
  )
)

koMon вне форума  
 
Автор темы   Непрочитано 12.02.2018, 09:36
#8
jackUAROBEY

Проектировщик ВК
 
Регистрация: 18.09.2014
Анапа
Сообщений: 55


Цитата:
Сообщение от koMon Посмотреть сообщение
Если добавить (regapp "AcAecLayerStandard"), то создаёт
Спасибо помогло.
jackUAROBEY вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Не создает слой

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Мои макрокоманды zenon Программирование 998 11.03.2024 20:21
Как в AutoCAD программно заморозить слой на видовом экране? Bichuch Программирование 8 13.04.2015 17:58
перенос всех линий слоя в блоках в другой слой Positron Программирование 6 10.02.2012 15:59
Баг. Буква "б" в названии слоя создает новый слой wetr Баги и пожелания в Autodesk 30 25.12.2011 10:08
Не печатается выбранный нижний слой полностью maslina AutoCAD 11 26.04.2006 15:10