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

Вернуться   Форум 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.
Просмотров: 363111
 
Непрочитано 17.07.2009, 01:33
#421
kor99


 
Регистрация: 28.02.2007
Riga
Сообщений: 19


Цитата:
Если кажется - креститься надо.
Пробовал - не помогает
За то вставка
kor99 вне форума  
 
Автор темы   Непрочитано 17.07.2009, 15:34
#422
Supermax

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


Да, ты прав. Нашел накладочку. И еще больше эту функцию изменил. Теперь она сама включает видимость всем элементам и после выбора нужных тебе, откатывает видимость как было.

Внимание еще раз обновление Visibility-ADD2!
Supermax вне форума  
 
Непрочитано 17.07.2009, 17:14
#423
SLADE

проектировщик-новобранец
 
Регистрация: 14.09.2005
Minsk
Сообщений: 324


здорово
SLADE вне форума  
 
Непрочитано 18.07.2009, 16:43
#424
kor99


 
Регистрация: 28.02.2007
Riga
Сообщений: 19


я понял почему у меня не работало
название функции (visibility-ap) заменено на (visibility-up)

а так работает прекрасно
и эти новые изменения
спасибо
kor99 вне форума  
 
Непрочитано 22.07.2009, 09:17
#425
Composter

Отопление и вентиляция
 
Регистрация: 31.10.2008
Москва
Сообщений: 445


у меня на работе стоит 2007 офис, поэтому макрос Excel->Lookup не запустился,предлагаю поменять строку
Код:
[Выделить все]
  (setq g_oex (vlax-get-or-create-object "Excel.Application.11"))
на
Код:
[Выделить все]
  (setq g_oex (vlax-get-or-create-object "Excel.Application"))
после этого все заработало
Composter вне форума  
 
Непрочитано 23.07.2009, 17:25
#426
Juss_00

Инженер
 
Регистрация: 11.12.2007
Москва
Сообщений: 295


Supermax, спасибо за обновление. )
Чуть освобожусь поковыряюсь а заодно и с лукапами разберусь. )
__________________
Live as though tomorrow you will die,
Study as though you will live eternally.
Juss_00 вне форума  
 
Непрочитано 31.07.2009, 11:57
#427
Walkmax


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


Не пойму что такое, на некотрых блоках всё получается, а на некоторых:
Команда: (visibility_add) Укажите место расположения Visibility Set: ; ошибка:
неверный тип аргумента: lentityp nil
Walkmax вне форума  
 
Непрочитано 03.08.2009, 22:35
#428
Walkmax


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


Жаль вопрос пока без ответа.
Во вложении готовый комплект меню+кнопки+программы, может кому пригодятся.
Вложения
Тип файла: zip Visibility_Extra_Tools.zip (42.9 Кб, 320 просмотров)
Walkmax вне форума  
 
Непрочитано 25.09.2009, 17:11
#429
Vombat

HVAC (ОВК)
 
Регистрация: 08.10.2005
Ukraine, L'viv
Сообщений: 822


Цитата:
Сообщение от Supermax Посмотреть сообщение
tovdi, этот блок испорченный. Почему? - не разбирался пока, но как-нибудь разберусь. Возможно появится способ защиты блока от перестановок. Хотя зачем и кому это надо не представляю.
Уважаемый Supermax, Вы еще случайно не разобрались с программой по перемещению свойств в списке свойств блока меню Properties? К сожалению она не со всеми блоками срабатывает. Пробовал ее использовать в Auto Cad 2006, 2008, 2009, но к моему большому сожалению результат тот же. Посоветуйте пожалуйста, как заставить ее работать.
Спасибо.
Vombat вне форума  
 
Автор темы   Непрочитано 27.09.2009, 10:25
#430
Supermax

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


В Автокаде, и именно в блоках, попадаются такие ошибки, которые не определяются аудитом и восстановлением файлов. Я много раз ползал по таким испорченным блокам и пытался что-то предпринять, чтобы либо и в них все работало, либо чтобы ругалось и говорило, что блок поврежден, но бросил эту затею, поскольку слишком много разных повреждений в них бывает.
Еще в программе по перемещению свойств не до конца отполирован момент по перемещению одноименных свойств, отличающихся только количеством пробелов в конце наименования свойства. Все время пробуксовывает. Я пока циферки в конце ставлю, а когда перемещение выполнено, заменяю эти циферки на пробелы. Наверное надо что-то в консерватории подправить, но руки пока не доходят.
Во всяком случае, в таком виде, эти программы, как лакмусовая бумажка, позволяют выявить блок с ошибками. Все равно ведь придется блок исправлять, и мои проги этого уж точно сделать не смогут, так зачем зря мне пыхтеть?

