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

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

Хитрый блок

Ответ
Поиск в этой теме
Непрочитано 09.12.2004, 14:17 #1
Хитрый блок
Vova
 
Engineer
 
New-York
Регистрация: 05.09.2003
Сообщений: 10,288

Обыкновенно для ускорения черчения применяются либо специальные самодельные инструменты (лиспы-макросы) либо особые приемы работы (не всем известные возможности автокада вроде Alias или опции выбора Fence). Но есть еще один путь. Например, создать хитрый блок. Ранее мне удалось создать блок, который автоматически разрывает линию под собой. Этот блок описан в книге AutoCAD Язык макрокоманд и создание кнопок. (там, кроме собственно разрыва линии, происходит действие, похожее на съем блоков с Design Center, советую ознакомиться).
Теперь я поставил и, кажется, решил такую задачу: блок не разрывает линию, но закрывает ее своим телом.Больше того, под блоком линия может превратиться, например, в пунктирную, оставаясь при этом сплошной. Такие блоки в разы ускоряют черчение, например, технологических схем, где на линию нанизаны разные блоки. Я отрабатывал эту идею на элекрической схеме 60-этажного здания. Десятки вертикальных линий, а на них Тэги (ярлыки)-блоки с именем этой линии. Десятки горизонтальных линий - разводка по этажам, также с тэгами. Всего около 500 тэгов. Многие линии в процессе разработки схемы надо перемещать, чтобы внедрить вновь появляющиеся связи или более удачно скомпоновать чертеж. Обычно под тэгом линии разрывались. При перемещении тэгов линии разрывались на новом месте и сращивались на старом. Любая хотелка шефа превращалась в непростую работу. Теперь все значительно упростилось. Линии не состоят теперь из кусочков. Тэги перемещаются, скрывая под собой линии на новом месте и открывая их на старом.
Прошу откликнуться, насколько актуальна эта проблема. Есть ли у кого готовое решение и кто согласен поучаствовать в эксперименте, который я задам? Потому что блок не простой, при неправильной технологии он капризничает, требует особого к себе отношения. Потребуется строго соблюдать порядок работы и отчитываться о проделанном.
Просмотров: 94276
 
Непрочитано 09.12.2004, 14:20
#2
Mikhail

инженер-технолог (ГИП)
 
Регистрация: 11.09.2003
Санкт-Петербург
Сообщений: 1,116


Очень интересно, особенно если есть возможность такое делать допустим с перекрывающимися блоками, чтобы одно было пункирным а другое типа сверху. Так что если чем могу помочь, то я к вашим услугам.
__________________
Большая беда науки в том, что при восхитительной теории можно получить отвратительные результаты.
Mikhail вне форума  
 
Непрочитано 09.12.2004, 15:11
#3
Grinzaid

Архитектор
 
Регистрация: 14.10.2003
Израиль
Сообщений: 365
<phrase 1=


Было бы здорово вставлять окошки на арх. планах. Можно попорбовать :wink:
__________________
С уважением,
Влад Гринзайд.
Grinzaid вне форума  
 
Непрочитано 09.12.2004, 15:30
#4
{Smirnoff}

Инженер по системам безопасности
 
Регистрация: 23.11.2003
Рига
Сообщений: 1,099


Крайне любопытно... Хочу принять участие.
{Smirnoff} вне форума  
 
Непрочитано 09.12.2004, 15:41
#5
AY


 
Сообщений: n/a


Припоминаю, что было решение подобной задачи с ипользованием в блоках сполшной (возможно участками) заливки и печатью чертежа через цветозависимый стиль в котором характеристика Screening для цвета заливки равнялась 0. Перед распечаткой блоки выводились на передний план командой draworder. Однако утверждалось, что порядок следования примитивов в блоке может вероломно изменяться вызывая определенные трудности.
 
 
Непрочитано 09.12.2004, 15:54
#6
Геннадий aka PG

