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

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

Научите работать со слоями

Ответ
Поиск в этой теме
Непрочитано 29.04.2008, 13:29
Научите работать со слоями
Mazai
 
Москва
Регистрация: 04.04.2008
Сообщений: 97

Здраствуйте. Пожалуйста, научите работать со слоями. Хочу на АвтоЛИСПЕ понять, как:
1. Создать слой
2. Скопировать слой
3. Сделать слой активным (что бы все элементы чертились в нём)
4. Узнать имя активного слоя.

Подозреваю, что это делаеться с помощью объектов ActivX, но как их правильно использовать и что возможно с их помощь - не знаю. Помогите примерами, а там дальше может сам соображать начну.
Просмотров: 11609
 
Непрочитано 24.05.2013, 08:57
#41
AndruxaZ


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


hwd , и в правду. Что-то я уже так привык задавать вопросы на форум..
AndruxaZ вне форума  
 
Непрочитано 24.05.2013, 10:57
#42
Олег (jr.)

специалист по околачиванию грушевых деревьев
 
Регистрация: 14.09.2004
Pietari, Venäjä
Сообщений: 813


Цитата:
Подскажите, а как сделать следующее внутри лиспа. Нужно отключить все слои,
исключая определённые, затем выполняется основная программа.
По окончании вернуть слои в исходное состояние.
Код:
[Выделить все]
(defun C:demo(/ *error*);<-- не забудь добавить сюда твои переменные
    (vl-load-com)
  (defun *error* (msg)
    ;(vl-bt)
    (command "_layerp")
    (and msg(princ msg)))

  ;; основная часть  ;;
  (command "_-layer" "_off" "007,008,009" ""); здесь твои слои через запятую

  ;; дальше твоя остальная программа
  
  ;; конец твоей остальной программы
  (*error* nil)
 (princ)
  )

Последний раз редактировалось Олег (jr.), 24.05.2013 в 15:11. Причина: ошибка в коде
Олег (jr.) вне форума  
 
Непрочитано 24.05.2013, 11:41
#43
Дима_

Продуман
 
Регистрация: 22.02.2007
Питер
Сообщений: 2,840


Олег (jr.) - красиво завернул.
Offtop: только не (*error nil*) а (*error* nil).
__________________
Когда в руках молоток все вокруг кажется гвоздями.
Дима_ вне форума  
 
Непрочитано 24.05.2013, 15:13
#44
Олег (jr.)

специалист по околачиванию грушевых деревьев
 
Регистрация: 14.09.2004
Pietari, Venäjä
Сообщений: 813


Цитата:
Сообщение от Дима_ Посмотреть сообщение
Offtop: только не (*error nil*) а (*error* nil).
Спасибо, шибко торопился однако
Олег (jr.) вне форума  
 
Непрочитано 16.12.2015, 17:02
#45
dip

проектировщик
 
Регистрация: 25.05.2007
г. Чебоксары
Сообщений: 206
<phrase 1=


Добрый вечер!
Есть у меня файл с архитектурными планами:
У меня на чертеже есть слой "Двери арх". В этом слое есть примитивы: отрезки и текст.
Мне нужно во всем файле текст из слоя "Двери арх" разом перекинуть в слой "Марки дверей".
Простым выделением текста одного слоя и переводом его в другой слой не получается.
Каждый архитектурный план это отдельный блок. Приходится заходить в каждый блок, выделять текст и перекидывать в нужный мне слой, что долго.

Поэтому у меня возник вопрос:
Есть ли возможность родными средствами Автокада или программно перевести конкретные примитивы (это может быть текст или Мтекст или таблица или другой примитив) одного слоя в другой слой,
если даже они находятся на разных блоках.
dip вне форума  
 
Непрочитано 16.12.2015, 19:07
#46
VVA

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


Программно можно
Код:
[Выделить все]
(defun mysetLayer ( obj )
  ;;; LayFrom - имя слоя, которому должны принадлежать примитивы (слой должен существовать)
  ;;; LayTo - имя слоя, на который перемещать (слой должен существовать)
  ;;; - lst - список имен объектов для переноса, возвращаемых функцией vla-get-ObjectName
  ;;;Пример (vla-get-ObjectName(vlax-ename->vla-object(car(entsel))))
   (setq LayFrom "Двери арх"
        LayTo "Марки дверей"
        lst '("AcDbMText" "AcDbText")
         )
  (if (and (member (vla-get-ObjectName obj) lst)
           (eq (strcase(vla-get-Layer obj))(strcase LayFrom))
           )
    (vl-catch-all-apply 'vla-put-Layer (list obj LayTo))
    )
  )
(defun C:Test()
  (vl-load-com)
  (vlax-for item (vla-get-blocks (vla-get-activedocument (vlax-get-acad-object)))
    (vlax-map-Collection item 'mysetLayer)
    )
  (vla-Regen (vla-get-activedocument (vlax-get-acad-object)) acAllViewports)
  )
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 16.12.2015, 20:00
#47
dip

проектировщик
 
Регистрация: 25.05.2007
г. Чебоксары
Сообщений: 206
<phrase 1=


Цитата:
Сообщение от VVA Посмотреть сообщение
Программно можно
VVA, спасибо большое. Это то что нужно. Но это локальное решение задачи.
А если мыслить глобально: чтобы была возможность выбора:
1. Примитивов (текст, мтекст, таблиц и т.д) находящихся в этом файле (выбор из списка).
2. Исходного слоя находящейся в этом файле (выбор из списка).
3. Конечного слоя находящейся в этом файле (выбор из списка).
dip вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Научите работать со слоями

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Клавиша Del в автокаде перестает работать :(( Barbarian AutoCAD 6 27.06.2008 15:01
Какой учеб. центр в Киеве учит работать с продук. Autodesk Silavsale Разное 2 03.12.2007 19:01
Как можно работать с "прочими" свойствами рисунка? Pungarev AutoCAD 6 22.06.2007 10:47
Перестали работать лиспы в 2006 solo LISP 6 16.08.2006 12:19
Object reactor никак не хочет работать Startrek Программирование 18 14.08.2004 15:17