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

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

создание слоев ( Layer )

Ответ
Поиск в этой теме
Непрочитано 10.07.2008, 13:50 #1
создание слоев ( Layer )
gabrin
 
Инновации в проектировании
 
Россия
Регистрация: 13.02.2007
Сообщений: 106

Есть задачка над которой бъюсь не первый день.

(setq a(getstring "/nВведите название щита"))
(setq b(getint "/nВведите количество групп"))

Нужно создать "b" количество слоев по формату: N1ЩС1-1, где N-постоянный текст, 1ЩС1-"a", 1-порядковый номер слоя (1,2,3,4...b)
Просмотров: 4754
 
Непрочитано 10.07.2008, 13:55
#2
Кулик Алексей aka kpblc
Moderator

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


Код:
[Выделить все]
(defun test (/ a b count)
  (if (and (setq a (getstring "\nВведите название щита <Отмена> :"))
           (setq b (getint "\nВведите количество групп <Отмена> : "))
           ) ;_ end of and
    (repeat b
      (entmakex (list '(0 . "LAYER")
                      '(100 . "AcDbSymbolTableRecord")
                      '(100 . "AcDbLayerTableRecord")
                      (cons 2
                            (strcat "N"
                                    a
                                    (itoa (cond
                                            (count (setq count (1+ count)))
                                            (t (setq count 1))
                                            ) ;_ end of cond
                                          ) ;_ end of itoa
                                    ) ;_ end of strcat
                            ) ;_ end of cons
                      '(70 . 0)
                      '(62 . 7)
                      '(6 . "Continuous")
                      '(290 . 1)
                      '(370 . -3)
                      ) ;_ end of list
                ) ;_ end of entmakex
      ) ;_ end of repeat
    ) ;_ end of if
  (princ)
  ) ;_ end of defun
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 10.07.2008, 14:02
#3
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,990
<phrase 1= Отправить сообщение для VVA с помощью Skype™


Код:
[Выделить все]
(setq oldLay (getvar "CLAYER"))
(setq a (getstring "\nВведите название щита: "))
(initget 7)
(setq b (getint "\nВведите количество групп: "))
(setq i 0)
(repeat b
  (setq LayerName (strcat "N" a "-" (itoa (setq i (1+ i)))))
  (if (snvalid LayerName)
    (command "_-LAYER" "_M" LayerName "")
    (princ (strcat "\nСлой ") LayerName " не может быть создан")
    )
  )
(setvar "CLAYER" oldlay)
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 10.07.2008, 14:17
#4
Makswell

Инженер-строитель
 
Регистрация: 15.08.2007
Киров
Сообщений: 2,204


Вот ещё хорошая тема про работу со слоями из лиспа:
http://dwg.ru/f/showthread.php?t=20080
Makswell вне форума  
 
Автор темы   Непрочитано 10.07.2008, 16:36
#5
gabrin

Инновации в проектировании
 
Регистрация: 13.02.2007
Россия
Сообщений: 106
<phrase 1= Отправить сообщение для gabrin с помощью Skype™


2Кулик Алексей aka kpblc. Спасибо большое все работает. Последний вопрос а где меняются свойства слоя ( цвет, вес линии, вывод на печать ) ?
gabrin вне форума  
 
Непрочитано 10.07.2008, 17:03
#6
Кулик Алексей aka kpblc
Moderator

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


DXF:
62 - цвет слоя. Отрицательное значение - слой "выключен".
6 - тип линии слоя
370 - вес линии слоя
290 - выводимость на печать (кажется).
Полное описание есть в справке AutoCAD (DXF Reference)
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 28.02.2017, 10:55
#7
Lorens

Учусь
 
Регистрация: 19.04.2007
Санкт-Петербург
Сообщений: 624


Добрый день!

Подниму эту тему дабы не плодить новые.

Я всегда делал так (знаю, что не правильно, но так было удобнее). Вводил с командной строки -Layer, N, "Имя слоя". Если такого слоя не было, он создавался и устанавливался текущим, если слой уже был задан - он просто устанавливался текущим. Во все свои лиспы я так и забивал.

Сегодня у коллег увидел, что слой создается, но вот текущим не становиться. Думаю, что дело в какой-то переменной. НО где ее искать???
Lorens вне форума  
 
Непрочитано 28.02.2017, 15:28
#8
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,990
<phrase 1= Отправить сообщение для VVA с помощью Skype™


Lorens, Вместо N (New) используй опцию M (make)
Цитата:
-Layer, M, "Имя слоя".
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > создание слоев ( Layer )

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Для чего нужны фильтры слоев?Как ими пользоваться? Aysulu AutoCAD 43 17.04.2019 10:59
Я начинаю заниматься программированием LISP (help) mmax LISP 293 24.02.2009 11:18
Изменение состояния свойств слоев в разных чертежах ASLYS Программирование 14 01.06.2007 13:33
Создание слоев в autolisp Badulaque Прочее. Программное обеспечение 3 26.10.2005 10:05