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

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

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

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

Бывают такие случаи - что надо отдавать цифровую версию файла,
но в этом файле заложен весь проет. и все разбито по листам во вьюпортах. Можно ли разбить листы на отдельные файлы - но так чтобы все обьекты двигались и с ними можно было работать ?
(ну кроме конечно банальной обрезки модели, передачи jpeg-ов и
dwf-ов)
Подскажите если это возможно? 8)
Просмотров: 21664
 
Непрочитано 22.08.2007, 12:54
#21
RomaV


 
Регистрация: 21.03.2007
Санкт-Петербург
Сообщений: 2,701


Цитата:
Сообщение от maksimys
там в express tools - есть закрыть все и сохранить.
так что ты опоздал.... и лиспов не надо.
Чего и комп выключает? :roll:
RomaV вне форума  
 
Непрочитано 22.08.2007, 13:01
#22
Makswell

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


Насчет проги (пост 16):
Я тут подумал, в принципе может быть подойдет такой алгоритм.
1. В исходном файле:
- на листе предлагается выбрать объекты с базовой (например) точкой
- набор как-то запоминается
- ищутся ВЭ, которые вошли в набор
- в углах ВЭ ставятся, например, точки (пока для простоты допустим, что они прямоугольные - поэтому две точки по диагонали)
- CHSPACE этих точек (пар точек) в модель
- в модели выбираются объекты, ограниченные этими парами точек
- набор как-то запоминается
- точки удаляются, осуществляется переход на лист и предлагается открыть/создать новый файл
2. В новом файле:
- на листе вставляются объекты с листа исходного файла (1-й набор)
- в модели соответственно вставляются объекты из модели исходного файла со своими координатами (2-й набор)
- осуществляется переход на лист, включается видимость каждого ВЭ

Лисп я понимаю только на уровне Command, поэтому может быть алгоритм получился таким корявым.
Уважаемые программисты, интересно ваше мнение насчет всего этого. Может это вообще невозможно реализовать...
Makswell вне форума  
 
Непрочитано 22.08.2007, 14:39
#23
Олег К.

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


>> RomaV
А что мешает написать VBA-приложение которое закроет КАД и выключит компьютер? Уж если АвтоКАД разговаривать научили, то выключать комп еще проще, буквально в течении 5 секунд .

>> Makswell
Да я ж просто поинтересовался, нет ли у кого подобной проги. Мне для написания такого просто опыта не хватает, экспы маловато (всего то 117 пунктов) .

Теперь серьезнее.
- в свойствах видового экрана хранится координата центра (в координатах модели), масштаб и размеры окна. Можно вычислить точки для секущей линии выделения в модели.
- если в видовом экране выключены/заморожены какие-то слои, значит при выделении объектов в модели это надо учесть. При копировании иксрефов скидываются настройки видимости слоев - опять же нужна проверка.
- в дизайнцентре можно скопировать лист со всем содержимым из другого файла. Есть ли такая функция в ЛИСПе? Лично не встречал, значит использовать выделение всего и копирование.

И самое главное: в контекстное меню ярлыка листа добавить новый пункт, скажем, "экспорт в новый файл", к которому и прикрутить прогу.

Реализовать подобное возможно, но долго, сложно и дорого. :?
Олег К. вне форума  
 
Непрочитано 22.08.2007, 15:33
#24
Vova

Engineer
 
Регистрация: 05.09.2003
New-York
Сообщений: 10,288


Цитата:
Сообщение от maksimys
... А все основное лежит в модели :!:
весь проект начиная с сетей и заканчивая благоустройством.
А что, весь проект делался одним исполкнителем? Команда Chspace работает в обеих направлениях
Vova вне форума  
 
Непрочитано 22.08.2007, 16:00
#25
VVA

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


Могу предложить следующий алгоритм
1. Здесь выложен пример команды, русующей полилинию по границе ВЭ в модели
2. Здесь выложена комaнда, выделяющая снаружи pline
3. Нажать del

