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

Вернуться   Форум DWG.RU > Программное обеспечение > AutoCAD > Динамические блоки > Блок с атрибутом и его связь с Exel

Блок с атрибутом и его связь с Exel

Ответ
Поиск в этой теме
Непрочитано 04.08.2013, 15:01 #1
Блок с атрибутом и его связь с Exel
DinarSTR
 
Регистрация: 19.08.2011
Сообщений: 13

Как сделать так чтобы графический вид блока с атруботом можно было поменять исходя из данных в екселе. К примеру у меня есть блок дерево, а мне нужно его поменять на блок куст, исходя из того что у меня в экселе? все это можно сделать вручную, есть Lsp blrevers, но он меняет по одному. хотелось бы массово и исходя из данных экселя

Последний раз редактировалось DinarSTR, 04.08.2013 в 15:19.
Просмотров: 6726
 
Непрочитано 04.08.2013, 15:47
#2
LynxM


 
Регистрация: 17.08.2010
Kyiv
Сообщений: 688
<phrase 1= Отправить сообщение для LynxM с помощью Skype™


В СПДС GraphiCS есть возможность создать таблицу с отчетом (взаимосзять таблицы с блоками AutoCAD (идеальный вариант - объекты СПДС)).
Таблица "вытягивает" указанные вами блоки и их свойства и имеет свойства изменять атрибуты выбранных блоков через таблицу (изменив атрибуты в таблице - изменились в блоке).
Для данного случая: таблица вытянула атрибут "дерево" - меняем его в таблице на "куст" и на чертеже видим блоки "куст".

Какие минусы (учитывая тему):
- таблицы СПДС, а не Exel;
- необходим сам СПДС GraphiCS.

И еще один минус работы СПДС GraphiCS с блоками AutoCAD: меняются только атрибуты блока, свойства - нельзя изменить. (можно менять свойства только параметрических объектов СПДС).

P.S. Если имеется возможность такое реализовать в AutoCAD - будет интересно это почитать и взять себе для пользования. Пока приходится для реализации подобных случаев использовать СПДС.
__________________
Лучше не обещать, чем обещать и не исполнять.
LynxM вне форума  
 
Автор темы   Непрочитано 04.08.2013, 15:52
#3
DinarSTR


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


Мне нужно что бы и свойства менялись также. Вот лисп который меняет вручную
Вложения
Тип файла: lsp blrevers.lsp (758 байт, 143 просмотров)
DinarSTR вне форума  
 
Непрочитано 05.08.2013, 12:10
#4
LynxM


 
Регистрация: 17.08.2010
Kyiv
Сообщений: 688
<phrase 1= Отправить сообщение для LynxM с помощью Skype™


Снял небольшой пример взаимосвязи блоков AutoCAD с таблицами СПДС графикса.

Взял стандартный блок с палитры деревья и привязал их к таблице СПДС. Идет взаимосвязь между таблицей и "параметром видимости" блока:

http://youtu.be/ZbJViJ4OpKE
__________________
Лучше не обещать, чем обещать и не исполнять.
LynxM вне форума  
 
Непрочитано 05.08.2013, 12:31
#5
swell{d}

гадание на конечно-элементной гуще
 
Регистрация: 31.05.2006
Düsseldorf
Сообщений: 7,604


Цитата:
Сообщение от LynxM Посмотреть сообщение
Если имеется возможность такое реализовать в AutoCAD - будет интересно это почитать и взять себе для пользования.
http://fordewind.org/wiki/lib/exe/fe...-high-res-.pdf
весь цикл статей: http://fordewind.org/wiki/doku.php?id=solo_autocad
__________________
.: WikiЖБК + YouTube :.
swell{d} вне форума  
 
Непрочитано 05.08.2013, 13:00
#6
LynxM


 
Регистрация: 17.08.2010
Kyiv
Сообщений: 688
<phrase 1= Отправить сообщение для LynxM с помощью Skype™


swell{d}, спасибо за ссылку но это чуть-чуть не то что нужно.

А вот как сменить параметры блоков таким образом в связке с Excel (выбор/растяжение/поворот/...)?

Offtop: О том как это делает Дмитрий Тищенко я имел честь удивить мастер класс от самого автора на САПРяжении
__________________
Лучше не обещать, чем обещать и не исполнять.
LynxM вне форума  
 