Последний раз редактировалось Supermax, 27.09.2009 в 10:38.
Supermax вне форума  
 
Непрочитано 28.09.2009, 11:08
#431
Vombat

HVAC (ОВК)
 
Регистрация: 08.10.2005
Ukraine, L'viv
Сообщений: 822


Цитата:
Сообщение от Supermax Посмотреть сообщение
Я много раз ползал по таким испорченным блокам и пытался что-то предпринять, чтобы либо и в них все работало, либо чтобы ругалось и говорило, что блок поврежден, но бросил эту затею, поскольку слишком много разных повреждений в них бывает.
Спасибо за разъяснение.
Vombat вне форума  
 
Автор темы   Непрочитано 06.10.2009, 12:36
#432
Supermax

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


Не Господа! Я был не прав!!!

Блоки тут не причем!
Оказалось, что создавая набор в пространстве редактора блоков из всех элементов, включая и те, что черти-где, (setq Nabor_all (ssget "_A")) в набор попадают все элементы не только самого блока, но и все элементы всех layout-ов! Почему-то элементы модели туда не попадают.

Вот новый вариант этой функции, может кто ее усовершенствует.

Код:
[Выделить все]
 ; *** 1 ***
;Служебная функция для получения словаря "ACAD_EVALUATION_GRAPH" из пространства редактора блоков
;В глобальную переменную EVAL_GRAPH записывается список точечных пар и DXF кодов словаря

(defun eval_graf_output (/ Nabor_all length_Nabor_all ST_Nabor list_Nabor_all BLK_RECORD DICTIONARY)
(setq Nabor_all (ssget "_A"));Создаем набор из всех элементов пространства редактора блоков и всякого мусора по соседству
;Превращаем содержимое набора в список указателей
(setq list_Nabor_all (vl-remove-if 'listp (mapcar 'cadr (ssnamex Nabor_all))))
; Оставляем в списке только те элементы, которые не параметры, ручки и активаторы, не "VIEWPORT", и имеют "ACAD_EVALUATION_GRAPH"
(setq list_Nabor_all 
  (vl-remove-if 
    (function (lambda (a) 
      (or 
        (= (length (entget a)) 1)  
        (= (cdr (assoc 0 (entget a))) "VIEWPORT")
        (= (assoc 360 (entget (cdr (assoc 330 (entget a))))) nil)
        (= (assoc 360 (entget (cdr (assoc 360 (entget (cdr (assoc 330 (entget a)))))))) nil)
      ))) list_Nabor_all))
;Получаем указатель на словарь "BLOCK_RECORD"
(setq BLK_RECORD (assoc 330 (entget (car list_Nabor_all))))
;Получаем указатель на словарь "DICTIONARY"
(setq DICTIONARY (assoc 360 (entget (cdr BLK_RECORD))))
;Получаем указатель на словарь "ACAD_EVALUATION_GRAPH"
(setq EVA-U-TION_GRAPH (assoc 360 (entget (cdr DICTIONARY))))
;Получаем словарь "ACAD_EVALUATION_GRAPH"
(setq EVAL_GRAPH (entget (cdr EVA-U-TION_GRAPH)))
);Конец функции eval_graf_output
7.10.2009. немного усовершенствовал функцию, теперь она и в модели работает.


Внимание! Обновление Visibility-ADD2.fas

Последний раз редактировалось Supermax, 07.10.2009 в 10:57.
Supermax вне форума  
 
Непрочитано 06.10.2009, 14:08
#433
Makswell

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


Supermax, замени уже в
http://forum.dwg.ru/showpost.php?p=292452&postcount=144
строчку:
"(visibility-ap) - делает указанный пользователем Visibility Set текущим"
на строчку:
"(visibility-up) - делает указанный пользователем Visibility Set текущим"

А то народ путается.
Makswell вне форума  
 
Автор темы   Непрочитано 07.10.2009, 11:12
#434
Supermax

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


Исправил.
А знают ли уважаемые господа, что сама модель тоже может содержать динамические параметры и свойства, как динамический блок?
Прямо в модель можно встроить, к примеру, параметр visibiliti и разбросать элементы модели по представлениям. Правда переключать эти представления можно только с помощью специальной программки, но она совершенно пустяковая.