Машиностроение, Проектирование
 
Регистрация: 15.09.2003
Москва
Сообщений: 1,113
<phrase 1=


Интересен и мне это "хитрый блок"
Согласен поучаствовать по мере сил.
__________________
С уважением,
Геннадий aka PG
Геннадий aka PG вне форума  
 
Непрочитано 09.12.2004, 16:04
#7
niko


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


Для этих целей пользуюсь пустым растром.
Удобно. Линии под растром не видны.
Надписи, обозначения пишу в рамке растра.
Для однотипных создаю блоки из растра и надписи.
niko вне форума  
 
Непрочитано 09.12.2004, 16:50
#8
kos

LISP-программист
 
Регистрация: 25.08.2003
Тутэйшы
Сообщений: 238


А есть еще такая штука - wipeout...
__________________
Там все есть для счастья - меня там только нет.
Так это значит, что я там - буду!
kos вне форума  
 
Непрочитано 09.12.2004, 17:15
#9
Startrek

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


AH TRANSLIT NE SRABOTAL, POPROBUJU ESHHE RAZOK
Startrek вне форума  
 
Непрочитано 09.12.2004, 17:18
#10
Startrek

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


Поглядите на моей страничке там под номером 52. Contour Labeling програмка которая прикрывает контурную линию "хитрым блоком" в котором сочетание аттрибутов и wipeout. Програмка конечно берет значение Z для контура и подставляет его в атрибуту. И в ocновном "хитрый блок" по ппринципу который vova/kos описали.
http://home.pacifier.com/~nemi
Startrek вне форума  
 
Непрочитано 10.12.2004, 01:01
#11
Perezz!!
Moderator

архитектор
 
Регистрация: 21.08.2003
Москва
Сообщений: 3,587


Vova ->
ДАВАЙ! [sm3233]
Perezz!! вне форума  
 
Автор темы   Непрочитано 10.12.2004, 04:49
1 | #12
Vova

Engineer
 
Регистрация: 05.09.2003
New-York
Сообщений: 10,288


Ну конечно, наши"продвинутые" догадались правильно. В блок должен входить Wipeout. Но этот объект в сочетании со случайным положением Draworder (порядка в котором объекты лежат друг на друге) может или залечь на дно, и не сработать, или всплыть на поверхность и все закрыть. Так что дело в технологии создания блока и правильной работе, когда блоки в чертеже. Прога от Startrek это почти то, что нам надо. Советую иметь ее в своей коллекции. Она внедряет текст (атрибут) в линию, не разрывая ее. По предлагаемой ниже технологии у меня все работает нормально.
1. Создать специальный слой, условное имя SB (от Shy block-Хитрый блок). Задать ему редкий цвет, пусть №21.
2. Нарисовать в этом слое все детали будущего блока, включая атрибуты, если надо. Придать элементам нужные цвета. (цвета не будут впоследствии менятся, так как наши блоки всегда будут расположены в слое SB). Таково ПОКА условие. Можно ли его изменить, покажет эксперимент.
ВНИМАНИЕ!
Наружный конрур блока не должен содержать криволинейных элементов. При необходимисти заменяйте их на короткие но максимально длинные отрезки.
3. Создайте Wipeout (одноименная команда в 2004. В 2002 в Express)
используя наружный контур блока. На вопрос, убирать ли полилинию ответьте NO. Все ранее нарисованные детали блока закроются.
4. Командой CDORDER (express) опустите цвет № 21 вниз, при этом включите опцию Handles.
5. Теперь детали блока проявятся. Создайте из всего этого блок.
6. Работайте с блоком
при работе могут быть 2 варианта. А) Сначала сделана линия, на нее опужен блок. Б) Наоборот. Тогда командой Draworder (RD) опустите линию вниз. Если вы работаете с этой линией, например, удлиняете, она выйдет наверх. Сделайте Regen (RE) и (если было Draworder) все встанет на место. Если зайти в пространство бумаги и там открыть Viewport и в нем сделать Regen, и затем, закрыв экран , засейвать, то, как я заметил, несмотря даже на неправильное положение в модели, на принт должно выйти все правильно. Первое задание-проверить, всегда ли так происходит.
После того, как мы обобщим наш коллективный опыт, сделаем кнопку, которая всегда будет поднимать все, что лежит в слое SB наверх.
Сделайте пока всего один пробный блок на 1 чертеж и поиграйтесь с ним. Первое время я балдел от результата.
Niko, попробуй все это повторить, используя вместо Wipeout -пустой растр.
Ну и все плохое, что заметили, сюда, в эту ветку. И хорошее тоже.
Vova вне форума  
 
