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

Вернуться   Форум DWG.RU > Программное обеспечение > AutoCAD > Как разнести листы по разным файлам?

Как разнести листы по разным файлам?

Ответ
Поиск в этой теме
Непрочитано 20.08.2007, 19:00
Как разнести листы по разным файлам?
maksimys
 
генплана нет
 
spb
Регистрация: 15.08.2007
Сообщений: 305

Бывают такие случаи - что надо отдавать цифровую версию файла,
но в этом файле заложен весь проет. и все разбито по листам во вьюпортах. Можно ли разбить листы на отдельные файлы - но так чтобы все обьекты двигались и с ними можно было работать ?
(ну кроме конечно банальной обрезки модели, передачи jpeg-ов и
dwf-ов)
Подскажите если это возможно? 8)
Просмотров: 21667
 
Непрочитано 23.08.2007, 17:41
#41
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,996


>maksimys
Это как пример. У меня работает. Пробуй так
Код:
[Выделить все]
;;Пример использования 
;;Рисует полилинию по границам ВЭ в модели 
(defun C:TEST () 
  (vl-load-com) 
  (if (null chspace)(load "chspace.lsp")) 
  (foreach ret (_mip-get-point-viewport (getvar "CTAB")) 
  (setq point_list_ctab (car ret)) 
  (setq vpname (last ret)) 
  (setq cvpname (acet-currentviewport-ename)) 
  (command "_.pspace") 
  (command "_PLINE") 
  (foreach pt point_list_ctab (command "_none" pt)) 
  (command "_close") 
  (setq pl (entlast))
    (vl-catch-all-apply '(lambda()
  (if (not (eq cvpname vpname)) 
    (progn 
      (setq vpname (cdr (assoc 69 (entget vpname)))) 
      (command "_.mspace") 
      (setvar "CVPORT"  vpname) 
      (command "_.pspace") 
      ) 
    )
                           )
      )
  (chspace (ACET-LIST-TO-SS (list pl))) 
      (command "_.pspace") 
    
    ) 
  (princ) 
  )
_mip-get-point-viewport - выше
VVA вне форума  
 
Автор темы   Непрочитано 24.08.2007, 09:27
#42
maksimys

генплана нет
 
Регистрация: 15.08.2007
spb
Сообщений: 305


VVA - спасибо :!: за лисп. 8)
maksimys вне форума  
 
Непрочитано 24.08.2007, 10:16
#43
Makswell

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


Присоединяюсь к maksimys.
Если смотреть корни лиспа на http://www.arcada.com.ua/forum/viewtopic.php?t=850 то конечно отдельное спасибо и Kpblc'у!
Makswell вне форума  
 
Непрочитано 03.10.2007, 17:23
#44
Олег К.

Инженер-теплотехник
 
Регистрация: 17.08.2006
Смоленск
Сообщений: 311


Господа гуру, помогите разобраться с vla-функциями. Составляю программу и заодно изучаю соотв. раздел LISPa. Пользуюсь книгой Полещука "AutoLISP и Visual Lisp в среде AutoCAD", но маловато примеров (или просто я нужное отыскать не могу ).
Пока есть вот такое:
Код:
[Выделить все]
(vl-load-com)
  ; получение "переменных окружения" для исходного файла
  (setq acad_appl (vlax-get-acad-object)
        open_docs (vla-get-Documents acad_appl)
        active_doc (vla-get-ActiveDocument acad_appl)
        model_space (vla-get-ModelSpace active_doc)
        paper_space (vla-get-PaperSpace active_doc)
	active_layout (vla-get-ActiveLayout active_doc)
  )
  ; создание нового файла (неактивного)
  (setq new_doc (vla-Add open_docs "acad.dwt"))
  ; получение "переменных окружения" нового файла
  (setq new_model_space (vla-get-ModelSpace new_doc)
        new_paper_space (vla-get-PaperSpace new_doc))

