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

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

Перенос значения атрибутов из блока в блок

Ответ
Поиск в этой теме
Непрочитано 01.04.2012, 11:46 #1
Перенос значения атрибутов из блока в блок
wluk1958
 
Регистрация: 26.11.2010
Сообщений: 45

Подскажите, пожалуйста: как программно можно перенести значения атрибутов из 1-го блока во 2-й блок (если имена атрибутов 1 и 2 соответствуют). Подмогните, пожалуйста. Спасибо заранее.
Просмотров: 5215
 
Непрочитано 01.04.2012, 12:43
#2
crosandr

Инженер-строитель
 
Регистрация: 09.07.2010
Санкт-Петербург
Сообщений: 1,988


тынц1
тынц2
crosandr вне форума  
 
Автор темы   Непрочитано 01.04.2012, 14:31
#3
wluk1958


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


Это немного не то (видимо, я не совсем толково донес задачу):
Дано: 2 блока с множествами атрибутов. Но в обоих блоках есть атрибуты с одинаковыми именами "ШИФР".
Задача: изменить значение атрибута "ШИФР" 1-го блока на значение атрибута "ШИФР" 2-го блока.
Типа: ("ШИФР" . "Значение-атр-1") --> ("ШИФР" . "Значение-атр-2")
Таким образом, произойдет "перетекание" (т.е. замена) ЗНАЧЕНИЙ атрибутов с ОДИНАКОВЫМИ именами из блока-2 в блок-1.
(Блок-1 с именем атрибута "ШИФР" (и значением "Значение-атр-1") будет иметь значение "Значение-атр-2" из соответствующего атрибута "ШИФР"
Блока-2)
wluk1958 вне форума  
 
Непрочитано 01.04.2012, 19:33
#4
Frigate

КИП, АСУ ТП, слаботочка
 
Регистрация: 02.09.2010
Москва-Тюмень
Сообщений: 422


wluk1958,

а тебе конкретно что нужно - готовая прога или подсказка по алгоритму?

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

Там ты сможешь понять и как самому эту прогу написать.

Судя по всему, ты не искал в поиске, иначе бы давно нашел множество тем.
Frigate вне форума  
 
Автор темы   Непрочитано 02.04.2012, 06:02
#5
wluk1958


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


->Frigate vbmenu_register("postmenu_899037", true);

Не смог я толком разобраться в твоей программе: (сложная, .fas-функции, многофункциональная задача). Попробовал таким образом:

(Defun C:Vg ()
(Setq Nam (Car (Entsel)))
(Setq Obj (Vlax-Ename->Vla-Object Nam))
(Mapcar
'(Lambda (Att)
(Cons (Vla-Get-Tagstring Att)
(Vla-Get-Textstring Att)
)
)
(Vlax-Invoke Obj 'Getattributes)
)
)

Возвращает из блока с 3-мя атрибутами:

(("ИДЕНТИФИКАТОР" . "VOL-1") ("СОСТОЯНИЕ" . "VOL-2")
("ОПТИЧЕСКОЕСОЕДИНЕНИЕ" . "VOL-3"))

А вот как конкретно использовать ф-ю < SUBST...> (или что-то другое ?) для замены в другом блоке значения соответсвующего атрибута ? Извините за дилетанство, но "Хочу все знать". Помогите, пожалуйста. Спасибо.

Последний раз редактировалось wluk1958, 02.04.2012 в 15:33.
wluk1958 вне форума  
 
Непрочитано 02.04.2012, 21:28
#6
Frigate

КИП, АСУ ТП, слаботочка
 
Регистрация: 02.09.2010
Москва-Тюмень
Сообщений: 422


wluk1958,

ты не разбирайся - просто установи ее

в файле ADV_Toolkit HELP/Help.doc прочтешь справку, как ставить

Как поставишь - запускай в командной строке adv-programme-edit-copy-attrib-to-blocks
(хотя команда есть и на кнопке, и в меню).
ВРоде это и есть то, что ты хочешь получить от проги.

Если конкретно о твоем коде...

вот тут

Код:
[Выделить все]
(Setq Nam (Car (Entsel)))
 (Setq Obj (Vlax-Ename->Vla-Object Nam))
можно написть сразу


Код:
[Выделить все]
 (Setq Obj (Vlax-Ename->Vla-Object (Car (Entsel))))
Это ж ЛИСП!

Далее - твой mapcar не присваивается никакой переменной, а нужно бы.

Тебе subst не нужно, можно гораздо проще - получившийся по mapcar список используешь в цикле foreach (или том же mapcar), присваивая значения каждого атрибута атрибутам другого блока (используя vla-put-textstring) - еще один entsel используй.

Да...блоки как я понял, должны быть одинаковыми.. так вот, тебе нужно из первого блока (переменная obj) вытащить имя блока - через (vla-get-EffectiveName obj),
и проверить, чтобы у второго выбранного блока, в который будешь копировать значения атрибутов, было такое же имя.

В общем, можешщь моей прогой пользоваться, можешь сам поизвращаться :-)
Frigate вне форума  
 
Автор темы   Непрочитано 02.04.2012, 22:09
#7
wluk1958


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


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Назначение свойств атрибутов блока без attsync Кулик Алексей aka kpblc Программирование 9 15.08.2017 06:32
Помогите сделать сортировку списка атрибутов блока Wertgan Программирование 11 30.04.2015 17:17
Поля атрибутов вложенного блока не отображают своих значений hwd AutoCAD 7 23.12.2009 08:40
Баг: сбрасывается аннотативность атрибутов блока + атрибуты не отображаются во вхождениях блока hwd Баги и пожелания в Autodesk 0 15.11.2009 14:55
изменение свойств атрибутов блока elena_din AutoCAD 8 12.12.2005 14:16