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

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

Удаление блока в чертеже

Ответ
Поиск в этой теме
Непрочитано 04.06.2020, 08:29 #1
Удаление блока в чертеже
Элис
 
Регистрация: 30.06.2010
Сообщений: 11

Добрый вечер! Подскажите пожалуйста!
есть код написанный в vb.net, в нем поиск блока на чертеже. Задача заключается в 1. Найти блок на чертеже, если его нет, тогда вставить , если есть , тогда удаляем и вставляем новый. Гуру подскажите пожалуйста как удалить найденный блок??
Код:
[Выделить все]
Public Sub OpenTransactionManager()
 
            '' Get the current document and database
 
            Dim acDoc As Document = Application.DocumentManager.MdiActiveDocument
 
            Dim acCurDb As Database = acDoc.Database
 
 
 
            '' Start a transaction
 
            Using acTrans As Transaction = acCurDb.TransactionManager.StartTransaction()
 
 
                '' Open the Block table for read
 
                Dim acBlkTbl As BlockTable
 
                acBlkTbl = acTrans.GetObject(acCurDb.BlockTableId, OpenMode.ForRead)
 
                '' Open the Block table record Model space for read
 
                Dim acBlkTblRec As BlockTableRecord
 
                acBlkTblRec = acTrans.GetObject(acBlkTbl(BlockTableRecord.ModelSpace), OpenMode.ForRead)
 
                '' Step through the Block table record
 
                For Each acObjId As ObjectId In acBlkTblRec ' Здесь перебираются все объекты
 
                    acDoc.Editor.WriteMessage(vbLf & "DXF name: " & acObjId.ObjectClass().DxfName)
 
                    acDoc.Editor.WriteMessage(vbLf & "ObjectID: " & acObjId.ToString())
 
                    acDoc.Editor.WriteMessage(vbLf & "Handle: " & acObjId.Handle.ToString())
 
                    acDoc.Editor.WriteMessage(vbLf)
                    If acObjId.ObjectClass().DxfName = "INSERT" Then acObjId
                    необходимо удаление блока 
                Next
                '' Dispose of the transaction
 
            End Using
        End Sub

Последний раз редактировалось Кулик Алексей aka kpblc, 04.06.2020 в 08:47.
Просмотров: 6786
 
Непрочитано 04.06.2020, 10:02
#2
Boxa

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


Я не гуру, но в Вашем коде все повернуто с ног на голову.
Объект класс BlockTable имеет метод Has(), соответственно можно просто спросить у таблицы блоков, есть блок с заданным именем, а не шерстить модель.
Удалить, просто. Найти все вхождения блока, удалить их, после этого удалить уже описание блока. Описание блока имеет ссылки на все вхождения блока. Возможно для Вас будет полезна эта ссылка: https://adn-cis.org/kak-najti-vse-vs...ogo-bloka.html
Boxa вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > .NET > Удаление блока в чертеже

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не обновляются поля, являющиеся ссылками на атрибуты блока. Как исправить? bobrovantig AutoCAD 14 14.03.2017 21:48
Повторное описание блока пропущено Квадриптих AutoCAD 20 20.11.2013 10:23
Проблема с базовой точкой блока и вхождением блока в DXF nogaems Программирование 5 29.08.2013 15:46
вывод на чертеже номер блока или их количество sheldon AutoCAD 2 24.12.2012 15:37
Изменение блока в чертеже вместе с аттрибутами. Mikhail AutoCAD 4 15.10.2003 01:53