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

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Создание дополнительных параметров Visibility Set в динамических блоках.

Создание дополнительных параметров Visibility Set в динамических блоках.

Ответ
Поиск в этой теме
Непрочитано 13.09.2008, 13:35 5 |
Создание дополнительных параметров Visibility Set в динамических блоках.
Supermax
 
Руководитель фирмы
 
Москва
Регистрация: 28.03.2007
Сообщений: 1,831

В этой теме рассматривается вопрос программного "наращивания" возможностей динамических блоков.
Программистам:
Разбор словарей дин.блока
Получение параметра видимости и его разбор

Примеры блоков с несколькими параметами видимости (Visibility Set): "неправильные" и "правильные".
В посте #212 - пример связи Lookup-ов друг с другом.
Макрос по перемещению свойств в списке свойств блока меню Properties
02.02.2010 Откорректирована для работы в 2010 каде



Пользователям:
Готовые макросы:
Все функции по вставке и обработке дополнительных Visibility Set
Обновление 17.07.2009г. Исправлена ошибка в element-sel-current-insert и добавлено включение видимости всем элементам с откатом назад, после выбора нужных элементов
Обновление 06.10.2009. Исправил функцию eval_graf_output, из-за которой не работала visibility-up.
Обновление 02.02.2010. !!! Откорректирована в связи с появлением нового динамического элемента в 2010 каде
(properties_add_all_visibility) - установка видимости выбранных динамических свойств и ручек во всех представлениях всех Visibility Set-ов.
Добавлен вывод значения текущего Visibility Set-a в статусную строку и спрятаны не нужные глобальные переменные
(element-all-current-del) - удаление из текущего Visibility Set всех элементов оставляя свойства и представления.
(element-sel-current-del) - очищает Visibility Set от указанных элементов без необходимости выключать им видимость в других представлениях текущего Visibility Set-а.
(element-sel-current-insert) - внедрение в общий список текущего Visibility Set-a выбранных элементов.
(Visibility_add) - Добавление нового Visibility Set-a
(visibility-up) - Делает указанный пользователем Visibility Set текущим
(eddedd) - Включает ручки всем элементам текущего Visibility Set-a
(Visibility_clear) - Очищает указанный Visibility Set от всех элементов, параметров и представлений. Принадлежащие ему элементы становятся свободными
Инструкция по применению дополнительных Visibility Set

Функции управления видимостью объектов (вкл\выкл)
Вебмакрос по управлению видимостью объектов (только для тех, у кого Internet Explorer 7.0)
Функция по выключению видимости отдельных элементов блока из пространства модели
#66 и #67 - восстановление видимости отдельных элементов блока.
Excel->Lookup
Lookup->Excel
Lookup->Lookup

Самые последние версии, для работы в любом пространстве.
Программа по массовой установке и снятию видимости элементов в представлениях текущего Visibility Set-a Обновление 8.10.2008г. Устранена ошибка загрузки DCL панели.
Программа по устаноке на параметр Lookup-a сколь угодного количества активаторов
Пример использования связанных активаторов Lookup-a через один параметр Lookup-a. 3D-динамический блок-игрушка Гидроцилиндр телескопический 4-х секционный. Файл обновлен 8.10.2008г.

Все макросы для кнопок и иконки к ним

24.01.2009.
Исправлена ошибка в функции (properties_add_all_visibility)

Исходные тексты к функциям:
http://www.private.peterlink.ru/pole...9/tainypod.htm

Последний раз редактировалось Supermax, 02.02.2010 в 20:26.
Просмотров: 361232
 
Автор темы   Непрочитано 24.09.2008, 00:29
#41
Supermax

Руководитель фирмы
 
Регистрация: 28.03.2007
Москва
Сообщений: 1,831
Отправить сообщение для Supermax с помощью Skype™


А вот и правильно сделанный блок с 10-тью Visibility Set и не только. Открывается двойным щелчком. Аудит - 0 ошибок. Текущих Visibility Set редактируется редактором блока. Программкой, что я выложил, перемещаете нужный Visibility в самый верх списка и редактор его обработает.
Чтобы все свойства корректно работали, они должны быть включены везде, кроме того Visibility, где они управляют графикой. Принцип "И" если хоть в каком-нибудь текущем представлении это свойство выключено - оно не будет видно ни в списке свойств, ни в модели.
Программу написал отдельными функциями. Одна - вставляет новый Visibility, другая - перемещает в верх выбранный Visibility (делает его текущим), третья - удаляет из общего списка текущего Visibility выделенные пользователем элементы.
DCL - пролетает как фаера над Парижем. Потом объясню почему.

