Тема: Как взорвать 3DSolid и Region программно?

Существует набор примитивов, в которых присутствуют 3DSolid и Region.
Как имея Handle или номер объекта применить к нему метод Explode?

Re: Как взорвать 3DSolid и Region программно?

как это в примитивах присутствуют другие объекты???
или Вы хотели сксзать "существует набор объектов, в котором присутствуют 3DSolid и Region"???
у объекта 3DSolid нет метода Explode.
я думаю (хотя не исключено, что ошибаюсь), что акад, чтобы "взорвать" этот объект испоьзует методы классов от которых образован 3DSolid. в VB6, каторый используется ACAD2006, это делать (обращатся к методам базовых классов) низя. в VB7 это делать моно, интересно а какой VB будет в ACAD2007?
Вам можно попробывать воспользоватся методом SendCommand, а со "взрывом" Region'а по-моему нет никаких проблемм

Re: Как взорвать 3DSolid и Region программно?

Да!  "существует набор объектов, в котором присутствуют 3DSolid и Region".
А у объекта Region тоже нет метода Explode.
Воспользоватся методом SendCommand можно, но как сообщить автокаду какие объекты взрывать (не делая это вручную).
Можно до выполнения команды SendCommand программно выбрать объекты. Но как сделать выделение конкретных объектов?
Может еще у кого-то есть соображения по этому поводу?

Re: Как взорвать 3DSolid и Region программно?

Dim curves(0 To 1) As AcadEntity
    Dim centerPoint(0 To 2) As Double
    Dim radius As Double
    Dim startAngle As Double
    Dim endAngle As Double
    centerPoint(0) = 5#: centerPoint(1) = 3#: centerPoint(2) = 0#
    radius = 2#
    startAngle = 0
    endAngle = 3.141592
    Set curves(0) = ThisDrawing.ModelSpace.AddArc(centerPoint, radius, startAngle, endAngle)
    Set curves(1) = ThisDrawing.ModelSpace.AddLine(curves(0).StartPoint, curves(0).EndPoint)
    Dim regionObj As Variant
    regionObj = ThisDrawing.ModelSpace.AddRegion(curves)
    curves(0).Delete
    curves(1).Delete
    If MsgBox("explode region???", vbQuestion + vbYesNo) = 6 Then
        regionObj(0).Explode
        regionObj(0).Delete
    End If
или выбери регион вручную и выполни макрос
ThisDrawing.ActiveSelectionSet.item(0).Explode

Re: Как взорвать 3DSolid и Region программно?

программно выбрать объекты:
ThisDrawing.ActiveSelectionSet.AddItems

Re: Как взорвать 3DSolid и Region программно?

Попробуем! Сенькс. О результатах сообщу.

Re: Как взорвать 3DSolid и Region программно?

Что-то не получается у меня добавить к выделенным объектам! :(

Re: Как взорвать 3DSolid и Region программно?

Не добавляется, т.к. это свойство Read Only !!!
Может кто-то еще сталкивался с выбором объектов. Подскажите, пожалуйста!

Re: Как взорвать 3DSolid и Region программно?

> LGers
Посмотри на http://vbamaker.narod.ru/index.html - там есть примеры

Re: Как взорвать 3DSolid и Region программно?

Получилось сделать следующим образом.
Сохранить чертеж в *.dxf версии 12.
Открыть этот файл. Все объемные обекты сохранены как Вхождение в блок, у которого есть метод explode.
Пока только так.

> kpblc
Там немного не то. Нужно, чтобы объекты выбирались так, как мы выбираем мышью.
Если у кого то есть идеи, то срадостью возьму их на рассмотрение.