Тема: VBA. Автоматизация печати из модели

Привет!
Под автокад еще не програмировал, предметная область велика не сразу разберешся.

Ребята наверное темя затертая, но поиском нужную мне информацию не нашол.
Есть форматка выполнена в виде динам. блока можно ли при печати автоматически определять область печати по границам этого блока(печать из модели).
Или может есть др. решения.
За ранее большое спасибо!!!

Re: VBA. Автоматизация печати из модели

У любого объекта добавленного в рисунок есть
свойство BoundingBox
Оттуда можно получить без проблем нижнюю левую и
верхнюю правую точки последнего
См. Help VBA

~'J'~

Re: VBA. Автоматизация печати из модели

Можешь взять следующий код за основу:

Option Explicit

Sub TestWindowPlot()

    Dim oEnt As AcadEntity
    Dim oBlkRef As AcadBlockReference
    Dim blkName As String
    Dim oSpace As AcadBlock
    Dim ftype(1) As Integer
    Dim fdata(1) As Variant
    Dim dxfCode, dxfValue
    Dim minExt As Variant
    Dim maxExt As Variant
    '
    Dim oSset As AcadSelectionSet
    With ThisDrawing.SelectionSets
        While .Count > 0
            .Item(0).Delete
        Wend
        Set oSset = .Add("$Format$")
    End With
    '
    ftype(0) = 0: ftype(1) = 2
    fdata(0) = "INSERT": fdata(1) = "DynamicFormat"    '--> change the name of your format block here
    dxfCode = ftype: dxfValue = fdata
    '
    oSset.Select acSelectionSetAll, , , dxfCode, dxfValue
    '
    For Each oEnt In oSset
        Set oBlkRef = oEnt
        '        blkName = oBlkRef.EffectiveName '---> debug only
        ' snip from the Help file:
        ' Return the bounding box for the block reference and return the minimum
        ' and maximum extents of the box in the minExt and maxExt variables.
        oBlkRef.GetBoundingBox minExt, maxExt

        ' Print the min and max extents
        MsgBox "The extents of the bounding box for the line are:" & vbCrLf _
             & "Min Extent: " & minExt(0) & "," & minExt(1) & "," & minExt(2) _
             & vbCrLf & "Max Extent: " & maxExt(0) & "," & maxExt(1) & "," & maxExt(2), vbInformation, "GetBoundingBox Example"

        ''---> Call the plot function here <---''
    Next
    '
End Sub

~'J'~

Re: VBA. Автоматизация печати из модели

Привет!
Большое спасибо за помощь!
Теперь можно определить верхнюю и нижнюю координаты форматки.

А не могли бы помочь с выводом на печать по этим координатам.
Или может пример какой нибуть, чтоб можно оттолкнутся.
За ранее большое спасибо!

Вот мой код:
Sub GetBoundingBox()
Dim varPoint As Variant
Dim blockRefObj As AcadBlockReference
Public returnObj As AcadEntity
Public basePnt As Variant
Public dybprop As Variant, I As Integer
Dim minExt As Variant
Dim maxExt As Variant
ThisDrawing.Utility.GetEntity returnObj, basePnt, "Выберите формат для изменения:"
If returnObj.ObjectName = "AcDbBlockReference" Then ' bobj присваиватся имя объекта если он блок
    If returnObj.IsDynamicBlock Then
        If returnObj.EffectiveName = "pce_format" Then ' происходит проверка имени блока
        returnObj.GetBoundingBox minExt, maxExt
        End If
    End If
End If
    MsgBox "The extents of the bounding box for the line are:" & vbCrLf _
         & "Min Extent: " & minExt(0) & "," & minExt(1) & "," & minExt(2) _
         & vbCrLf & "Max Extent: " & maxExt(0) & "," & maxExt(1) & "," & maxExt(2), vbInformation, "GetBoundingBox Example"
         
End Sub

Re: VBA. Автоматизация печати из модели

Наверно имелось ввиду:
http://dwg.ru/dnl/1851

~'J'~

Re: VBA. Автоматизация печати из модели

Привет!
Благодаря Вам программу для вывода на печать с нужными мне параметрами сделал.

Снова нужна ваша помощь!  :oops:

Возможно ли организовать пакетную обработку, т.е. запуск на печать нескольких файлов.

По своей программе вижу след. алгоритм.
1. Через дивлоговое окно выбираю каталог с чертежами
2. Открывается первый чертеж
3. Автоматически запускается програама для печати (ей для работы надо выбрать блок)
4. Выбираю блок
5. Происходит запуск на печать
6. Чертеж закрывается
7. Открывается следующий
и т.д.

Если есть возможность помоч было бы здорово.
Или может где уже примеры есть.

За ранее большое спасибо!!!

Re: VBA. Автоматизация печати из модели

http://forum.abok.ru/index.php?showtopic=28075
вот тут мультик про макрос.. там же можно найти сам код. он открыт.

Re: VBA. Автоматизация печати из модели

Этот пример fixo советовал несколько сообщений назад.
Я его уже использовал.

Подскажите пож-ста как применить набор команд ко всем чертежам в каталоге.

Re: VBA. Автоматизация печати из модели

как можно применить... в цикле наверно.
создаём набор из фалов и в цикле применяем к каждому наши действия.