Короче - вот вам этот блок. (формат 2007 када)
Вложения
Тип файла: dwg
DWG 2004
2.dwg (277.9 Кб, 6128 просмотров)

Последний раз редактировалось Supermax, 24.09.2008 в 09:57.
Supermax вне форума  
 
Непрочитано 24.09.2008, 06:23
#42
Volodich

проектировщик-электрик
 
Регистрация: 20.12.2007
Челябинск
Сообщений: 474


Странно... У меня файл-то открывается, но почему-то ни одно действие с блоком я сделать не могу. Не то что видимостью управлять, даже простое растяжение или отзеркаливание не работает. А по видимостям, когда нажимаю на ручки, менюшки-то с вариантами выпадают, но при выборе любого варианта он не выбирается.
Попробовал по двойному щелчку. Вылезло сообщение: "Блок содержит объекты-заместители. Невозможно изменить блок в редакторе блоков."
По правой кнопке почему-то в редакторе блоков открылся. Действия видны все, параметры видимости тоже все. Но из объектов видны только первые кружочки. Так и должно быть?
Кстати, а где взять программку, про которую ты пишешь в предыдушем сообщении? (#41)
AutoCAD 2006 rus.

Последний раз редактировалось Volodich, 24.09.2008 в 06:58.
Volodich вне форума  
 
Непрочитано 24.09.2008, 07:39
#43
stas_org


 
Регистрация: 05.04.2007
Самара
Сообщений: 1,199


Очень круто я бы сказал, но:

- область применения (на мой взгляд) ограниченна. Непонимаю, зачем десять visibility, когда в один можно все представления засунуть, пусть он даже большой станет.
- надо научить тех кому надо, а это посложнее будет чем научить просто создавать ДБ.


На мой взгляд лучше попытаться добавить новые параметры и действия, например: при действии array можно было бы с каждым скопированным объектом работать.

Непонятно почему Autodesk не развивает это направление, мож коллективное письмо напишем)))).
stas_org вне форума  
 
Непрочитано 24.09.2008, 08:33
#44
Volodich

проектировщик-электрик
 
Регистрация: 20.12.2007
Челябинск
Сообщений: 474


Вот это да... ПЕРВЫЙ раз такое слышу, честно!
stas_org, видимо в Autodesk сидит кто-то такой как ты, который не понимает зачем десять параметров видимости вот это направление и не развивается.
А мы тут все страдаем и мучаемся всякими array'ями да прочей ерундой заменяем видимости.
stas_org, мой тебе совет, беги быстрее, пока камнями тут не закидали!
А по поводу сложности обучения... Я думаю, что тот кто научился делать ДБ разберется и с этим. Причем с радостью разберется!
Volodich вне форума  
 
Автор темы   Непрочитано 24.09.2008, 09:49
#45
Supermax

Руководитель фирмы
 
Регистрация: 28.03.2007
Москва
Сообщений: 1,831
Отправить сообщение для Supermax с помощью Skype™


Volodich, я вообще-то делал блок в 2007 английском каде. Как ты умудрился открыть его в 2006, да еще и русском? Там же другой формат файла!

У меня к сожалению накрылся 2006 кад, так что проверить на нем не могу. Даю вам файл в 2004 формате - проверяйте работоспособность.

По поводу целесообразности.
Подсчитаем, сколько надо описаний видимости для реализации подобного блока с одним Visibility Set.
Первая группа имеет 7 штук описаний видимости, вторая - 8, третья - 6, и так далее 2, 2, 5, 2, 2, 2, 2.
Это 7*8*6*2*2*5*2*2*2*2=107520 описаний видимости.
Вы просто посчитайте вслух до 1000 - охрипнете!
А тут 107,5 тысяч!
Дальнейшее,думаю, не требует аргументаций.

Даже по два описания видимости вкл\выкл у 10-ти элементов это 1024 описания видимости.