Непрочитано 10.12.2004, 09:44
#13
kos

LISP-программист
 
Регистрация: 25.08.2003
Тутэйшы
Сообщений: 238


Цитата:
Сообщение от Vova
...Niko, попробуй все это повторить, используя вместо Wipeout -пустой растр...
Изучене свойств и методов wipeout'а показало, что он практически и есть "пустой растр". Хотя ObjectName отличаются. Найденные отличия в свойствах (первая строка в паре - wipeout, вторая - растр):
Код:
[Выделить все]
;   ImageFile = AutoCAD.Application: Null object ID
;   ImageFile = "C:\\Documents and Settings\\Kos\\raster.jpg"

;   Name = AutoCAD.Application: Key not found
;   Name = "raster"

;   ObjectName (RO) = "AcDbWipeout"
;   ObjectName (RO) = "AcDbRasterImage"
Список поддерживаемых методов - идентичен.

Поэтому логично предположить, что wipeout и пустой растр будут вести себя одинаково.
Я так думаю! [sm2001] (с) Мимино.
__________________
Там все есть для счастья - меня там только нет.
Так это значит, что я там - буду!
kos вне форума  
 
Непрочитано 10.12.2004, 10:00
#14
Геннадий aka PG

Машиностроение, Проектирование
 
Регистрация: 15.09.2003
Москва
Сообщений: 1,113
<phrase 1=


Сделал все по инструкции.
Все получилось, отклонений и сбоев не было (АКАД 2005)

Факультативно разбил блок, видоизменил, собрал, все осталось также как и должно с учетом видоизмененений блока.
При повторной вставке блока, последний всатвленный блок также скрывает все под собой.
__________________
С уважением,
Геннадий aka PG
Геннадий aka PG вне форума  
 
Непрочитано 10.12.2004, 12:30
#15
Mikhail

инженер-технолог (ГИП)
 
Регистрация: 11.09.2003
Санкт-Петербург
Сообщений: 1,116


Все в общем получилось... теперь частности:
-очень часто при работе с этим блоком вылетал КАД (плохая версия одна из причин, но тут он просто вылетал с завидной регулярностью);
-при попытке сделать цвет примитива ByBlock примитив скрывался за контуром, при переопределении цвета на другой- примитив виден, потом перевожу в цвет ByBlock и если не выхывать cdorder, то он виден и работает так как надо... Странно.
- можно ли как то сделать, чтобы не видно было контура блока? Просто я попробовал использовать для арматуры и контур как то мешает... Я конечно понимаю, что можно выключить печать данного цвета, но это не очень хороший вариант.
А так очень хорошо... кстати, а как с пожиранием ресурсов этой вещью? Будет время проведу эксперимент из сотни одинаковых блоков и сотни блоков разных видов(порядка 10)... мне почему то кажется, что ресурсоемкая технология...
__________________
Большая беда науки в том, что при восхитительной теории можно получить отвратительные результаты.
Mikhail вне форума  
 
Непрочитано 10.12.2004, 12:44
#16
Геннадий aka PG

Машиностроение, Проектирование
 
