Изменить текст в блоках (C#/ AutoCAD 2015)
| Правила | Регистрация | Пользователи | Сообщения за день |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Изменить текст в блоках (C#/ AutoCAD 2015)

Изменить текст в блоках (C#/ AutoCAD 2015)

Ответ
Поиск в этой теме
Непрочитано 20.04.2015, 12:28 #1
Изменить текст в блоках (C#/ AutoCAD 2015)
Leo_fmf
 
Инженер-программист
 
Стерлитамак
Регистрация: 26.12.2011
Сообщений: 38

У меня возникла необходимость получить все блоки в чертеже, и заменить в них все тексты на другие из файла соответствия.
Скажите пожалуйста, возможно ли это и как это реализовать на C#.

Последний раз редактировалось Leo_fmf, 20.04.2015 в 15:27.
Просмотров: 3333
 
Непрочитано 20.04.2015, 12:35
#2
Boxa

КЖ; C#
 
Регистрация: 03.11.2005
Санкт-Петербург
Сообщений: 2,611


да. возможно.
Boxa вне форума  
 
Автор темы   Непрочитано 20.04.2015, 12:37
#3
Leo_fmf

Инженер-программист
 
Регистрация: 26.12.2011
Стерлитамак
Сообщений: 38


Цитата:
Сообщение от Boxa Посмотреть сообщение
да. возможно.
Уже радует
А можно немного поподробнее?
Leo_fmf вне форума  
 
Непрочитано 20.04.2015, 12:49
#4
Boxa

КЖ; C#
 
Регистрация: 03.11.2005
Санкт-Петербург
Сообщений: 2,611


Пройтись по таблице блоков, выбрать нужный и заменить текст, хотя ИМХО Вы и сами этот алгоритм знаете.
Таблицу блоков получит просто
Код:
[Выделить все]
 Db.BlockTable acBlkTbl = acTrans.GetObject(acCurDb.BlockTableId, Db.OpenMode.ForRead) as Db.BlockTable;
Вот пример получения записи бока, на примере пространства модели
Код:
[Выделить все]
 Db.BlockTableRecord acBlkTblRecMS = acTrans.GetObject(acBlkTbl[Db.BlockTableRecord.ModelSpace], Db.OpenMode.ForRead) as Db.BlockTableRecord;
Все это внутри транзакции (acTrans)...
Там подробностей не так много, работа с блоками мало чем отличается от работы в пространстве модели, вернее вообще ничем не отличается.
Boxa вне форума  
 
Автор темы   Непрочитано 20.04.2015, 13:30
#5
Leo_fmf

Инженер-программист
 
Регистрация: 26.12.2011
Стерлитамак
Сообщений: 38


Вот я получаю все блоки
Код:
[Выделить все]
Document doc = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument; 
			Database sourceDb = doc.Database;
			Editor ed = doc.Editor;
			ObjectIdCollection blockIds = new ObjectIdCollection();
			using (Transaction acTrans = sourceDb.TransactionManager.StartTransaction())
			{
				BlockTable acBlkTbl = acTrans.GetObject(sourceDb.BlockTableId, OpenMode.ForRead) as BlockTable;
				foreach (ObjectId obId in acBlkTbl)
				{
					BlockTableRecord dbObj = (BlockTableRecord)acTrans.GetObject(obId, OpenMode.ForRead);
				}
				acTrans.Commit();
			}
Если я правильно понимаю, мне нужно получить все тексты из dbObj из заменить их на другие

----- добавлено через ~42 мин. -----
Что-то у меня не получается получить объекты блока
Leo_fmf вне форума  
 
Непрочитано 20.04.2015, 14:41
#6
Boxa

КЖ; C#
 
Регистрация: 03.11.2005
Санкт-Петербург
Сообщений: 2,611


http://forum.dwg.ru/showthread.php?t=72223
Boxa вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Изменить текст в блоках (C#/ AutoCAD 2015)



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Именованные блоки превращаются в неименованные. Что делать? Autocad 2008SP1 emich AutoCAD 7 25.06.2014 10:30
По какому документу изготавливают блоки УДБ? AVO Поиск литературы, чертежей, моделей и прочих материалов 0 03.04.2014 06:28
Layout. Как редактировать, сохранять? kozaki AutoCAD 5 03.06.2013 20:34
Динамические блоки при копировании перестают быть динамическими. *Voland* Динамические блоки 11 04.07.2012 10:51
Разбиение черечежа откоса на геологические блоки в VBA Skyper Программирование 1 18.03.2010 08:54