Тема: Сохранение в отдельные файлы

Программка должна сохранять все чертежи из одного файла в отдельные файлы. Рамки чертежей в виде блоков. Не пойму в чем дело. С одними файлами работает с другими нет. Или сохраняет какието непонятные фрагменты. Может настройки не те?

Public Sub Main()
  Dim objSelSet As AcadSelectionSet
  Dim objSelSet2 As AcadSelectionSet
  Dim objSelCol As AcadSelectionSets
  Dim objSelCol2 As AcadSelectionSets
  Dim objEnt As AcadEntity
  Dim intType(0) As Integer
  Dim varData(0) As Variant
  Dim i As Integer
  Dim strAttributes As String
  Dim varAttributes1 As Variant
  Dim minExt As Variant
  Dim maxExt As Variant
  Dim filename As String
  Set objSelCol = ThisDrawing.SelectionSets
  Set objSelCol2 = ThisDrawing.SelectionSets
    For Each objSelSet In objSelCol
      If objSelSet.Name = "TEMP" Then
        objSelSet.Delete
        Exit For
      End If
    Next
Set objSelSet = objSelCol.Add("TEMP")
intType(0) = 0
varData(0) = "INSERT"
objSelSet.SelectOnScreen Filtertype:=intType, filterdata:=varData
i = 0
MsgBox objSelSet.Count
For Each objEnt In objSelSet
If objEnt.Name = "B-HOR-R1" Or objEnt.Name = "B-VER-R1" Or objEnt.Name = "A-HOR-R1" Or objEnt.Name = "A-VER-R1" Or objEnt.Name = "CPP1" Or objEnt.Name = "WPP1" Then
i = i + 1
objEnt.GetBoundingBox minExt, maxExt
Set objSelSet2 = objSelCol2.Add("TEMP2")
objSelSet2.Select acSelectionSetCrossing, minExt, maxExt
ThisDrawing.Wblock "c:\MULTIDWG\" & i & ".dwg", objSelSet2
objSelSet2.Delete
End If
Next
End Sub

Re: Сохранение в отдельные файлы

Попробуй наладить получение нужного чертежа сначала с одним блоком (или типом блоков), а потом организуешь цикл.
Вот возможный вариант:

Sub WBlockTest()
' Create a selection set
    Dim ssetObj As AcadSelectionSet
    Dim vEntity As AcadEntity
    Set ssetObj = ThisDrawing.SelectionSets.Add("WBLOCKSET7")
    ReDim MeBlocks(0 To ThisDrawing.ModelSpace.Count - 1) As AcadEntity
    Dim i As Integer
    Dim j As Integer
    j = 0
    On Error Resume Next
    For i = 0 To ThisDrawing.ModelSpace.Count - 1
        Set vEntity = ThisDrawing.ModelSpace.Item(i)
        If (vEntity.Name = "Z02") Then
            Set MeBlocks(j) = vEntity
            j = j + 1
        End If
    Next
    ReDim Preserve MeBlocks(j - 1)
    ' Add the array of objects into the selection set
    ssetObj.Clear
    ssetObj.AddItems MeBlocks
    ' Output the selection set to a new file
    ThisDrawing.Wblock "D:\Temporary\WBlock_example.dwg", ssetObj
End Sub

Re: Сохранение в отдельные файлы

Тут проблема в этом месте

objEnt.GetBoundingBox minExt, maxExt

координаты не верные выдает. поэтому сохраняет другое место modelspace. с системой координат пролемы какие-то

Re: Сохранение в отдельные файлы

> Vlad
Попробуй в начале программы:
ThisDrawing.SendCommand "_UCS _W" & vbcr
а в самом конце:
ThisDrawing.SendCommand "_UCS _P" & vbcr
~'J'~

Re: Сохранение в отдельные файлы

> Vlad
А зачем тебе вообще этот objEnt.GetBoundingBox minExt, maxExt, если ты отбираешь элементы по типу (фильтром) и по имени в цикле For each?
Ведь метод ThisDrawing.Wblock, насколько я понимаю, все равно сажает элементы на их оригинальные координаты.

Re: Сохранение в отдельные файлы

В цикле я перебераю рамки чертежей (блоки). Для каждой рамки получаю minExt, maxExt затем сохраняю в файл все, что находится в этих границах.
to Fatty: Похоже это должно работать. Спасибо.