Поиск  Пользователи  Правила 
Закрыть
Логин:
Пароль:
Забыли свой пароль?
Регистрация
Войти
 
Страницы: 1
RSS
Управление сторонним приложением из Excel. Печать блоков dwg
 
Во вложении пример в dwg с блоком! и файл Excel с кодом - но не работает потому что не умею. Прикрепленный архив
Пример и видео как это работает и сделано умными людьми по ссылке:
Пакетная печать VBA из листа со многими ВЭ (adn-cis.org)
В файле dwg блок есть. Должно по нажатию кнопки активировать кад, выделить мышью зону должен пользователь и напечатать в pdf все блоки. Желательно создать по дороге папку по пути файла эксель и сохранить туда pdf
Понимаю что не вопрос по Excel, но судя по поиску форума тут есть люди которые в этом очень хорошо понимают. Помогите разобраться, плиз!
 
1.Не у всех установлены последние версии автокада.
2.Настроить лист в dwg для печати, указать принтер
3.Все это гораздо проще и с меньшими трудозатратами выполнять макросами с автокада.
С печатью не все так просто
 
doober, вы помогали кому то на этом форуме с макросом блоки из Эксель в кад с атрибутами, тут бы хотелось какое то направление хотя бы доя формата а1 понять как из Эксель запустить. Ведь если из Эксель я накину рамок разных форматов потом под них создавать листы для публикации сложно. В 2020 скинул потому что непонятно почему файл с блоком в меньших кадах больше весит чем надо чуть позже пересохраню на более ранний вариант. С одним форматом если можно задайте направление из кеда макросом ни разу не пробовал
выделение допустим объектов рамкой можно не делать выделить в каде сразу объекты потом из Эксель када окно активировать и передать Команды печати - такая идея
Изменено: Тимофеев - 14 янв 2021 08:06:56
 
У меня 12 кад. Сначала реализуйте задачу макросами в автокаде, потом можно их в эксель перенести.
 
Код
 
i = 0
    For Each objEnt In ss
    If objEnt.ObjectName = "AcDbBlockReference" Then
    Set objBRef = objEnt
        If objBRef.EffectiveName = "А1ашб" Then
        pt1 = objBRef.InsertionPoint
        varAttributes = objBRef.GetAttributes
        l = varAttributes(4).TextString
        'pt1 = ThisDrawing.Utility.TranslateCoordinates(pt1, acWorld, acDisplayDCS, False)
        ReDim Preserve pt1(0 To 1)
        pt2(0) = pt1(0) + 84100
        pt2(1) = pt1(1) + 59400
        i = i + 1
        PolyPlot acadDoc, ActiveWorkbook.Path + "\" + CStr(n) + " - Лист " + CStr(l) + " - А1", pt1, pt2
        End If
    End If
    Next
End Sub
Sub PolyPlot(ByRef acadDoc, strFileName As String, pt1 As Variant, pt2 As Variant)
    Dim Layout As AcadLayout
    Set Layout = acadDoc.ActiveLayout
    Layout.RefreshPlotDeviceInfo
    Layout.ConfigName = "DWG To PDF.pc3"
    acadDoc.SetVariable "BACKGROUNDPLOT", 0
    Layout.CanonicalMediaName = "ISO_full_bleed_A1_(841.00_x_594.00_MM)"
    Layout.CenterPlot = True
    Layout.PlotRotation = ac0degrees
    Layout.StandardScale = acScaleToFit
    Layout.StyleSheet = "acad.ctb"
    Layout.SetWindowToPlot pt1, pt2
    Layout.PlotType = acWindow
    acadDoc.Regen acAllViewports
    acadDoc.Plot.PlotToFile strFileName
End Sub
Изменено: Тимофеев - 14 янв 2021 14:51:36
 
doober, как бы сюда же дошить из набора взять еще блок А1кшб с книжной ориентацией
Код
If objBRef.EffectiveName = "А1кшб" Then
pt1 = objBRef.InsertionPoint       
varAttributes = objBRef.GetAttributes
l = varAttributes(4).TextString
ReDim Preserve pt1(0 To 1)
pt2(0) = pt1(0) + 59400
pt2(1) = pt1(1) + 84100
i = i + 1
PolyPlot acadDoc, ActiveWorkbook.Path + "\" + CStr(n) + " - Лист " + CStr(l) + " - А1", pt1, pt2
а вот дальше как ориентацию в PolyPlot задать на книжную ? эти изменения:
Код
Layout.ConfigName = "DWG to PDF.pc3"
Layout.CanonicalMediaName = "ISO_full_bleed_A1_(594.00_x_841.00_MM)"
Layout.CenterPlot = True
Layout.PlotRotation = ac90degrees
Layout.StandardScale = acScaleToFit
Layout.StyleSheet = "acad.ctb"
Изменено: Тимофеев - 14 янв 2021 16:33:24
 
По книжной ориентации понятно - пока отдельным модулем так же прописать.
Остается вопрос как в одном модуле условия прописать.
А так же вопрос встал pdf кроме постраничных файлов в общий pdf собрать (публикацию)
Код
Sub PlotByBlocks()

Изменено: Тимофеев - 15 янв 2021 16:28:01
 
Через командную строку автокада все можно сделать.
 
doober, ответы Ваши прям меня радуют - дальше пошел искать-читать-смотреть-спрашивать/
Как через командную строку автокад создать нестандартный формат без полей .pc3 допустим 1200х594 ?
Изменено: Тимофеев - 14 янв 2021 22:24:38
 
Для начала надо изучить командную строку, или делать операции и смотреть, какие команды выполняются.
Ответы ищите на caduser
Изменено: doober - 14 янв 2021 22:51:52
Страницы: 1
Читают тему (гостей: 1)
Наверх