Последний раз редактировалось VVA, 21.01.2008 в 11:04. Причина: Действующая ссылка в №2
VVA вне форума  
 
Автор темы   Непрочитано 22.08.2007, 16:15
#26
maksimys

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


Цитата:
Сообщение от Vova
Цитата:
Сообщение от maksimys
... А все основное лежит в модели :!:
весь проект начиная с сетей и заканчивая благоустройством.
А что, весь проект делался одним исполкнителем? Команда Chspace работает в обеих направлениях
нет не одним - по генплану приходиться сгребать все в кучу, и размещать на плане - не кто как хочет а чтобы дружно все жили.
поэтому чтобы не ворочать все листы при малейшом изменении.
maksimys вне форума  
 
Непрочитано 22.08.2007, 21:08
#27
Vova

Engineer
 
Регистрация: 05.09.2003
New-York
Сообщений: 10,288


Все валить в один файл не есть правило хорошего тона. Лучше создать фолдер с именем проекта и туда складывать все файлы разных специальностей, раз проект мелкий
Vova вне форума  
 
Автор темы   Непрочитано 23.08.2007, 09:21
#28
maksimys

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


Цитата:
Сообщение от Vova
Все валить в один файл не есть правило хорошего тона. Лучше создать фолдер с именем проекта и туда складывать все файлы разных специальностей, раз проект мелкий
честно говоря - про создание папки с проектом - может и хорошая идея - тогда разверни эту тему и расскажи и покажи - что куда ? и как ? 8)
maksimys вне форума  
 
Непрочитано 23.08.2007, 11:39
#29
Олег К.

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


>> VVA
По п.1: да, примерно так и думал, но данный код работает только с прямоугольными вьюпортами. Насколько часто встречаются хитровырезанные окна? У нас они практически не применяются, так что стоит ли мучаться?

>> maksimys
Хранение документов на дисках - через поиск ищи любые темы по СТП (особенно "Корпоративные стандарты ..." - удачи дочитать ) здесь, на autocad.ru и cadmaster.ru. Хоть там больше по внутренней организации файлов, встречается и нужное.
Примерно вот так:
[ATTACH]1187854412.gif[/ATTACH]
вместо иксов ставится номер объекта, в папку el_version собираются готовые картинки и pdfки для выдачи заказчику, визуализация - раскрашенные фасады и трехмерка.
Олег К. вне форума  
 
Непрочитано 23.08.2007, 13:03
#30
Makswell

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


Цитата:
>> VVA
По п.1: да, примерно так и думал, но данный код работает только с прямоугольными вьюпортами. Насколько часто встречаются хитровырезанные окна?
Также интересно было запустить эту прогу. Интересный эффект наблюдается, если в ВЭ показывается 3D модель.
Makswell вне форума  
 
Непрочитано 23.08.2007, 13:36
#31
VVA

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