Непрочитано 05.08.2013, 23:22
#7
b@r@b@n

проектирование КМ и КМД из ЛСТК
 
Регистрация: 15.04.2011
Украина, Запорожье
Сообщений: 256
Отправить сообщение для b@r@b@n с помощью Skype™


Я связь данных Excel и Автокад осуществляю в два этапа
1. Сохранение Листа с данными в формате txt.
2. С помощью Лисп функции читаю текстовый файл и формирую список из точечных пар (переменная . значение)

Дальше делаем со списком все что душеньке угодно )))
b@r@b@n вне форума  
 
Автор темы   Непрочитано 06.08.2013, 08:30
#8
DinarSTR


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


С помощью лисп функции вы можете поменять блок? Если да можете прислать пример?
DinarSTR вне форума  
 
Непрочитано 06.08.2013, 10:07
#9
b@r@b@n

проектирование КМ и КМД из ЛСТК
 
Регистрация: 15.04.2011
Украина, Запорожье
Сообщений: 256
Отправить сообщение для b@r@b@n с помощью Skype™


1. считываем свойства с удаляемого блока.
2. удаляем блок
3. на его место вставляем новый с необходимыми параметрами.

Перед этим формируем список блоков которые необходимо изменить
Менять пока надобности не было поэтому примера нет.
Я в основном делаю расчеты в Exel, а потом по результатам корректирую модель.
b@r@b@n вне форума  
 
Непрочитано 06.08.2013, 16:04
1 | #10
hwd

C, C++, C#
 
Регистрация: 07.10.2009
С-Пб.
Сообщений: 2,762
Отправить сообщение для hwd с помощью Skype™


Цитата:
Сообщение от b@r@b@n Посмотреть сообщение
1. считываем свойства с удаляемого блока.
2. удаляем блок
3. на его место вставляем новый с необходимыми параметрами.
Ну да, и сразу же получаем проблемы, если в чертеже имеются поля, ссылающиеся на свойства заменённого вхождения блока: вместо конкретного значения будет отображаться ####. Т.о. сразу же пойдут лесом ведомости и спецификации, использующие в своих формулах эти значения. Чтобы этого не было, замену следует выполнять с использованием HandOverTo.
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome:
hwd вне форума  
 
Непрочитано 06.08.2013, 16:11
#11
Дима_

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


ИХмо правильней создать дин. блоки с различной видимостью и менять ее в зависимости от данных таблицы.
__________________
Когда в руках молоток все вокруг кажется гвоздями.
Дима_ вне форума  
 
Непрочитано 06.08.2013, 16:15
#12
hwd

C, C++, C#
 
Регистрация: 07.10.2009
С-Пб.
Сообщений: 2,762
Отправить сообщение для hwd с помощью Skype™


Цитата:
Сообщение от Дима_ Посмотреть сообщение
ИХмо правильней создать дин. блоки с различной видимостью и менять ее в зависимости от данных таблицы.
А если в перечне XLS файла кустов и деревьев окажется несколько десятков, а в чертеже их будет пара-тройка тысяч, да к тому же в екселе их состав будет постоянно изменяться?
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome:
hwd вне форума  
 
Непрочитано 06.08.2013, 17:45
#13
Дима_

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


Цитата:
Сообщение от hwd Посмотреть сообщение
А если в перечне XLS файла кустов и деревьев окажется несколько десятков, а в чертеже их будет пара-тройка тысяч, да к тому же в екселе их состав будет постоянно изменяться?
То hwd - подзабыли Вы истоки матчасти - DXF. Размер файла будет больше только на описание нескольких десятков блоков, при вставке вхождения дин. блока вставляеться сгенерированный его "подблок" - "*U..." (свойства name и effectivename), который и HandOverTo'неться при изменении дин аттрибутов (реальное имя блока name измениться, а хэндл вхождения останеться прежним). То есть информации больше в чертеже не будет (ну а "пургу" для чистки надо будет вызвать в обоих случаях - т.к. механизмы идеентичны).
__________________
Когда в руках молоток все вокруг кажется гвоздями.
Дима_ вне форума  
 
Автор темы   Непрочитано 06.08.2013, 17:49
#14
DinarSTR


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


