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

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

Неудаляемые слои... и др.

Ответ
Поиск в этой теме
Непрочитано 13.12.2005, 20:11 #1
Неудаляемые слои... и др.
X-DeViL
 
Бизнес-шмизнес
 
Питер
Регистрация: 26.05.2004
Сообщений: 1,911

1. Как создать неудаляемые слои, не прибегая к варварским методам, типа "создания линий в слое" и т.п.
2. Как массово переименовать слои?... проблема в том что есть масса файлов с определенным набором слоев... так вот по определенному списку надо их переименовать... ну допустим соответствия будут заданы в файле с определенным синтаксисом...
Просмотров: 10602
 
Непрочитано 13.12.2005, 20:55
#2
vk

сисадмин
 
Регистрация: 26.08.2003
Самара
Сообщений: 1,022
<phrase 1=


1. Что значит "неудаляемые"? Слой "0" неудаляемый по определению, остальное так или иначе можно прибить.

2. Посмотри Layer Translate из тулбара CAD Standards (команда _.LayTrans)
vk вне форума  
 
Непрочитано 14.12.2005, 08:12
#3
Кулик Алексей aka kpblc
Moderator

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


Формат файла соответствий давай. Полностью задание озвучь, попробую что-нить наваять (ессно, лисп,- VB / VC / Delphi не требовать )
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 14.12.2005, 17:28
#4
Startrek

AutoCAD/AutoLISP
 
Регистрация: 27.08.2003
Seattle/USA
Сообщений: 1,133


Открой MTEXT окошко, и набери пару - тройку пустышек - по SPACE BAR-у постучи. нажми ОК.
Тепрь этот слой ну очень трудно удалить, конечно можно если сильно повозится.
Startrek вне форума  
 
Непрочитано 14.12.2005, 18:40
#5
Neznayka


 
Регистрация: 24.03.2005
Сообщений: 320


Цитата:
Сообщение от Startrek
Открой MTEXT окошко, и набери пару - тройку пустышек - по SPACE BAR-у постучи. нажми ОК.
Теперь этот слой ну очень трудно удалить, конечно можно если сильно повозится.
Ну не знаю, laydel экспрессовский запросто херачит
Neznayka вне форума  
 
Непрочитано 14.12.2005, 19:22
#6
asys

архитектор
 
Регистрация: 10.08.2005
Ростов-на-Дону
Сообщений: 5,342


Очень хороший неудаляемый слой - ASHADE
asys вне форума  
 
Непрочитано 15.12.2005, 01:15
#7
Startrek

AutoCAD/AutoLISP
 
Регистрация: 27.08.2003
Seattle/USA
Сообщений: 1,133


Уважземый Neznayka.
Так я и говорю что повозится надо, тем более что далеко не все пользуются EXPRESS TOOLS.....не все умеют, да и не все имеют.
А в принципе те kто понимают что делают, так или иначе справятся....
:shock: :shock: :shock: :shock:
Startrek вне форума  
 
Непрочитано 15.12.2005, 06:43
#8
v_alex


 
Регистрация: 24.10.2005
Новокузнецк
Сообщений: 1,124
<phrase 1=


переименуй слой 0... потом не удалишь...
v_alex вне форума  
 
Непрочитано 15.12.2005, 09:48
#9
asys

архитектор
 
Регистрация: 10.08.2005
Ростов-на-Дону
Сообщений: 5,342


Цитата:
Сообщение от v_alex
переименуй слой 0... потом не удалишь...
Эт как так? :shock: Низя, ведь
asys вне форума  
 
Непрочитано 15.12.2005, 10:03
#10
v_alex


 
Регистрация: 24.10.2005
Новокузнецк
Сообщений: 1,124
<phrase 1=


Цитата:
Сообщение от Asys
Цитата:
Сообщение от v_alex
переименуй слой 0... потом не удалишь...
Эт как так? :shock: Низя, ведь
пардон... лажанулся... мне казалось что переименовывал... может в 2000м...
v_alex вне форума  
 
Непрочитано 15.12.2005, 12:16
1 | #11
VVA

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


Както надо было обработать большое кол-во файлов. Делал с помощью bat+scr+lsp
Подправил для слоев
1.Скопировать все файлы в одну папку
2.Туда же все из zip'а
1.Подкорректировать путь к АКАДУ в main.bat
2.В layrren.txt задать соответствия
3.Запустить main.bat
4. В подпапке GOTOVO результат

** Исправлено **
dwg заменен на zip
Вложения
Тип файла: zip batch.ZIP (10.3 Кб, 403 просмотров)

Последний раз редактировалось VVA, 28.05.2016 в 12:41.
VVA вне форума  
 
Непрочитано 15.12.2005, 20:29
#12
bernata


 
Регистрация: 22.09.2005
здесь могла быть ваша реклама
Сообщений: 1,296


Обалденная вещь.
Я потрясен.... Спасибо огромное VVA !
Вот бы такие штуки научиться писать......
bernata вне форума  
 
Автор темы   Непрочитано 15.12.2005, 21:28
#13
X-DeViL