>Олег К
Я имел ввиду 2-й пост по ссылке. Строит полилинию и у хитроподрезанных ВЭ.
Здесь собрал все в кучу
Код:
[Выделить все]
;|============================================================================== 
*  Получение списка списков точек вершин ВЭ листа в координатах листа и модели 
*  Если ВЭ не существует, возвращает nil. 
*  Структура списка ((Точки_ВЭ1_Лист Точки_ВЭ1_Модель ename_ВЭ1) ... (Точки_ВЭN_Лист Точки_ВЭN_Модель ename_ВЭN))
*  http://www.autocad.ru/cgi-bin/f1/board.cgi?t=27187wE
*  http://www.arcada.com.ua/forum/viewtopic.php?t=850
*  layuot - имя листа (getvar "CTAB") или (LAYOUTLIST)
*  Возвращает список ((Точки_ВЭ1_Лист Точки_ВЭ1_Модель ename_ВЭ1) ... (Точки_ВЭN_Лист Точки_ВЭN_Модель ename_ВЭN)) 
=============================================================================|; 
(defun _mip-get-point-viewport ( layout / t10 t12 m res1 res2 nb) 
 (mapcar  '(lambda ( y / res1 x)(setq x (entget y))
  (if (cdr (assoc 340 x))
  (setq res1 (mapcar 'cdr (vl-remove-if-not '(lambda (b) (= (car b) 10))
			    (entget (cdr (assoc 340 x))))))
  (setq res1 (list
	       (list (- (cadr (assoc 10 x))(/ (cdr (assoc 40 x)) 2.))
		     (- (caddr (assoc 10 x))(/ (cdr (assoc 41 x)) 2.)))
               (list (+ (cadr (assoc 10 x))(/ (cdr (assoc 40 x)) 2.)) 
                     (- (caddr (assoc 10 x))(/ (cdr (assoc 41 x)) 2.)))
               (list (+ (cadr (assoc 10 x))(/ (cdr (assoc 40 x)) 2.)) 
                     (+ (caddr (assoc 10 x))(/ (cdr (assoc 41 x)) 2.)))
               (list (- (cadr (assoc 10 x))(/ (cdr (assoc 40 x)) 2.)) 
                     (+ (caddr (assoc 10 x)) (/ (cdr (assoc 41 x)) 2.))))))
     (setq t10 (cdr(assoc 10 x));_Координаты центра ВЭ в листе 
           t12 (if (equal (cdr(assoc 17 x)) '(0 0 0) 1e-6)(cdr(assoc 12 x))(cdr(assoc 17 x)));_Координаты центра ВЭ в Модели 
             m (/ (cdr(assoc 45 x))(cdr(assoc 41 x))) ;_Коэфф. пересчета в модель 
          res2 (mapcar '(lambda(y)(mapcar '+ (mapcar '* (mapcar '- y t10)(list m m m)) t12)) res1)) 
          (list res1 res2 y)) ;_ end of lambda
          ;;;69 1 - исключаем vieport
       (vl-remove-if '(lambda (x)(member (cons 69 1) (entget x)))
	 (if (setq nb (setq nb (ssget "_X" (list '(0 . "VIEWPORT")
                                                 '(-4 . "<>")
                                                 '(69 . 1)
                                                 (cons 410 layout)))))
		   (vl-remove-if 'listp (mapcar 'cadr (ssnamex nb)))
		   nil))) ;_ end of mapcar
  ) ;_ end of defun 

;;Пример использования 
;;Рисует полилинию по границам ВЭ в модели 
(defun C:TEST () 
  (vl-load-com) 
  ;Видовой экран должен быть 
  (mapcar '(lambda (ret) 
        (setq point_list_ctab (car ret) 
         point_list_model (cadr ret) 
         crs (apply 'append point_list_model) 
         var (vlax-make-variant (vlax-safearray-fill 
             (vlax-make-safearray vlax-vbDouble 
          (cons 0 (1- (length crs)))) crs)) 
         ) 
        ;Добавляем полилинию в модель 
        (vla-put-closed (vla-addLightWeightPolyline (vla-get-ModelSpace(vla-get-activedocument(vlax-get-acad-object))) var) :vlax-true) 
        ) 
     (_mip-get-point-viewport (getvar "CTAB")) 
     ) 
  (princ) 
  )
Перейти в лист, где есть Видовые экраны и набрать TEST.
VVA вне форума  
 
Автор темы   Непрочитано 23.08.2007, 14:13
#32
maksimys

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


VVA - не а не работает, точнее не учитывает местную и мировую СК
поворачивает контур вьюпорта на мировую сист. координат.
а так контур переносит в модель. 8)
maksimys вне форума  
 
Непрочитано 23.08.2007, 14:32
#33
Олег К.

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


>> VVA
Прошу прощения, умудрился не заметить, что res1 определяется два раза: для простого ВЭ и для ВЭ с полилинией .
Кстати, недавно тут тема появлялась, там спрашивали как сделать ВЭ с дуговыми границами (ну или круглый) - надеюсь только одному человеку такое понадобилось.