это все здорово, но каким образом мне блоки перевести?
Вложения
Тип файла: dwg
DWG 2010
до.dwg (291.8 Кб, 2266 просмотров)
Тип файла: dwg
DWG 2010
после.dwg (403.2 Кб, 2285 просмотров)
DinarSTR вне форума  
 
Непрочитано 07.08.2013, 12:49
#15
Дима_

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


Цитата:
Сообщение от DinarSTR Посмотреть сообщение
но каким образом мне блоки перевести?
Вам же написали - либо програмным, либо через функционал СПДС.
__________________
Когда в руках молоток все вокруг кажется гвоздями.
Дима_ вне форума  
 
Автор темы   Непрочитано 09.08.2013, 09:13
#16
DinarSTR


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


Тогда если все настолько просто, не соизволили бы вы продемонстрировать как мне "переблочить" только те блоки которые в ведомости экселя отвечают тем или иным свойствам? Просто есть файлы где блоков порядка тысячи, а сидеть вручную не подходит. в СПДС я тоже не вижу применения. А что подразумевается под программным путем?
DinarSTR вне форума  
 
Непрочитано 09.08.2013, 11:02
#17
b@r@b@n

проектирование КМ и КМД из ЛСТК
 
Регистрация: 15.04.2011
Украина, Запорожье
Сообщений: 256
Отправить сообщение для b@r@b@n с помощью Skype™


Цитата:
Сообщение от DinarSTR Посмотреть сообщение
А что подразумевается под программным путем?
Пишем функции на Лиспе (программируем).
b@r@b@n вне форума  
 
Непрочитано 09.08.2013, 11:47
#18
Дима_

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


Цитата:
Сообщение от DinarSTR Посмотреть сообщение
Тогда если все настолько просто, не соизволили бы вы продемонстрировать как мне "переблочить" только те блоки которые в ведомости экселя отвечают тем или иным свойствам?
А что такое те или иные свойства? Вот Вам пример - открываете таблицу в экселе (чтоб была текущей) и запускаете лисп из автокада - он смотрит выбранные блоки и переделывает их в соответствии с аттрибутами из таблицы (то есть если Вы на дереве(ях) папишете что это куст, или наоборот - то после запуска оно им и станет). Соответсвенно можно добавлять неопределенное количество блоков и описаний превращений аттрибутов (только с именами аккуратней - ошибки не проверяет). Как переделать на другие свойства и пр. - сами - доделывать никак не буду.

Код:
[Выделить все]
 (vl-load-com)
(defun c:example()
  ((lambda (data)
     (mapcar '(lambda (ent)
               (mapcar '(lambda (atr)
                            ((lambda (x)
                                 (if x (entmod (subst (cons 2 (caddr (car x)))
                                                      (assoc 2 (entget ent))
                                                      (entget ent)))))
                             (vl-remove-if-not
                               '(lambda (x)
                                  (and (= (car x)(vla-get-tagstring atr))
                                       (= (cadr x) (vla-get-textstring atr))))
                                 data)))
                        (vlax-safearray->list (vlax-variant-value
                           (vla-getattributes(vlax-ename->vla-object ent))))))
            (vl-remove-if 'listp (mapcar 'cadr (ssnamex (ssget '((0 . "INSERT") (66 . 1))))))))
    (mapcar '(lambda (row) (mapcar 'vlax-variant-value row))
              (cdr (vlax-safearray->list (vlax-variant-value
                (vlax-get-property (vlax-get-property (vlax-get-property
                   (vlax-get-property (vlax-get-object "excel.application") 'Worksheets)
                     'Item 1) 'UsedRange) 'Value)))))))
Вложения
Тип файла: zip пример.zip (19.8 Кб, 128 просмотров)
__________________
Когда в руках молоток все вокруг кажется гвоздями.
Дима_ вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > AutoCAD > Динамические блоки > Блок с атрибутом и его связь с Exel

Размещение рекламы


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как удалить связь с Exel? Sneginka_Clan AutoCAD 19 18.10.2021 12:40
Как создать блок с обновляемым атрибутом? Zets Динамические блоки 5 10.11.2012 20:39
Летние Олимпийские игры 2012. Болеем за наших! T-Yoke Разное 303 13.09.2012 11:56
Дин блок с атрибутом wo! Динамические блоки 2 06.06.2008 16:10
exel и autocad связь ????? RedSerjio AutoCAD 5 30.10.2007 21:17