Регистрация: 15.09.2003
Москва
Сообщений: 1,113
<phrase 1=


Цитата:
Сообщение от Mikhail
- можно ли как то сделать, чтобы не видно было контура блока? Просто я попробовал использовать для арматуры и контур как то мешает... Я конечно понимаю, что можно выключить печать данного цвета, но это не очень хороший вариант.
А так очень хорошо... кстати, а как с пожиранием ресурсов этой вещью? Будет время проведу эксперимент из сотни одинаковых блоков и сотни блоков разных видов(порядка 10)... мне почему то кажется, что ресурсоемкая технология...
Я тут взял существующий блок и оббежал его по контуру полилинией, причем таких областей было 2, потом все включил в блок, как предписывалось. Тк контурная полилиния лежит под линиями блока, то ее не видно и она не мешается.
По-размеру файла. Вставлено 2 простеньких блока и еще чуток нарисовано размер 66Кб. Беру квадрат и штрихую, запоминаюсь, размер- 45Кб. Вставляю еще (третий) блок, р-р 66Кб, Еще раз рисую квадрат и штрихую его - р-р 50Кб
В чем дело, сам не знаю.
__________________
С уважением,
Геннадий aka PG
Геннадий aka PG вне форума  
 
Непрочитано 10.12.2004, 13:14
#17
Mikhail

инженер-технолог (ГИП)
 
Регистрация: 11.09.2003
Санкт-Петербург
Сообщений: 1,116


Цитата:
Сообщение от Геннадий aka PG
Я тут взял существующий блок и оббежал его по контуру полилинией, причем таких областей было 2, потом все включил в блок, как предписывалось. Тк контурная полилиния лежит под линиями блока, то ее не видно и она не мешается.
это можно... а вот напрмер если текст без рамки хочется вставить? Текст то полилинией не обведешь...
__________________
Большая беда науки в том, что при восхитительной теории можно получить отвратительные результаты.
Mikhail вне форума  
 
Непрочитано 10.12.2004, 13:28
#18
Геннадий aka PG

Машиностроение, Проектирование
 
Регистрация: 15.09.2003
Москва
Сообщений: 1,113
<phrase 1=


Тогда остается сделать границу непечатаемую и цвет подогнать под фон., чтоб глаза не мозолил
А текст в рамке (да еще если фамилия)...... могут побить
__________________
С уважением,
Геннадий aka PG
Геннадий aka PG вне форума  
 
Непрочитано 10.12.2004, 13:33
#19
Mikhail

инженер-технолог (ГИП)
 
Регистрация: 11.09.2003
Санкт-Петербург
Сообщений: 1,116


Цитата:
Сообщение от Mikhail
это можно... а вот напрмер если текст без рамки хочется вставить? Текст то полилинией не обведешь...
Это можно сделать если в wipeoute выключить границы у Startrek`а в лиспе это... не посмотрел сначала
wipeout;f;off; тогда граница не показывается...
а вот по поводу растянуть границу под длину текста... интересная вещь была бы)
__________________
Большая беда науки в том, что при восхитительной теории можно получить отвратительные результаты.
Mikhail вне форума  
 
Автор темы   Непрочитано 10.12.2004, 13:51
#20
Vova

Engineer
 
Регистрация: 05.09.2003
New-York
Сообщений: 10,288


Насчет рамки. Как вычислил Mikhail надо рамку Off, так у Startrek. Но почему я об этом не сказал сразу? Потому что есть команда Tframes, которая показывает рамку для, например, текста, если ему сделать Mask. То же для имеджей. Так же рамка вылезет и у Startrek. А у нас рамка совпадает с контуром блока и ничего не испортится, если включить/выключить Tframes.
Ухожу скоро на работу, смогу читать или отвечать, но коротко. Рабочее, знаете-ли, время. Так что вы пробуйте...
Vova вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > AutoCAD > Динамические блоки > Хитрый блок

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

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