Насчет систем координат - проблем не возникало, поскольку у нас все выполнено в мировой, и мало кто догадывается что могут быть другие. На генпланах такое применяется, но редко.
Олег К. вне форума  
 
Непрочитано 23.08.2007, 14:55
#34
VVA

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


А зачем ПСК на листе?
А сделать круглый VIEWPORT не проблема, пару строк кода написать, но зачем?
VVA вне форума  
 
Непрочитано 23.08.2007, 15:35
#35
Олег К.

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


ПСК не на листе. Внутри видового экрана определена ПСК, поставлена текущей и все выровнено командой plan. В другом вьюпорте и в модели текущая - МСК. В результате работы программы вьюпорт с ПСК неправильно проецируется в модель.
[ATTACH]1187868338.gif[/ATTACH]
Внешняя рамка голубенького цвета - вьюпорт на листе, внутри линии оранжевого цвета - проекция данного ВЭ в модель, ноль ПСК - там где перекрестие курсора.

Да так ли уж часто встречается в чертежах ПСК? Если кому оно нужно (в контексте данной темы) - высказывайтесь. По умолчанию будет принято что учитывать ПСК не нужно.
Олег К. вне форума  
 
Автор темы   Непрочитано 23.08.2007, 15:52
#36
maksimys

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


Цитата:
Сообщение от Олег К.
ПСК не на листе. Внутри видового экрана определена ПСК, поставлена текущей и все выровнено командой plan. В другом вьюпорте и в модели текущая - МСК. В результате работы программы вьюпорт с ПСК неправильно проецируется в модель.
[ATTACH]1187868338.gif[/ATTACH]
Внешняя рамка голубенького цвета - вьюпорт на листе, внутри линии оранжевого цвета - проекция данного ВЭ в модель, ноль ПСК - там где перекрестие курсора.

Да так ли уж часто встречается в чертежах ПСК? Если кому оно нужно (в контексте данной темы) - высказывайтесь. По умолчанию будет принято что учитывать ПСК не нужно.
Не ну какие умолчания. Скажи как ты тогда чертежи так же под углом
в печать пускаешь? Или все таки поварачиваешь пар-но рамке.
Уж доделай - коли взялся :wink:
maksimys вне форума  
 
Автор темы   Непрочитано 23.08.2007, 15:56
#37
maksimys

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


взгляни - та что потолще это вьюпорт -
а та что поперек чертежа - это после теста - контур в модели..
:?:
[ATTACH]1187870166.jpg[/ATTACH]
maksimys вне форума  
 
Непрочитано 23.08.2007, 16:41
#38
VVA

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


