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

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

VBA. Печать нескольких фаилов из автокада

Ответ
Поиск в этой теме
Непрочитано 26.08.2013, 16:31 #1
VBA. Печать нескольких фаилов из автокада
Azzi
 
Регистрация: 26.08.2013
Сообщений: 2

Здравствуйте, уважаемые форумчане. Сам я - чайник в VBA, но вот возникла необходимость сделать модуль для отправки на печать нескольких фаилов на печать одновременно из автокада и вот, я собственно сделал. Сделал не очень хорошо, спорить не буду. Но может кому-то и так сойдет. А если будут оптимизировать данный модуль, с радостью приму замечания и предложения:

Код:
[Выделить все]
Option Explicit

Dim FileList() As String
Dim Listing(0 To 100) As String


Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long) 'Модуль для задержки очереди печати

Public Sub CommandButton1_Click() 'Модуль открытия фаила
   
   Dim Path As String
   Dim l As Long
   CommonDialog1.Flags = cdlOFNAllowMultiselect Or cdlOFNExplorer
   CommonDialog1.Filter = "*.dwg"
   CommonDialog1.ShowOpen
   FileList = Split(CommonDialog1.FileName, Chr(0))
   
   If UBound(FileList) > 0 Then 'if there is more than one file selected
      Path = FileList(0)
      If Right(Path, 1) <> "\" Then
         Path = Path & "\"
      End If
      For l = 1 To UBound(FileList)
         Listing(l) = Path & FileList(l) 'Создаем список с адресами нужных нам фаилов
      Next
    Else
       MsgBox FileList(0)
    End If

Exit Sub
ErrorHandler:
If Err.Number = 32755 Then Exit Sub
End Sub


Public Sub MySleepMacro()
    ' sleep for 10 seconds
    Sleep 60000
End Sub

Private Sub CommandButton2_Click()
 Dim i As Long
 Dim layerObj As AcadLayer
 
 For i = 1 To UBound(FileList) 'Цикл по массиву
   ' QuietErrorMode = True
    Dim dwgName As String
    dwgName = Listing(i)
      If Dir(dwgName) <> "" Then
       ThisDrawing.Application.Documents.Open dwgName
      Else
       MsgBox "Фаил " & dwgName & " не существует"
      End If
     If CheckBox1.Value Then ' Если есть Чекбокс для отключения слоя Подписи
     Set layerObj = ThisDrawing.Layers.Add("Подписи")
     layerObj.LayerOn = False                           'Отключаем слой Подписи
     ThisDrawing.Regen acActiveViewport
     End If
     ' Число копий
     ThisDrawing.Plot.NumberOfCopies = 1
      ' Запустим на печать
      ThisDrawing.Plot.PlotToDevice
     If i <> UBound(FileList) Then
     MySleepMacro ' Этот модуль необходим чтобы выжидать между отправками на печать. Иначе вылетает модуль с ошибками
     End If
     ThisDrawing.Close
     'ThisDrawing.Application.Documents.Close
  Next

End Sub

Еще что хочу сказать. Есть необходимость использовать не настройки по умолчанию в листе, как здесь, а находить блоки штампов на листе и отправлять на печати их. Блоки имеют параметр формата. Т.е. можно сразу определить как печатать. И масштаб печати всегда 1:1. Если кто подскажет или кинет пример, где можно это взять за основу - буду благодарен.
Просмотров: 7597
 
Непрочитано 26.08.2013, 16:51
#2
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,787


Советую посмотреть команду _.publish и подшивки.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 26.08.2013, 16:56
#3
Azzi


 
Регистрация: 26.08.2013
Сообщений: 2


К сожалению "_.publish" неоднократно печатал не так как надо. В очень ответственный момент. А на создание подшивки не всегда есть время.
К тому же на базе этого модуля хотелось бы организовать печать с подгонкой под штампы чертежей.
Azzi вне форума  
 
Непрочитано 15.05.2017, 22:23
#4
kegorovsc


 
Регистрация: 15.05.2017
Сообщений: 15


Подшивки это здорово. Но иногда нужно напечатать с подписями или без. Вот если бы можно было пакетно отключать слой в файлах
kegorovsc вне форума  
 
Непрочитано 15.05.2017, 23:19
#5
v.psk

конструктор
 
Регистрация: 14.08.2014
Псков
Сообщений: 7,096


kegorovsc, отключать то несложно. Нужно через диалоговое окно (запущенное вба) выбрать папку, и последовательно программно открыв файлы в папке с нужным разрешением, сделать невидимым требуемый слой. .. ну и предусмотреть возможные ошибки....

----- добавлено через 41 сек. -----
... у меня где-то было сделано, поищу позже...
v.psk вне форума  
 
Непрочитано 15.05.2017, 23:39
#6
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 11,004


Цитата:
Сообщение от Azzi Посмотреть сообщение
К сожалению "_.publish" неоднократно печатал не так как надо. В очень ответственный момент
шаловливые ручки сотрудников не лезли в настройки печати?

Цитата:
Сообщение от Azzi Посмотреть сообщение
А на создание подшивки не всегда есть время.
а что мешает сделать создание подшивки хотя бы полуавтоматически? в инете давно гуляет руководство разработчика для подшивок как раз на VBA.
Сергей812 вне форума  
 
Непрочитано 16.05.2017, 20:31
#7
v.psk

конструктор
 
Регистрация: 14.08.2014
Псков
Сообщений: 7,096


kegorovsc, нашел только выключающий макрос. Ну да... немного подправить для обратного действия. Сейчас макросы на работе не запускаются /политика безопасности/, поэтому острой нужды в них нет. А где-то ведь был, мб и подшлифованный.
Offtop: Макрос для отключения видимости слоев.
1. Выбирается директория.
2. Все файлы dwg из директории открываются/отключается слой/закрываются.
Вложения
Тип файла: dvb layvisible_off.dvb (32.0 Кб, 35 просмотров)
v.psk вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Готовые программы > VBA. Печать нескольких фаилов из автокада

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Печать в один PDF фаил нескольких листов YuryKlimchuk AutoCAD 103 24.05.2018 20:47
autocad mep 2009, как отправить печать нескольких листов одновременно eugen2002 Вертикальные решения на базе AutoCAD 2 26.01.2012 15:39
Опять про печать из модели нескольких листов gizmo_zx Программирование 2 28.09.2010 12:33
Не идет печать из автокада, на задание уходить только 64 Кб mike-lovejoy AutoCAD 3 26.11.2008 11:16
Печать нескольких цветных слоев в монохромном режиме Фунт Изюма AutoCAD 9 26.06.2008 09:17