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

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

VBA. Взорвать все таблицы.

Ответ
Поиск в этой теме
Непрочитано 04.06.2015, 11:10 #1
VBA. Взорвать все таблицы.
art_rrc
 
Минск
Регистрация: 28.01.2013
Сообщений: 375

Доброго времени суток! Задача в следующем. Нужно взорвать все таблицы и удалить невидимые отрезки (Цвет 8). Но судя по литературе, метод Explode поддерживает только объекты:
3DPolyline , BlockRef, LightweightPolyline, MInsertBlock, Polygonmesh, Polyline, Region

Были попытки все же применить этот метод к таблице, но безрезультатно:
!Наработки!
Код:
[Выделить все]
'For Each Item In sset
'    If Item.ObjectName = "AcDbTable" Then
'        Set Table = Item
'        explodedObjects = Table.Explode
'    End If
'Next
Также пробовал через .Sendcommand, но ни активировать набор, ни заставить выполниться без участия пользователя (с применением "_L ") не удалось:

!Наработки!
Код:
[Выделить все]
'ThisDrawing.ActiveSelectionSet = sset
'sset.Highlight True
'ThisDrawing.SendCommand "_EXPLODE "
'ThisDrawing.SendCommand "_L "
Подскажите пожалуйста, это вообще реализуемая задача? Если да, то в какую сторону копать?

Код:
[Выделить все]
Sub art_Del8()
Dim sset As AcadSelectionSet
Dim gpCode(0) As Integer
Dim dataValue(0) As Variant
Dim groupCode As Variant, dataCode As Variant
Dim Item As AcadEntity
Dim explodedObjects As Variant
Dim Table As AcadTable

Call ClearSelectionSets
'1) Выбираем все объекты на слое таблицы (DXF кода для таблиц не знаю)
gpCode(0) = 8: dataValue(0) = "Та6лицы"
groupCode = gpCode: dataCode = dataValue
Set sset = ThisDrawing.SelectionSets.Add("aD8")
sset.Select acSelectionSetAll, , , groupCode, dataCode

'ThisDrawing.ActiveSelectionSet = sset
'For Each Item In sset
'    If Item.ObjectName = "AcDbTable" Then
'        Set Table = Item
        'explodedObjects = Table.Explode
    '    Table.Highlight
'    End If
    'MsgBox (Item.ObjectName)
    'explodedObjects = Item.Explode
    'Item.Highlight
'Next
'sset.Highlight True

'ThisDrawing.SendCommand "_EXPLODE "
'ThisDrawing.SendCommand "_L "
Call ClearSelectionSets

'2) Удаляем все отрезки с цветом №8
' отбор по группе (62) Цвет, номер цвета (8) - серый
gpCode(0) = 62: dataValue(0) = 8
groupCode = gpCode: dataCode = dataValue
Set sset = ThisDrawing.SelectionSets.Add("aD8")
sset.Select acSelectionSetAll, , , groupCode, dataCode
sset.Erase

End Sub

'Очищает наборы
'Public Sub ClearSelectionSets()
'    For i = 1 To ThisDrawing.SelectionSets.Count
'        ThisDrawing.SelectionSets.Item(0).Delete
'    Next
'End Sub
Просмотров: 2671
 
Непрочитано 04.06.2015, 11:50
#2
Boxa

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


http://www.theswamp.org/index.php?topic=23957.0
Boxa вне форума  
 
Автор темы   Непрочитано 04.06.2015, 18:13
#3
art_rrc


 
Регистрация: 28.01.2013
Минск
Сообщений: 375


Boxa, Спасибо огромное! То что нужно! Все работает. (только для моей локализованной версии заменил "Explode" на "_Explode")
art_rrc вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > VBA. Взорвать все таблицы.



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Полезные таблицы для инженеров (самопальные и не только). Armin Поиск литературы, чертежей, моделей и прочих материалов 152 22.12.2024 04:14
LISP. Создание поля (field), ссылающегося на текстовое значение ячейки таблицы. skkkk Готовые программы 144 25.07.2024 10:48
Программное создание таблицы AutoCAD. Муки творчества. Do$ Программирование 46 03.08.2016 16:48
вставка таблицы из MS Excell baaba Готовые программы 23 11.03.2014 19:47
как с помощью vba начертить линию vasyavip Программирование 77 09.10.2008 23:17