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

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

Наследование свойства - как реализовать?

Ответ
Поиск в этой теме
Непрочитано 03.07.2006, 08:47 #1
Наследование свойства - как реализовать?
plaz
 
Проектирование обустройства нефтяных месторождений
 
Самара
Регистрация: 28.08.2003
Сообщений: 351

Привет всем! Как можно реализовать такую весчь: от одной линии которая лежит на определенном слое, командой LINE рисую другую. На текущий слой внимания не обращаю. Надо чтобы вторая линия оказалась на одном слое с первой.
Просмотров: 3071
 
Непрочитано 03.07.2006, 09:29
#2
_Andre_

механизатор
 
Регистрация: 28.12.2004
Самара
Сообщений: 314
<phrase 1=


Если нужно наследовать только слой и рисовать только отрезок то функция будет выгялдеть примерно так:

Код:
[Выделить все]
(defun ba-draw-by-layer
  (/ ENT LAYER OLD_CMDECHO OLD_LAYER *error*)
  (defun *error* (msg)
    (if old_layer
      (setvar "CLAYER" old_layer)
    ) ;_ end of if
    (if old_cmdecho
      (setvar "CMDECHO")
    ) ;_ end of if
  ) ;_ end of defun
  (setq old_cmdecho (getvar "CMDECHO")
        old_layer   (getvar "CLAYER")
  ) ;_ end of setq
  (if (setq ent (car (entsel "\nУкажите примитив для отрисовки такого же")))
    (progn (setq layer (cdr (assoc 8 (entget ent))))
           (setvar "CLAYER" layer)
           (command "_.line")
           (while (/= (logand (getvar "cmdactive") 31) 0) (command pause))
           (if old_layer
             (setvar "CLAYER" old_layer)
           ) ;_ end of if
           (if old_cmdecho
             (setvar "CMDECHO")
           ) ;_ end of if
    ) ;_ end of progn
  ) ;_ end of if
)
В функции нет проверок на то что указан в качестве эталонного именно отрезок а не любой другой примитив, но в любом случае слой будет взят из указанного, а рисоваться отрезок.
Зато есть обработка выхода по ESC.
_Andre_ вне форума  
 
Непрочитано 03.07.2006, 09:34
#3
Profan


 
Регистрация: 25.12.2005
Москва
Сообщений: 13,663


Это легко делается, только нужно ли вам дополнительные манипуляции с кнопками (или клавишами) и устройством указания?
IMHO, не плохо бы, все-таки, обращать внимание на текущий слой. К тому же, есть специальная кнопка: "Сделать слой объекта текущим".
Profan вне форума  
 
Непрочитано 03.07.2006, 09:51
#4
_Andre_

механизатор
 
Регистрация: 28.12.2004
Самара
Сообщений: 314
<phrase 1=


Подобное наследование свойств очень удобно при наследовании бОльшего количества последних.
Мой полный вариант такой функции (идею подсмотрел в книге "Сапр на базе Autocad") наследует слой, цвет, тип линии, распознает тип примитива, а так же некоторые специфичные параметры (например выравнивание текста для размеров) и рисует "такой же примитив". Проектировщикам очень нравиться, некоторые в буквальном смысле переставли использовать панель панели цвета слоя и тп, а также многие кнопки рисования примитивов.
_Andre_ вне форума  
 
Автор темы   Непрочитано 03.07.2006, 10:06
#5
plaz

Проектирование обустройства нефтяных месторождений
 
Регистрация: 28.08.2003
Самара
Сообщений: 351


2_Andre_ : как запущать то?

З.Ы. давай полный лисп в студию, заценим
plaz вне форума  
 
Непрочитано 03.07.2006, 10:09
#6
Profan


 
Регистрация: 25.12.2005
Москва
Сообщений: 13,663


Для _Andre_.
Так и на это есть кнопка "Копирование свойств" с настройками.
Profan вне форума  
 
Непрочитано 03.07.2006, 10:14
#7
_Andre_

механизатор
 
Регистрация: 28.12.2004
Самара
Сообщений: 314
<phrase 1=


для Plaz - код привести полностью проблематично так как много библиотечных функций.

Запускать - как вариант макрос на кнопку ^c^c(ba-draw-by-layer), а файл с текстом функции добавить в автозагрузку.