В редакторе блоков вы видете текущий Visibility Set и его элементы. Иногда можно увидеть элементы других Visibility, но сделать с ними ничего нельзя, а погасив им видимость в серой видимости их уже не увидеть.
Перемещайте моей программой нужный вам Visibility в самый верх списка и открывайте блок редактором.
Все свойства должны быть включены, кроме тех,которые вам надо выключить в данном состоянии описания видимости текущего Visibility Set-a.
Вложения
Тип файла: dwg
DWG 2004
3.dwg (81.0 Кб, 4348 просмотров)

Последний раз редактировалось Supermax, 24.09.2008 в 12:05.
Supermax вне форума  
 
Непрочитано 24.09.2008, 10:03
#46
Shoorup


 
Регистрация: 16.09.2006
Минск
Сообщений: 1,587
<phrase 1= Отправить сообщение для Shoorup с помощью Skype™


stas_org, ооооойййй если ты не понимаешь зачем 10 параметров видимости ты вообще не встречался с трудностями Динамических блоков.
Supermax, снимаю шляпу! Это лучший динамический блок который я пока видел!
__________________
Поезд который устал от ржавого здравомыслия рельсов...
Shoorup вне форума  
 
Автор темы   Непрочитано 24.09.2008, 11:32
#47
Supermax

Руководитель фирмы
 
Регистрация: 28.03.2007
Москва
Сообщений: 1,831
Отправить сообщение для Supermax с помощью Skype™


Программа по перемещению свойств в списке Properties (свойства) я думаю, что уже есть у всех?

Так вот, что можно делать, а что нельзя в данном блоке.

Если вас удовлетворяет количество 10 Visibility Set, то можете использовать данный блок как болванку для создания своих блоков с 10-тью или менее Visibility.

В текущем Visibility Set можно:

1 - включать и выключать ручки любым свойствам, перемещать их, менять свойства (имя и пр.) (включая и сами Visibility Set-ы).
2 - добавлять и удалать графические и не графические элементы (они будут видны только в данном Visibility).
3 - Устанавливать на эти элементы динамические параметры (после установки поочередно пройти по всем Visibility Set-ам, делая каждый из них текущим, и включить видимость установленному параметру).
4 - Удалять чужие параметры (после удаления пройти по всем Visibility Set-ам и открыв каждый редактором пересохранить блок. В противном случае не будет видна графика этих Visibility).
5 - добавлять новые описания видмости (если двойным кликом кликнуть по любому параметру Visibility Set, то все равно откроется редактирование описаний текущего Visibility).
6 - используя либо мой вебмакрос по управлению видимостью, либо макрос Kpblc-a включать и выключать видимость всем графическим элементам блока (включая и те элементы, которые принадлежат другим Visibility Set-ам). Это нужно для правильного сопряжения элементов графики в блоке.

В редакторе блоков, не выходя из него можно:
- Делать текущим любой Visibility Set (но только с помощью макроса)
- Вставлять новый Visibility Set (но только с помощью макроса)
- Удалять из общего списка и списков на включение выбранные элементы (но только с помощью макроса)
- Вставлять в общий список текущего Visibility Set элементы выбранные пользователем (после включения видимости у всех элементов блока и только с помощью макроса).
- Автоматически включать в списки на включение дин. параметров новые дин. параметры во все Visibility Set-ы (но только с помощью макроса).
- Автоматически удалять из всех Visibility Set-ов, из списков на включение дин. параметров, параметры предназначенные на удаление (но только с помощью макроса).
- Включать ручки элементам общего списка и свойствам текущего Visibility Set (но только с помощью макроса).

Остались нерешенными проблемы:
- Как временно запретить Автокаду делать автоматическое сохранение файла?. Постоянно работу макроса прерывает эта гадость, а выключать ее мне нельзя. Надо в начале выполнения функции запрещать автоматическое сохранение, а в конце восстанавливать.
- DCL пролетает как фанера над Парижем. В пространсве редактора блоков он работает, но макрос (лисп) останавливает работу самого редактора и пока из макроса не вывалишся не происходит обновление состояния самого редактора. Ручки элментам включать можно, переходить из одного текущего состояния в другое, а то что видишь в редакторе не меняется (только элементы подсвечиваются). Находишся уже в другом текущем Visibility Set, в набор включаются уже его элементы, а видим то, что было когда макрос включили.
Надо делать программу, либо вебмакросом (он интерактивен), либо VBA скрещивать с лиспом (тоже интерактивен), либо панелями инструментов ограничиться. Кроме установки кнопок я больше ничего делать с ними не умею (пока).
- Кто и за какие выгоды все это будет делать?