Бизнес-шмизнес
 
Регистрация: 26.05.2004
Питер
Сообщений: 1,911


VVA!!!!!

То что надо....
Спасибо большое....

А в каде я нашел команду Laytrance.
Переименовывает слои...

А вот как сделать так чтобы в шаблоне слои не удалялись? Как, например, слои которые Arhitectural desktop создает?
X-DeViL вне форума  
 
Непрочитано 15.12.2005, 21:51
#14
vk

сисадмин
 
Регистрация: 26.08.2003
Самара
Сообщений: 1,022
<phrase 1=


Цитата:
Сообщение от X-DeViL
А в каде я нашел команду Laytrance.
Переименовывает слои...
Долго искал... См. пост нумер два в этой странице
vk вне форума  
 
Автор темы   Непрочитано 15.12.2005, 22:12
#15
X-DeViL

Бизнес-шмизнес
 
Регистрация: 26.05.2004
Питер
Сообщений: 1,911


Звиняй... не внимательно прочитал...
X-DeViL вне форума  
 
Непрочитано 16.12.2005, 08:06
#16
Кулик Алексей aka kpblc
Moderator

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


> X-DeViL: А на фига пытаться оставить в живых слои от ADT, если оно все равно их создает по мере надобности?
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 20.12.2005, 16:26
#17
VVA

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


Пришла идея сделать слои неудаляемыми при помощи реакторов
В принципе получилось. Осталось подгрузить ф-ции действия. Это можно сделать через mnl, acad.lsp, acaddoc.lsp.
Код:
[Выделить все]
(defun C:KEEP_LAY ( / layer ID keep_list reac lay)
  (foreach lay '("DELME_PLIZ1" "DELME_PLIZ2")
  (setq layer (vla-add (vla-get-Layers (vla-get-ActiveDocument (vlax-get-acad-object))) lay))
  (setq ID (vla-get-ObjectID layer))
  ;;;Ведем словарь KEEP_LAYER '((ID_1 NAME_1) ... (ID_N NAME_N))
  ;;;где  ID_xxx - ID объекта, возвращаемого ф-цией vla-get-ObjectID
  ;;; NAME_xxx   - Имя слоя
  (if (null (assoc ID (setq keep_list (vlax-ldata-get "KEEP_LAYER" "DONT_ERASE")))) ;_Нет в списке вечных
    (progn
      (setq reac (VLR-Object-Reactor (list layer) "Удаление слоя" '((:vlr-erased . dellay))))
      (setq keep_list (append keep_list (list (list ID (vla-get-name layer)))))
      (princ (strcat "\nСлой " (vla-get-name layer) " защищен от удаления"))
      (vlax-ldata-put "KEEP_LAYER" "DONT_ERASE" keep_list)
;;;_2      (if (not (vlr-pers-p reac))(vlr-pers reac))
      )
    )
  )
  (princ)
)
(defun dellay (vlao reac args / name ID keep_list layer reac)
  (setq ID (vla-get-ObjectID vlao))
  (if (setq name (assoc ID (setq keep_list (vlax-ldata-get "KEEP_LAYER" "DONT_ERASE"))))  ;_в списке вечных
    (progn
      (setq name (cadr name))
      (setq keep_list (vl-remove (assoc ID keep_list) keep_list))
      (setq layer (vla-add (vla-get-Layers (vla-get-ActiveDocument (vlax-get-acad-object))) name))
      (setq ID (vla-get-ObjectID layer))
      (setq keep_list (append keep_list (list (list ID (vla-get-name layer)))))
      (setq reac (VLR-Object-Reactor (list layer) "Удаление слоя" '((:vlr-erased . dellay))))
      (princ (strcat "\nНельзя удалять слой " name))
      (vlax-ldata-put "KEEP_LAYER" "DONT_ERASE" keep_list)
;;;_2      (if (not (vlr-pers-p reac))(vlr-pers reac))
      )
    )
  )
Однако выяснилось, что если перевести реактор в постоянный режим (раскоментарить ;;;_2) до дело не доходит до рекции :vlr-erased
Acad говорит, что слой содержит объекты. Мне кажется, что это и есть ответ на вопрос X-DeViL
Цитата:
1. Как создать неудаляемые слои, не прибегая к варварским методам, типа "создания линий в слое" и т.п.
Создать постоянный реактор на слой, который удалить можно только программно.
VVA вне форума  
 
Непрочитано 20.12.2005, 18:10
#18
ki

Constructor
 
Регистрация: 28.09.2005
SPb
Сообщений: 689
<phrase 1= Отправить сообщение для ki с помощью Skype™


Привет. Можно сделать следующие действия:
0. сделать текущим нужный слой,
1. нарисовать пару линий,
2. сделать из них блок,
3. удалить блок.
Все, пока командой "purge" не удален блок из файла рисунка, слой не удалить. Немного варварски, но работает.
__________________
Для ухода за пожилым программистом требуется приятная женщина, говорящая на FОRTRАN, BАSIС и С++
ki вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > AutoCAD > Неудаляемые слои... и др.