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

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Вставка блока во все layout

Вставка блока во все layout

Ответ
Поиск в этой теме
Непрочитано 29.09.2009, 09:08 #1
Вставка блока во все layout
serg01
 
Иркутск
Регистрация: 04.07.2005
Сообщений: 213

Добрый день!
В программировании я не силен, может кто поможет разобраться.
Написал мне программу один человек с caduser.ru
Тема обсуждения начальная тут:
http://www.caduser.ru/forum/index.ph...D=23&TID=46899
Суть проблемы следующая, нужно вставить блок или содержимое модели из неоткрытого файла во все layout текущего файла.
Сама программа выглядит вот так:
Код:
[Выделить все]
(vlax-for s
       (vla-get-Blocks (vla-get-ActiveDocument (vlax-get-acad-object)))
  (if (wcmatch (vla-get-Name s) "`*Paper_Space*")
    (vla-InsertBlock
      s
      (vlax-3D-point '(0.0 0.0 0.0))
      "d:\\Temp\\1.dwg"
      1
      1
      1
      0
    )
  )
)
Пытаюсь вставить файл 1.dwg. Файл сделан с помощью _wblock.
Работает хорошо, но почему то на конкретном файле (шаблоне test.dwt) не отрабатывает. Говорит (load "111.lsp") nil и все.
Если создать в шаблоне еще 1 лист, то на него вставляется без проблем.
Что может быть не подскажите?
Может быть кто у себя проверит если время есть? Спасибо.

Или быть может кто подскажет как переключиться на следующий layout? Если использовать -layout, то можно перейти на первый layout не зная имени. А как на следующий не знаю. Вышенаписанную задачу можно с помощью скрипта сделать, но вся загвоздка в переходе на следующий лист.

Как перейти на след. лист нашел. Буду теперь думать как победить
Вот код
Код:
[Выделить все]
(defun pl:lasw (rev / doc lays laylst act)
  (setq doc  (vla-get-activedocument (vlax-get-acad-object))
        lays (vla-get-layouts doc)
        act  (vla-get-taborder (vla-get-activelayout doc))
  ) ;_ end of setq
  (vlax-for x lays (setq laylst (cons x laylst)))
  (setq laylst
         (vl-sort laylst
                  (function (lambda (a b) (< (vla-get-taborder a) (vla-get-taborder b))))
         ) ;_ end of vl-sort
  ) ;_ end of setq
  (vla-put-activelayout
    doc
    (if rev
      (if (zerop act)
        (last laylst)
        (nth (1- act) laylst)
      ) ;_ end of if
      (if (= (1+ act) (length laylst))
        (car laylst)
        (nth (1+ act) laylst)
      ) ;_ end of if
    ) ;_ end of if
  ) ;_ end of vla-put-ActiveLayout
) ;_ end of defun
;;; Вызов:
;;; (pl:lasw nil) - листать вперёд
;;; (pl:lasw t)   - листать назад

Вложения
Тип файла: rar test.rar (21.6 Кб, 80 просмотров)
Тип файла: dwg
DWG 2007
1.dwg (47.6 Кб, 382 просмотров)


Последний раз редактировалось serg01, 29.09.2009 в 12:00.
Просмотров: 3851
 
Непрочитано 30.09.2009, 08:47
#2
Makswell

Инженер-строитель
 
Регистрация: 15.08.2007
Киров
Сообщений: 2,204


Попробуй так:
Код:
[Выделить все]
(vlax-for s
       (vla-get-Blocks (vla-get-ActiveDocument (vlax-get-acad-object)))
  (if (wcmatch (strcase (vla-get-Name s)) "`*PAPER_SPACE*")
    (vla-InsertBlock
      s
      (vlax-3D-point '(0.0 0.0 0.0))
      "d:\\Temp\\1.dwg"
      1
      1
      1
      0
    )
  )
)
Makswell вне форума  
 
Автор темы   Непрочитано 30.09.2009, 08:59
#3
serg01


 
Регистрация: 04.07.2005
Иркутск
Сообщений: 213


Спасибо большое! Все работает!
serg01 вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Вставка блока во все layout



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Рифмоплетство. Kryaker Разное 554 14.11.2023 11:59
Юмор 2008 Серёга - Bilder Разное 1185 08.01.2009 11:55
Вставка динамического блока с определёнными параметрами. Shade Динамические блоки 2 25.09.2007 15:20
Вставка блока из командной строки, но с переопределением. Mikhail AutoCAD 2 25.03.2005 16:34
вставка блока Visla AutoCAD 6 13.03.2004 14:03