для Profan - а что это за кнопка? Стыдно наверное, но я такой не знаю =(
_Andre_ вне форума  
 
Непрочитано 03.07.2006, 10:40
#8
Profan


 
Регистрация: 25.12.2005
Москва
Сообщений: 13,663


Для _Andre_.
Да пресловутая кисточка. В английской версии это "Match Properties".
Profan вне форума  
 
Непрочитано 03.07.2006, 10:44
#9
_Andre_

механизатор
 
Регистрация: 28.12.2004
Самара
Сообщений: 314
<phrase 1=


для Profan - Спасибо, что я то ступил.
_Andre_ вне форума  
 
Непрочитано 04.07.2006, 00:48
#10
Лентяй

Project Engineer
 
Регистрация: 05.01.2005
Лос Анджелес
Сообщений: 1,151


(Ни кому конкретно не обращяясь, но так, чтоб все слышали)
А я тут реактор наваял, так он меняет вставленный блок в соответсвии со слоем линии. на которую его вставляют, и обрезает ее в нужных местах. А если к существующей линии или блоку пририсовывают новую, то она тоже автоматом садится на соотв. слой. Выложить, что ли?
Лентяй вне форума  
 
Непрочитано 04.07.2006, 06:56
#11
Profan


 
Регистрация: 25.12.2005
Москва
Сообщений: 13,663


Если кому-то надо, чтобы определенные отрезки рисовались на конкретном слое, то можно создать специальный инструмент на палитре. Тогда достаточно только будет нажать на соответствующую пиктограмму в палитре и нужный слой сам станет текущим, а после завершения отрисовки текущим станет предыдущий слой.
Profan вне форума  
 
Непрочитано 04.07.2006, 10:39
#12
Лентяй

Project Engineer
 
Регистрация: 05.01.2005
Лос Анджелес
Сообщений: 1,151


Цитата:
Сообщение от Profan
Если кому-то надо, чтобы определенные отрезки рисовались на конкретном слое, то можно создать специальный инструмент на палитре. Тогда достаточно только будет нажать на соответствующую пиктограмму в палитре и нужный слой сам станет текущим, а после завершения отрисовки текущим станет предыдущий слой.
Типичная профанация. А если у меня десяток разных систем трубопрврдов и все они - на разных слоях? А если завтра придет заказчик со своими стандартами, и они не совпадают с моиоим - мне что - снова палитру рихтовать? [sm2100] Нет - ответом может быть только реактор, реагирующий на систему слоев конкретного файла [sm2001]
Лентяй вне форума  
 
Непрочитано 04.07.2006, 10:55
#13
Krieger

инженер (КМ)
 
Регистрация: 30.10.2004
Красноярск
Сообщений: 3,773


Цитата:
Сообщение от Лентяй
(Ни кому конкретно не обращяясь, но так, чтоб все слышали)
А я тут реактор наваял, так он меняет вставленный блок в соответсвии со слоем линии. на которую его вставляют, и обрезает ее в нужных местах. А если к существующей линии или блоку пририсовывают новую, то она тоже автоматом садится на соотв. слой. Выложить, что ли?
Давай. Только вопрос: реактор так со всеми примитивами обходится? А если не надо переходить на этот слой - реактор будет мешаться. Надо бы тогда оговорить с какими блоками, с какими слоями, примитивами ему работать.
Krieger вне форума  
 
Непрочитано 04.07.2006, 11:58
#14
Profan


 
Регистрация: 25.12.2005
Москва
Сообщений: 13,663


Для Лентяй.
Ну, знаете, "а если бы он вез макароны?"
Я же не заставляю всех непременно всё сажать на палитры, я написал: "Если кому-то надо". Где тут слова о трубопроводах? А вот то, что вы называете профанацией использование палитры для создания новых инструментов, - это просто не серьезно для опытного пользователя.
Profan вне форума  
 
Непрочитано 05.07.2006, 05:32
#15
Лентяй

Project Engineer
 
Регистрация: 05.01.2005
Лос Анджелес
Сообщений: 1,151


Цитата:
Сообщение от Profan
Для Лентяй.
Ну, знаете, "а если бы он вез макароны?".
Во-первых, не "макароны", а "патроны". Не смейте искажать классику :!:
А во-вторых, мной описаная ситуация - каждодневная практика любой конструкторской фирсы США, где каждый заказчик может иметь свои стандарты АвтоКАДА, вклюсая свойства слоев.
Цитата:
Я же не заставляю всех непременно всё сажать на палитры, я написал: "Если кому-то надо". Где тут слова о трубопроводах?
Так вот, мне это надо каждый день, и ваш путь мне непожходит, потому как придется заводить отдельную палитру под каждого заказчика, коих в год бывает до двух десятков. А трубопроводы - просто типичный пример объектов, показаваемых на чертеже одинаковыми примитивам, различающимися только свойствами слоя. В узле обвязки какого-нить ферментера из сожет быть штку пятнадцать, я имею в виду трубопроводов различного назначения.
Цитата:
А вот то, что вы называете профанацией использование палитры для создания новых инструментов, - это просто не серьезно для опытного пользователя.
Прфанацией принято называть упрощенный подход к решению сложной проблемы. Упрощенный настолько, что игнрируется сам смысл проблемы.
Лентяй вне форума  
 
Непрочитано 05.07.2006, 06:15
#16
Profan


 
Регистрация: 25.12.2005
Москва
Сообщений: 13,663


Для Лентяй.
Ну, если вы смотрели тот фильм, то помните, что макароны были упомянуты как противовес патронам...
А по существу можно сказать вот что. У каждого из нас своя работа и свои сложности. Вы можете решить свои проблемы, другие не всегда. И я, конечно, давал совет не вам, для вас это ничтожно и мелко. Но тему создал plaz, он писал об отрезках (LINE), никаких дополнительных условий не было, кроме смены слоя, так чего же вы придираетесь? Вам показалось остроумным обыграть мой ник? Ну, и Бог с вами.
Profan вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > AutoCAD > Наследование свойства - как реализовать?

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

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