Тот, кто мне поможет - получит все секреты этого дела.
Supermax вне форума  
 
Непрочитано 24.09.2008, 11:56
#48
Vildar

AutoCAD
 
Регистрация: 26.07.2007
Москва
Сообщений: 1,064


Покруче кубиба-рубика будет
Vildar вне форума  
 
Автор темы   Непрочитано 24.09.2008, 12:01
#49
Supermax

Руководитель фирмы
 
Регистрация: 28.03.2007
Москва
Сообщений: 1,831
Отправить сообщение для Supermax с помощью Skype™


Еще, забыл одно очень важное.
Как известно, включать и выключать видимость Visibility Set нельзя (за исключением случая, когда блок содержит не корректный Visibility Set).
Так вот, выключите всем Visibility Set-ам опцию Show Properties (сделайте No) и создайте дя каждого Visibility Set свой Lookup, в котором перечислите имена представлений данного Visibility Set и сопоставьте эти имена самим представлениям, вставив один единственный столбец с данным Visibility. Вот Lookup вы можете включать и выключать где угодно!
Таким образом в свойсвах блока можно управлять наличием доступа к данным Visibility Set.
Supermax вне форума  
 
Непрочитано 24.09.2008, 12:11
#50
Makswell

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


Цитата:
Сообщение от Supermax Посмотреть сообщение
Как временно запретить Автокаду делать автоматическое сохранение файла?. Постоянно работу макроса прерывает эта гадость, а выключать ее мне нельзя. Надо в начале выполнения функции запрещать автоматическое сохранение, а в конце восстанавливать.
Код:
[Выделить все]
(setq Old_SAVETIME (getvar "SAVETIME"))
(setvar "SAVETIME" 0)
;;;нужный код
(setvar "SAVETIME" Old_SAVETIME)
Такое не покатит?
Makswell вне форума  
 
Автор темы   Непрочитано 24.09.2008, 12:23
#51
Supermax

Руководитель фирмы
 
Регистрация: 28.03.2007
Москва
Сообщений: 1,831
Отправить сообщение для Supermax с помощью Skype™


Ты хочешь сказать, что если сделать время автосахранения равное 0, то это эквивалентно отключению автохранения?
Надо проверить, может и покатит. Спасибо.
Supermax вне форума  
 
Непрочитано 24.09.2008, 12:23
#52
SetQ

конструктор
 
Регистрация: 21.07.2007
Петрозаводск
Сообщений: 1,969


формально ещё такое решение: поставить SAVETIME стопицотминут
SetQ вне форума  
 
Автор темы   Непрочитано 24.09.2008, 12:51
#53
Supermax

Руководитель фирмы
 
Регистрация: 28.03.2007
Москва
Сообщений: 1,831
Отправить сообщение для Supermax с помощью Skype™


Второе покатит точно, правда не известно обнулился ли отсчет для последнего состояния? И ежу понятно, что мне и 10 минут достаточно, лишь бы отсчет можно было обнулять. Та гадость, что ведает этой бедой, следуя логике программиста, считывает из этой переменной значение и запускает таймер, когда тот отсчитал положенное - выполняет действие и по новой считывает значение из переменной. Мы можем до посинения ждать результата, но пока не закончится цикл - новые данные не будут сьедены. Надо обнулять отсчет, либо вовсе его останавливать.
Supermax вне форума  
 
Автор темы   Непрочитано 24.09.2008, 12:58
#54
Supermax

Руководитель фирмы
 
Регистрация: 28.03.2007
Москва
Сообщений: 1,831
Отправить сообщение для Supermax с помощью Skype™


Проверил. Так оно и есть. Установил (setvar "SAVETIME" 1) (было 10) и ждал 7 минут пока стал действовать новый закон.
К 0 это тоже относится.
Supermax вне форума  
 
Автор темы   Непрочитано 24.09.2008, 13:15
#55
Supermax

Руководитель фирмы
 
Регистрация: 28.03.2007
Москва
Сообщений: 1,831
Отправить сообщение для Supermax с помощью Skype™


Вы будете смеяться, но я вообще не могу найти где у меня в 2007-ом устанавливается автосохранение. Визуально картинку помню, а найти не могу.
Supermax вне форума  
 