(setq point_list (list 0.0 0.0 0.0 0.0 10000.0 0.0 10000.0 10000.0 0.0 10000.0 0.0 0.0 0.0 0.0 0.0))
(setq point_array (vlax-safearray-fill (vlax-make-safearray vlax-vbDouble '(0 . 14)) point_list))

(setq nabor (vla-get-ActiveSelectionSet active_doc))
(vla-Clear nabor)

;    ----- 1 -----
(setq listtmp nil)
(vla-SelectByPolygon nabor acSelectionSetCrossingPolygon point_array nil nil)

(vla-CopyObjects active_doc (vlax-make-variant (vlax-safearray-fill
                             (vlax-make-safearray vlax-vbObject (cons 0 (1- (vla-get-Count nabor))))
                             (vlax-for x nabor (setq listtmp (cons x listtmp)))))
                 new_model_space 'idpairs)

;    ----- 2 -----
(vla-CopyObjects active_doc (vlax-make-variant (vlax-safearray-fill
                             (vlax-make-safearray vlax-vbObject (cons 0 1))
                             active_layout))
                 new_doc 'idpairs)
Выполняться это все должно на активном листе.

1. В первой части копировать объекты нужно из модели, а не из листа. Подозреваю, в функции vla-SelectByPolygon вместо последних nil нужно поставить фильтр выбора, но никак не могу правильно его составить. Или временно делать активной модель?

2. Нужно скопировать из исходного файла в новый вкладку листа со всем содержимым (не только объекты, но и настройки печати). Что должно содержаться в массиве и в какую область нового файла это надо копировать? Если не сильно затруднит, то с примером.
Что интересно, в данном варианте при копировании листа при каждом запуске появляются разные ошибки. То "вы неправильно создаете массив", то "не могу вставить этот массив в новый документ". Вот и пойми - чего ему надо!

Да, прошелся по форумам dwg.ru и autocad.ru, ничего похожего не обнаружил. Если кто точно знает темы в которых это обсуждалось или готовые программы (ессно с открытым кодом), киньте, пожалуйста, ссылку.

Заранее спасибо всем откликнувшимся.
Олег К. вне форума  
 
Непрочитано 03.10.2007, 18:51
#45
Netlog


 
Регистрация: 05.09.2005
Ростов на Дону
Сообщений: 71
<phrase 1=


Цитата:
Сообщение от Makswell
На то Автокад и является Автокадом - культовой, можно сказать, системой, что в нём есть возможность программировать.
И это не только мое мнение...
Из Корела не доводилось печатать? И там легко делается и нестолько страниц чертежей на одном листе бумаги, и один чертёж разбить на несколько листов, и маркеры для совмещения поставить и т.д. Без программирования.
Netlog вне форума  
 
Непрочитано 04.10.2007, 09:35
#46
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,996


>Олег К.
Посмотри здесь VxSsetSelect - ActiveX counterpart to 'ssget'. Передаешь ф-ции фильтр как ssget, выбор осушествляется ActiveX методами. И вообще там много чего интересного

Актуальная ссылка на архив https://web.archive.org/web/20200203...ownload.htm#32

Последний раз редактировалось VVA, 13.07.2024 в 21:30. Причина: актуальня ссылка
VVA вне форума  
 
Непрочитано 22.01.2008, 15:15
#47
DEM

YngIngKllr
 
Регистрация: 29.03.2005
СПб
Сообщений: 12,968


Чей то тема заглохла.
Вопрос следующего плана, требуется программа которая бы создавала несколько файлов по принципу 1 файл 1 лист, и при этом удаляла все что не нужно в из пространства модели.
__________________
Работаю за еду.
Working for food.
Für Essen arbeiten.
العمل من أجل الغذاء
Працую за їжу.
DEM вне форума  
 
Непрочитано 22.01.2008, 15:27
#48
Кулик Алексей aka kpblc
Moderator

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


Попробуй chspace и потом растаскивать листы
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 23.01.2008, 10:59
#49
СерJант

Инженер
 
Регистрация: 12.10.2007
Россия, Энгельс
Сообщений: 27


Обращаюсь к корифеям лиспа )
Пожелание к разработчикам программы: Отрисовка границ ВЭкрана в модели.

Програмку неплохо былобы доделать, чтобы полиния отрисовывалась в реальном времени с ВЭкраном, т.е. не приходилось каждый раз вводить TEST, например я меняю размер видового экрана и при этом в модели также меняется границы ВЭкрана, т.е. полная привязка границ в модели к ВЭкрану. Тоже самое и при добавлении, если копируешь или вставляешь новый ВЭкран то автоматом прорисовываются его границы и когда двигаешь ВЭкран относительно координат то также двигаются его границы и в модели. Если не автомат то по нажатию кнопки, только при этом чтобы старое положение границ затиралось, а не наслаивалось столько раз сколько ввел TEST, т.е. работа по принципу обновления...
Такое возможно сделать?
p.s. Думаю многим бы такая фишка пригодилась, т.к. ее было бы очень удобно использовать при компоновке...
С уважением.
СерJант вне форума  
 
Непрочитано 29.01.2008, 22:55
#50
DEM

YngIngKllr
 
Регистрация: 29.03.2005
СПб
Сообщений: 12,968


Тут реактор надо делать.
Что не оч хорошо.
__________________
Работаю за еду.
Working for food.
Für Essen arbeiten.
العمل من أجل الغذاء
Працую за їжу.
DEM вне форума  
 
Непрочитано 27.02.2008, 16:34
#51
СерJант

Инженер
 
Регистрация: 12.10.2007
Россия, Энгельс
Сообщений: 27


По поводу границ ВЭкрана, код работает не совсем коректно, точнее он работает на одном лайоте, если я работаю на следующем листе все границы видовых окон отрисовывает в одной куче и не там где отображаются объекты в вэкране, а совершенно в другом месте
Исправить это дело ни как нельзя?...

Последний раз редактировалось СерJант, 04.03.2008 в 15:45.
СерJант вне форума  
 
Непрочитано 01.04.2008, 14:08
#52
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,996


Вот еще один вариант без Express'ов (вариант #42)
Команда VPO - ViewPort Outline. Рисует полилинию по границам ВЭ в модели
Код:
[Выделить все]
;;Рисует полилинию по границам ВЭ в модели
;;ViewPort Outline
(defun C:VPO (/ adoc ss lst)
  (vl-load-com)
  (setq adoc (vla-get-activedocument (vlax-get-acad-object)))
  (if (= (getvar "tilemode") 0)
    (progn
      (if (= (getvar "cvport") 1)
        (progn
          (if (setq ss nil
                    ss (ssget '((0 . "VIEWPORT")))
              ) ;_ end of setq
            (setq lst (vl-remove-if 'listp (mapcar 'cadr (ssnamex ss))))
            (setq lst nil)
          ) ;_ end of if
        ) ;_ end of progn
        (setq lst
               (list
                 (vlax-vla-object->ename (vla-get-activepviewport adoc))
               ) ;_ end of list
        ) ;_ end of setq
      ) ;_ end of if
      (mapcar
        '(lambda (y / x ret)
           (setq x (entget y))
           (if (cdr (assoc 340 x))
             (setq ret (mapcar 'cdr
                               (vl-remove-if-not
                                 '(lambda (b) (= (car b) 10))
                                 (entget (cdr (assoc 340 x)))
                               ) ;_ end of vl-remove-if-not
                       ) ;_ end of mapcar
             ) ;_ end of setq
             (setq ret
                    (list
                      (list
                        (- (cadr (assoc 10 x)) (/ (cdr (assoc 40 x)) 2.))
                        (- (caddr (assoc 10 x))
                           (/ (cdr (assoc 41 x)) 2.)
                        ) ;_ end of -
                      ) ;_ end of list
                      (list
                        (+ (cadr (assoc 10 x)) (/ (cdr (assoc 40 x)) 2.))
                        (- (caddr (assoc 10 x))
                           (/ (cdr (assoc 41 x)) 2.)
                        ) ;_ end of -
                      ) ;_ end of list
                      (list
                        (+ (cadr (assoc 10 x)) (/ (cdr (assoc 40 x)) 2.))
                        (+ (caddr (assoc 10 x))
                           (/ (cdr (assoc 41 x)) 2.)
                        ) ;_ end of +
                      ) ;_ end of list
                      (list
                        (- (cadr (assoc 10 x)) (/ (cdr (assoc 40 x)) 2.))
                        (+ (caddr (assoc 10 x))
                           (/ (cdr (assoc 41 x)) 2.)
                        ) ;_ end of +
                      ) ;_ end of list
                    ) ;_ end of list
             ) ;_ end of setq
           ) ;_ end of if
           (vla-display (vlax-ename->vla-object y) :vlax-true) ;_Вклбючаем показ ВЭ
           (vla-put-mspace adoc :vlax-true) ;_Переходим в модель. Аналог  (command "_.mspace")
           (setvar "cvport" (cdr (assoc 69 x)))
           (setq ret (mapcar '(lambda (pt)
                                (setq pt (trans pt 3 2)
                                      pt (trans pt 2 1)
                                      pt (trans pt 1 0)
                                ) ;_ end of setq
                              ) ;_ end of lambda
                             ret
                     ) ;_ end of mapcar
           ) ;_ end of setq
           (setq ret (mapcar '(lambda (zz) (mapcar '+ zz '(0 0))) ret)) ;_Удаляем координату Z
           (setq ret (apply 'append ret))
           (vla-put-closed
             (vla-addlightweightpolyline
               (vla-get-modelspace adoc)
               (vlax-make-variant
                 (vlax-safearray-fill
                   (vlax-make-safearray
                     vlax-vbdouble
                     (cons 0 (- (length ret) 1))
                   ) ;_ end of vlax-Make-SafeArray
                   ret
                 ) ;_ end of vlax-SafeArray-Fill
               ) ;_ end of vlax-Make-Variant
             ) ;_ end of vla-AddLightWeightPolyline
             :vlax-true
           ) ;_ end of vla-Put-Closed
         ) ;_ end of lambda
        lst
      ) ;_ end of mapcar
      (if ss
        (vla-put-mspace ad :vlax-false)
      ) ;_ Переходим в лист. Аналог (command "._pspace"))
      (setq ss nil)
    ) ;_ end of progn
    (alert "Перейди в лист")
  ) ;_ end of if
) ;_ end of defun
Еще один вариант VPO здесь https://forum.dwg.ru/showpost.php?p=...1&postcount=31
__________________
Как использовать код на Лиспе читаем здесь

Последний раз редактировалось VVA, 08.12.2019 в 22:13. Причина: Добавлена ссылка на еще один вариант VPO
VVA вне форума  
 
Непрочитано 01.04.2008, 15:00
#53
Red Nova

ՃԱՐՏԱՐԱԳԵՏ, տ.գ.թ.
 
Регистрация: 23.10.2007
Торонто
Сообщений: 1,990
Отправить сообщение для Red Nova с помощью Skype™


Вот если бы можно было связать ВЭ и эту полилинию так, чтобы двигая полилинию и ВЭ двигался, то ..........
Вобщем хорошо бы было.
Red Nova вне форума  
 
Непрочитано 02.11.2016, 08:16
#54
Krieger

инженер (КМ)
 
Регистрация: 30.10.2004
Красноярск
Сообщений: 3,837


Цитата:
Сообщение от VVA Посмотреть сообщение
Вот еще один вариант без Express'ов (вариант #42)
Команда VPO - ViewPort Outline. Рисует полилинию по границам ВЭ в модели
Ошибочка есть маленькая:
Код:
[Выделить все]
      (if ss
        (vla-put-mspace adoc :vlax-false)
      ) ;_ Переходим в лист. Аналог (command "._pspace"))
__________________
Делай хорошо, плохо само получится.
Krieger вне форума  
 
Непрочитано 10.12.2016, 18:29
#55
Папаё

архитектор
 
Регистрация: 17.03.2015
респ. Коми
Сообщений: 55


А как сделать пакетную печать из листов?
__________________
архитектор
дома, эскизы
санаторий, дымоходы

Последний раз редактировалось Папаё, 13.12.2016 в 17:48. Причина: нет ответа
Папаё вне форума  
 
Непрочитано 21.03.2017, 19:06 Как разнести листы по разным файлам?
#56
AlexKniga


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


Заказчик прописал в ТЗ требование к чертежам в формате «DWG»:
Цитата:
1 файл – 1 лист. Оформление нескольких чертежей в одном файле НЕ ДОПУСКАЕТСЯ. В «модели» не должно содержаться лишней информации, только то что относится к листу.
Попытались так чертить — очень не удобно. Вернулись к привычному (в одном файле несколько листов), перед передачей заказчику разносим листы по отдельным файлам. Ручками это делать долго. Пытаемся автоматизировать.
1) Команда EXPORTLAYOUT вызывает ошибку eWasErased.
2) Установил LayoutManager. Работает, но плохо. Листы по отдельным файлам разносит, но пространство модели не сепарирует — модель полностью дублирует первообразную. Пытаюсь почистить модель скриптами VVA.
При запуске скрипта из #41:
Цитата:
; error: LOAD failed: "chspace.lsp"
при следующем запуске:
Цитата:
; error: no function definition: _MIP-GET-POINT-VIEWPORT
из #52:
Цитата:
; error: bad argument type: VLA-OBJECT nil
AutoCAD 2012 64bit не LT, не вертикалка, не локализован.
Миниатюры
Нажмите на изображение для увеличения
Название: AutoCAD-Error.jpg
Просмотров: 31
Размер:	48.0 Кб
ID:	185383  
AlexKniga вне форума  
 
Непрочитано 21.03.2017, 19:15
#57
kacugu

начинающий инженер-гидротехник
 
Регистрация: 18.04.2010
Санкт-Петербург
Сообщений: 911


Offtop: а у вас все слои разблокированы?
kacugu вне форума  
 
Непрочитано 21.03.2017, 23:50
#58
Кулик Алексей aka kpblc
Moderator

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


И что говорит _.audit?
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 22.03.2017, 12:19
#59
AlexKniga


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


Total errors found 0 fixed 0
Erased 0 objects

----- добавлено через 49 сек. -----
Заблокированных слоев нет; есть невидимые.

----- добавлено через ~19 мин. -----
Сейчас пробую пойти другим путем.
1. Публикация или печать в «DWF6 ePlot.pc3».
2. Конвертация dwf -> dwg.

Если у кого-нибудь есть автокадовский принтер «DWG to DWG.pc3», буду очень признателен.
AlexKniga вне форума  
 
Непрочитано 23.03.2017, 16:53
#60
maratovich


 
Регистрация: 12.07.2009
г. Самара
Сообщений: 2,437
Отправить сообщение для maratovich с помощью Skype™


Цитата:
Сообщение от AlexKniga Посмотреть сообщение
1 файл – 1 лист. Оформление нескольких чертежей в одном файле НЕ ДОПУСКАЕТСЯ. В «модели» не должно содержаться лишней информации, только то что относится к листу.
Правильно говорит, значит архив у них работает.

Цитата:
Сообщение от AlexKniga Посмотреть сообщение
1) Команда EXPORTLAYOUT вызывает ошибку eWasErased.
Приложите файл примера, посмотрим в чём проблема.

Цитата:
Сообщение от AlexKniga Посмотреть сообщение
Листы по отдельным файлам разносит, но пространство модели не сепарирует — модель полностью дублирует первообразную.
А зачем разносить - в задании 1 файл – 1 лист подразумевается всё в модели.
maratovich вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > AutoCAD > Как разнести листы по разным файлам?

Опции темы Поиск в этой теме
Поиск в этой теме:

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