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

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

Как самостоятельно назначить ObjId блоку

Ответ
Поиск в этой теме
Непрочитано 03.04.2009, 10:30 #1
Как самостоятельно назначить ObjId блоку
Air81
 
Регистрация: 25.03.2009
Сообщений: 9

Исходные данные: Базовый Блок (ББ), который представляет собой набор примитивов и отрибутов. и Зависимый Блок (ЗБ) в который также представляет собой набор примитивов и отрибутов, но значения атрибутов вычисляются по формулам, зависящим от: координаты ЗБ, координаты ББ и значений атрибутов ББ.

Проблемма: При случайном удалении ББ у всех ЗБ (а их может быть сотня) атрибуты теряют свое значение, т.к. в формулах идет ссылка на ББ с определенным ObjId хххххххххх (10-ти значное число) который как я понял автокад назначает самостоятельно. Встака нового ББ ничего не решает т.к. автокад назначает ему новый ObjId и формулы не работают.

Я вижу решение этой проблеммы с помощью решения одной из 3 задач. Если кто знает другое решение - предлагайте.

Задача 1:
Вставить новый ББ и назначить ему ObjId удаленного блока, т.е. изменить вместо ObjId ххххххххх1 на ObjId ххххххххх2.

Задача 2:
Найти способ быстрого переназначения для формул значений атрибутов в ЗБ на ссылку на ObjId ББ. Короче чтобы можно было вставить новый ББ и во всех ЗБ в формулах поменять ссылку вместо скажем ObjId ххххххххх1 на ObjId ххххххххх2.

Задача 3, как вариант:
Защитить блок от удаления.
Должно быть разрешено: копирование, перемещение, изменение значений атрбутов!
Должно быть запрещено: Удаление блока без разрешения.

Последний раз редактировалось Air81, 03.04.2009 в 10:58.
Просмотров: 2847
 
Непрочитано 03.04.2009, 10:48
#2
Sync02


 
Регистрация: 07.12.2007
Брест
Сообщений: 243


На сколько я знаю самостоятельно назначить ID примитивам нельзя - он может только автокадом генерироваться.
Как выход - написать метод который будет создавать ББ и пробегаться по базе чертежа находить ЗБ и менять в них ссылку на вновь созданый ББ.
Вот както так
Sync02 вне форума  
 
Автор темы   Непрочитано 03.04.2009, 11:03
#3
Air81


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


Ну вы примерно сформулировали задачу 2. Метод создания нового ББ я думаю придумывать не надо. Этот ББ всегда один и лежит где нибудь в другом файле - базе блоков, откуда его можно вновь скопировать.
Air81 вне форума  
 
Непрочитано 03.04.2009, 13:19
#4
Sync02


 
Регистрация: 07.12.2007
Брест
Сообщений: 243


В общем все и понятно - в программе берете блок из файла вставляете в свой чертеж - при этом получаете его обектИД и записываете его куда надобно.
Это решение и есть, а не задача.
Или надо чтобы это кто-то вам написал программу?
Sync02 вне форума  
 
Автор темы   Непрочитано 03.04.2009, 14:49
#5
Air81


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


Спасибо за отклик, но
Это плохое решение.
Представте: зависимых блоков - 100 шт. В каждом по 2 атрибута с 3-мя полями. Каждое поле ссылается на ObjId ББ. И нужно зайти в КАЖДЫЙ ЗБ (т.к. способ глобального быстрого изменения значений атрибутов с формулами одновременно для всех выбранных блоков я не знаю), поменять в каждом поле ссылку на новый ББ. Итого примерно 600 операций. Проще заново вставить 1 ББ и 100 ЗБ, этим сейчас и выходим из положения, но это не решение.
Да, если можно написать лисп или прогамму для проделывания этих 600 операций, то это и есть задача.

Но можнт можно все таки поменять ObjId у одного нового ББ, а?
Air81 вне форума  
 
Непрочитано 03.04.2009, 14:53
#6
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,996


Цитата:
Но можнт можно все таки поменять ObjId у одного нового ББ, а?
Нет
Цитата:
Проблемма: ...
Задача 2:
Найти способ быстрого переназначения для формул значений атрибутов в ЗБ на ссылку на ObjId ББ. Короче чтобы можно было вставить новый ББ и во всех ЗБ в формулах поменять ссылку вместо скажем ObjId ххххххххх1 на ObjId ххххххххх2.
Цитата:
Да, если можно написать лисп или прогамму для проделывания этих 600 операций, то это и есть задача.
Решение (с уверенностью на 95 %)
Посмотри DEMO5
__________________
Как использовать код на Лиспе читаем здесь

Последний раз редактировалось VVA, 03.04.2009 в 15:14.
VVA вне форума  
 
Автор темы   Непрочитано 03.04.2009, 15:08
#7
Air81


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


Спасибо за ссылку. Пошел разбиратьсяю Похоже то что нужно. По результатам отпишусь

А по Задаче 3 нет решения? (только без прописывания программы для erase)

Последний раз редактировалось Air81, 03.04.2009 в 15:23.
Air81 вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > AutoCAD > Как самостоятельно назначить ObjId блоку



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Справка по форуму Admin FAQ: Часто задаваемые вопросы 13 04.03.2014 11:12
Как именно настроить параметры нового чертежа? Макс_Северянин AutoCAD 31 01.09.2010 10:16
Мониторы LCD CRT Разное 94 17.06.2008 10:51
Как назначить тип опирания в SCAD'е??? Koker SCAD 16 26.04.2004 22:27