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

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Программное изменение значений атрибутов

Программное изменение значений атрибутов

Ответ
Поиск в этой теме
Непрочитано 19.10.2007, 16:33 #1
Программное изменение значений атрибутов
Mischa
 
Москва
Регистрация: 10.10.2007
Сообщений: 23

Здравствуйте. Скажите, пожалуйста, как програмно изменить значение атрибута у конкретного вхождения блока в VBA?
Просмотров: 3127
 
Непрочитано 19.10.2007, 16:52
#2
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,406


Через GetAttributes получаешь массив атрибутов, фильтруешь, например, по тэгу, и устанавливаешь TextString.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 19.10.2007, 17:50
#3
Mischa


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


Спасибо большое. Разобрался.
Mischa вне форума  
 
Непрочитано 19.10.2007, 18:13
#4
VitaminC


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


Может подскажите прогрмно из экселя менял раньше аттибуты блоков, сечас захотел сделать тоже самое с динаическим блоком (с параметром Visible) - меняет только один раз, когда блок вновь созщданный...все последующие оразы вообще не находит блок с таким именем!!! В чем загвоздка?
VitaminC вне форума  
 
Непрочитано 19.10.2007, 20:53
#5
Евгений А.

Армспорт
 
Регистрация: 18.07.2006
Ейск
Сообщений: 355


используй effectivename для получения имени блока у вхождения
Евгений А. вне форума  
 
Непрочитано 19.10.2007, 21:54
#6
Supermax

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


Не правильно! Динамический блок, как только ему пошевелили свойства становиться *Unnn, где nnn число присваемое данному блоку. Параметр Visible - свойство. а не атрибут его конечно можно прописать всем вхождениям этого блока, но для чего он тогда динамический? effectivename даст наводку на базовое состояние блока. Ковыряние базы может привести к стряхиванию свойств вхождений в первоначальный вид. Надо найти именно данный вариант вхождения, только искать надо конкретное *Unnn.
В AutoCAD-е есть такой глюк: Когда динамический блок вставляешь первый раз его имя (DXF код 2) равно эффективному. Как только свойство пошевелили - становиться *Unnn и обратно уже не переименовывается. Поэтому если вы два раза вставляли блок может возникнуть ситуация, когда у вас два абсолютно одинаковых по свойствам блока, но один *Unnn (вы его ковыряли и назад все вернули), а другой с эффективным именем. Есть макрос который делает namesync.

(setq es (car (entsel)))
(setq ve (vlax-ename->vla-object es))
(setq DynPrs (vla-GetDynamicBlockProperties ve))
(setq props (vlax-variant-value DynPrs))
(setq lprs (vlax-safearray->list props))
(setq pr0 (nth 0 lprs))
(setq val (vlax-variant-value (vlax-get-property pr0 'value)))
(vlax-put-property pr0 'value val)

Все собственно.
Supermax вне форума  
 
Непрочитано 20.10.2007, 12:36
#7
VitaminC


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


Это на Лиспе макрос?
Насчет EffectiveName -вроде прокатило, дело в том что мне не нужно имя какого-то конкретного вхождения динамического блока. Я проверяю все динамические блоки с изначально заданным именем (EffectiveName) и в зависимости от значения одного из их аттрибутов - меняю все остальные (из талицы Excel). А динамичеси каждый блок меняю уже потом (или сначала - не важно) - внешний вид блока нужен уже для других целей и не связан с аттрибутами..
Единственно, что мне нужно, для других целей так это как-то подсчитать кол-во для спецификации. Например, есть динамический блок -который может принимать 4 разных вида, и мне нужно подсчитать кол-во каждого из их во всех файлах...
с простымиблоками - я делал это командой Data Extraction/// прокатит лиэта команда с динамическими блоками с разными Visibikity State? ил ка еще можно реализовать?
VitaminC вне форума  
 
Непрочитано 20.10.2007, 14:26
#8
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,406


На Excel завязываться ИМХО не надо. Проще сделать текстовый файлик, его прочитать стандартными средствами и работать. Или прописать зависимость прямо в дин.блоке. Или коде.
---
Добавлено: http://forum.abok.ru/index.php?showtopic=14612 живет и побеждает
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 20.10.2007, 15:09
#9
Supermax

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


"На Excel завязываться ИМХО не надо." Как это не надо? Надо! и на MS Project надо, и на другие проги тоже. Только изделие №2 не забывайте одевать. И в бой!
AutoCAD c Excel - друзья навеки! Ура!
Хотя о старости надо подумать. Тишина, спокойствие, никаких тебе "внешних" связей. Блаженство! Вот гробик пойду выберу себе что ли? Лягу в него и никаких забот.
Supermax вне форума  
 
Непрочитано 20.10.2007, 17:50
#10
VitaminC


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


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
На Excel завязываться ИМХО не надо. Проще сделать текстовый файлик, его прочитать стандартными средствами и работать. Или прописать зависимость прямо в дин.блоке. Или коде.
---
Добавлено: http://forum.abok.ru/index.php?showtopic=14612 живет и побеждает
Дело в том, что как раз в Екселе я произвожу рассчеты все. Эти расчеты делаются в екселе на основании данных извлеченных из акада. Кроме того таблица в екселе очень наглядна и добавляется мною (с небольшой коррректировкой) непосредствено в проект (т.к. многие заказчеги любят такие таблички). Вот....потом из таблицы экселя данные переносятся в акад обратно в динамические блоки...
P.S. Сам я занимаюсь электрикой и таким образом строю однолинейные схемы щитов на основании планировок с нанесенными светильниками, розетками, выпусками
VitaminC вне форума  
 
Непрочитано 20.10.2007, 17:53
#11
VitaminC


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


Спасибо
, Алексей aka kpblc ,
за ссылку - сейчас буду изчать
Единственно хочу сказать... хотел сам все селать под себя, не очень люблю чужие проги, так там зачастую все приходится передлывать на 90% ..
VitaminC вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Программное изменение значений атрибутов



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Назначение свойств атрибутов блока без attsync Кулик Алексей aka kpblc Программирование 9 15.08.2017 06:32
Извлечение атрибутов в файл Excel Kotsar AutoCAD 5 20.03.2014 14:44
изменение свойств атрибутов блока elena_din AutoCAD 8 12.12.2005 14:16