Tools -> Block Editor -> <Current Drawing> и вставляйте что хотите.

Если вы вставили динамические параметры прямо в модель, то использовать такой файл как внешнюю ссылку с применением команды REFEDIT нельзя, поскольку все динамические параметры будут после этого снесены.

Увидеть ручки в самой модели и свойства этой модели в Properties тоже нельзя. Надо писать специальую прогу для этого.
Но преимуществ и уникальностей достаточно много. К примеру, нет вхождений такого блока как "Модель". Нет масштабирования и поворотов. и т.п.
Ручки можно сделать специальными объектами и генерить их программно. Понавешать на них реакторов и при перемещении управлять динамическими свойствами модели.

Вот я функцию получения ACAD_EVALUATION_GRAPH подправил специально для этого.
Supermax вне форума  
 
Непрочитано 07.10.2009, 12:40
#435
Volodich

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


да уж, вот это жесть )))
Интересно хотя бы примерный пример применения (вот такая тавтология )
По-моему то про что ты говоришь это уже реализовано. Например, я часто пользуюсь параметрами видимости в модели - слои отключаю. Да и масштабом и копированием...
__________________
Неважно, что что-то идет неправильно. Возможно, это хорошо выглядит...
Volodich вне форума  
 
Автор темы   Непрочитано 07.10.2009, 13:15
#436
Supermax

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


Скажем, есть модель дома. В слои ибъеденены все материалы одного вида. Труба ПП-25, к примеру. А в представления попали элемены цоколя, 1-го этажа, второго и т.п.
То есть, в одно представление попадает немного из одного слоя, немного из другого, немного из третьего и т.д. Отключаешь слой "Труба ПП-25" и все полипропиленовые трубы во всем доме пропали.
Такую модель можно посмотреть целиком, надо просто параметр visibility всем элементам включить принудительно, с помощью макроса Kpblc-а, но как только вы выставите какое-нибудь представление - все потухнет, кроме нужного.

С остальными параметрами я еще не баловался.

Масштабировать ты можешь только отдельные элементы (даже все вместе), но не само пространство модели. то же с поворотами и перемещением.
Supermax вне форума  
 
Непрочитано 08.10.2009, 13:26
#437
Volodich

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


Понятно. Может быть даже и есть в этом какой-то смысл. Например, взять и дому крышу снести одним нажатием ))
__________________
Неважно, что что-то идет неправильно. Возможно, это хорошо выглядит...
Volodich вне форума  
 
Непрочитано 21.10.2009, 20:06
#438
Disney

Геодезист
 
Регистрация: 12.03.2009
Сибирь (где медведи по улицам ходят)
Сообщений: 860
Отправить сообщение для Disney с помощью Skype™


Не получается у меня ни чего...
Цитата:
Команда: (visibility_add)
Цитата:
Укажите место расположения Visibility Set: ; ошибка: неверный тип аргумента:
lentityp nil
AutoCAD 2009 RU
Пожалуйста, у кого всё работает, помогите, в блоке три атрибута, нужно на каждый поставить видимость с состояниями вкл\выкл.
Вложения
Тип файла: dwg
DWG 2007
my_point.dwg (131.7 Кб, 3316 просмотров)
__________________
Почему все вдруг становятся умными, когда уже не надо?
Disney вне форума  
 
Непрочитано 22.10.2009, 22:09
#439
SLADE

проектировщик-новобранец
 
Регистрация: 14.09.2005
Minsk
Сообщений: 324


Цитата:
Сообщение от Ddjo Посмотреть сообщение
Supermax
Спасибо!
Вот тогда полный список, может, кому-нибудь пригодится.
выложи пож. иконки в архиве
SLADE вне форума  
 
Непрочитано 23.10.2009, 13:58
#440
Disney

Геодезист
 
Регистрация: 12.03.2009
Сибирь (где медведи по улицам ходят)
Сообщений: 860
Отправить сообщение для Disney с помощью Skype™


Всё победил, сразу не заметил в 432 мелко так... написанную фразу: -" Внимание! Обновление Visibility-ADD2.fas"
Supermax
__________________
Почему все вдруг становятся умными, когда уже не надо?

Последний раз редактировалось Disney, 26.10.2009 в 13:56.
Disney вне форума  
Ответ
Вернуться   Форум 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