Непрочитано 24.09.2008, 13:35
#56
Shoorup


 
Регистрация: 16.09.2006
Минск
Сообщений: 1,587
<phrase 1= Отправить сообщение для Shoorup с помощью Skype™


Supermax, чтото очень сложно... скинь макрос. Я не смог сделать текущим нужный Visibility Set
__________________
Поезд который устал от ржавого здравомыслия рельсов...
Shoorup вне форума  
 
Непрочитано 24.09.2008, 14:14
#57
Makswell

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


Так гласит справка:

Цитата:
SAVETIME
...
0 - Отключает функцию автосохранения
...
И вот кстати ещё (там же, в справке):
Цитата:
Автосохранение отключается, если открыт Редактор блоков
Кстати аналогичное можно сделать через ActiveX:
Код:
[Выделить все]
(vla-put-AutosaveInterval
  (vla-get-OpenSave (vla-get-Preferences (vlax-get-acad-object)))
  0
)
Makswell вне форума  
 
Автор темы   Непрочитано 24.09.2008, 14:30
1 | #58
Supermax

Руководитель фирмы
 
Регистрация: 28.03.2007
Москва
Сообщений: 1,831
Отправить сообщение для Supermax с помощью Skype™


Макрос по перемещению свойств в списке свойств блока меню Properties, для пространства модели или листа.

02.02.2010 отредактирован под 2010 кад.
Вложения
Тип файла: rar move-properties.rar (2.5 Кб, 888 просмотров)

Последний раз редактировалось Supermax, 02.02.2010 в 20:22.
Supermax вне форума  
 
Автор темы   Непрочитано 24.09.2008, 15:02
#59
Supermax

Руководитель фирмы
 
Регистрация: 28.03.2007
Москва
Сообщений: 1,831
Отправить сообщение для Supermax с помощью Skype™


Makswell, Отключать-то отключает, но не тогда, когда мне надо. Я ж говорю, идет отсчет 10-ти минутного интервала. Закончился интервал - сохранило и опять читает системную переменную (если вообще ее читает). Я изменил время на 1 с 10, а сохраняет по пржнему 10.

Про
Цитата:
Автосохранение отключается, если открыт Редактор блоков
Нагло лгут, не верь. Я чтобы написать все эти функции раз 1000 набирал разные выражения в ком. строке. И что ты думаешь? Набираю, набираю, БАЦ! все как корова языком слизала и читаю в эхе
Цитата:
Automatic save to C:\Documents and Settings\АНДРЕЙ\Local
Settings\Temp\4_1_1_6500.sv$ ...

Вот на счет ActiveX не пробовал, может и подействовать. Сейчас поэксперементирую.

При обработке данных словарей сохранять документ категорически нельзя, тогда, когда этого хочет программа.
Я сам, когда мне надо обновить кодировку элементов это делаю, и только тогда, когда это надо.

Есть еще одна проблема, тоже с сохранением. Многие действия автоматически вызывают запрос на сохранение данных блока. Не только выход из редактора. Вот их тоже не плохо было бы контролировать.
Supermax вне форума  
 
Непрочитано 24.09.2008, 15:44
#60
Shoorup


 
Регистрация: 16.09.2006
Минск
Сообщений: 1,587
<phrase 1= Отправить сообщение для Shoorup с помощью Skype™


Supermax, почему-то сразу не догадался или "не догнал" как использовать шаблон из поста 45. Здорово придумано!

...но чтото не получается. Запутался.
Вот создал блок. Пока пытаюсь свзяать 2 параметра видимости. Но не получается убрать цифры 12,22,32... когда включен Т в другом параметре видимости. И 13,23,33,43 когда Ф включен
Вложения
Тип файла: dwg
DWG 2004
dwgKO_05!!!.dwg (397.0 Кб, 4232 просмотров)
__________________
Поезд который устал от ржавого здравомыслия рельсов...

Последний раз редактировалось Shoorup, 24.09.2008 в 16:46.
Shoorup вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Создание дополнительных параметров Visibility Set в динамических блоках.

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как с помощью vba начертить линию vasyavip Программирование 77 09.10.2008 23:17
Femap и VBA Makson Программирование 11 05.08.2008 14:54
Создание списка чертежей из Sheet Set Manager krokh AutoCAD 2 20.06.2008 16:46