При наличие Express'ov можно так
Код:
[Выделить все]
;|============================================================================== 
*  Получение списка списков точек вершин ВЭ листа в координатах листа и модели 
*  Если ВЭ не существует, возвращает nil. 
*  Структура списка ((Точки_ВЭ1_Лист Точки_ВЭ1_Модель ename_ВЭ1) ... (Точки_ВЭN_Лист Точки_ВЭN_Модель ename_ВЭN)) 
*  http://www.autocad.ru/cgi-bin/f1/board.cgi?t=27187wE 
*  http://www.arcada.com.ua/forum/viewtopic.php?t=850 
*  layuot - имя листа (getvar "CTAB") или (LAYOUTLIST) 
*  Возвращает список ((Точки_ВЭ1_Лист Точки_ВЭ1_Модель ename_ВЭ1) ... (Точки_ВЭN_Лист Точки_ВЭN_Модель ename_ВЭN)) 
=============================================================================|; 
(defun _mip-get-point-viewport ( layout / t10 t12 m res1 res2 nb) 
 (mapcar  '(lambda ( y / res1 x)(setq x (entget y)) 
  (if (cdr (assoc 340 x)) 
  (setq res1 (mapcar 'cdr (vl-remove-if-not '(lambda (b) (= (car b) 10)) 
             (entget (cdr (assoc 340 x)))))) 
  (setq res1 (list 
          (list (- (cadr (assoc 10 x))(/ (cdr (assoc 40 x)) 2.)) 
           (- (caddr (assoc 10 x))(/ (cdr (assoc 41 x)) 2.))) 
               (list (+ (cadr (assoc 10 x))(/ (cdr (assoc 40 x)) 2.)) 
                     (- (caddr (assoc 10 x))(/ (cdr (assoc 41 x)) 2.))) 
               (list (+ (cadr (assoc 10 x))(/ (cdr (assoc 40 x)) 2.)) 
                     (+ (caddr (assoc 10 x))(/ (cdr (assoc 41 x)) 2.))) 
               (list (- (cadr (assoc 10 x))(/ (cdr (assoc 40 x)) 2.)) 
                     (+ (caddr (assoc 10 x)) (/ (cdr (assoc 41 x)) 2.)))))) 
     (setq t10 (cdr(assoc 10 x));_Координаты центра ВЭ в листе 
           t12 (if (equal (cdr(assoc 17 x)) '(0 0 0) 1e-6)(cdr(assoc 12 x))(cdr(assoc 17 x)));_Координаты центра ВЭ в Модели 
             m (/ (cdr(assoc 45 x))(cdr(assoc 41 x))) ;_Коэфф. пересчета в модель 
          res2 (mapcar '(lambda(y)(mapcar '+ (mapcar '* (mapcar '- y t10)(list m m m)) t12)) res1)) 
          (list res1 res2 y)) ;_ end of lambda 
          ;;;69 1 - исключаем vieport 
       (vl-remove-if '(lambda (x)(member (cons 69 1) (entget x))) 
    (if (setq nb (setq nb (ssget "_X" (list '(0 . "VIEWPORT") 
                                                 '(-4 . "<>") 
                                                 '(69 . 1) 
                                                 (cons 410 layout))))) 
         (vl-remove-if 'listp (mapcar 'cadr (ssnamex nb))) 
         nil))) ;_ end of mapcar 
  ) ;_ end of defun 

;;Пример использования 
;;Рисует полилинию по границам ВЭ в модели 
(defun C:TEST () 
  (vl-load-com)
  (if (null chspace)(load "chspace.lsp"))
;;;  (setq ret (car (_mip-get-point-viewport (getvar "CTAB")) ))
  (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))
  (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) 
  )
Или анализировать поля 110,111,112 в viewport'e
VVA вне форума  
 
Автор темы   Непрочитано 23.08.2007, 16:55
#39
maksimys

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


:?: что-то не работает

Command: _appload test2.lsp successfully loaded.


Command:
Command:
Command: test
_.pspace
Already in paper space.

Command: _PLINE
Specify start point: _none
Current line-width is 0.0000
Specify next point or [Arc/Halfwidth/Length/Undo/Width]: _none
Specify next point or [Arc/Close/Halfwidth/Length/Undo/Width]: _none
Specify next point or [Arc/Close/Halfwidth/Length/Undo/Width]: _none
Specify next point or [Arc/Close/Halfwidth/Length/Undo/Width]: _close
Command: _.mspace
Command: ; error: AutoCAD variable setting rejected: "CVPORT" 4
- все.
контур не появляется :?
maksimys вне форума  
 
Непрочитано 23.08.2007, 17:22
#40
Олег К.

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


>> maksimys
Просто какой чертеж был открыт, на том пример и показал. Выше уже говорил, у нас определение ПСК встречается только в генпланах, если я с ними работаю.

>> VVA
Это рисовать контур окна в листе, а потом его chspace'м в модель? Интересно, хотя при отсутствии экспрессов не работает. Всеже надежнее математически пересчитывать. Скорее всего так и буду пробовать.

Эт чего ж? Выходит я подписался на создание проги копирования одного из листов в отдельный файл? Одна-а-ако! [sm2102]
Олег К. вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > AutoCAD > Как разнести листы по разным файлам?

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

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