Каталог программ для проектирования
dwg.ru forum rss xml
| Правила | Регистрация | Пользователи | Поиск | Сообщения за день | Все разделы прочитаны |  Справка по форуму |

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

LISP. Создание листов и видовых экранов на них

Версия для печати
 
Ответ
Опции темы Поиск в этой теме
Непрочитано 21.08.2015, 13:33 8 | 1
LISP. Создание листов и видовых экранов на них
Andrey_13
 
Инженер-проектировщик РЗА, ПА, ВК
 
Екатеринбург
Регистрация: 06.02.2014
Сообщений: 31

Andrey_13 на форуме Вставить имя

Вызов командой "_AL".
Указать слой с рамками чертежей (рамки выполнить в виде прямоугольников либо в виде блоков). Программа создаёт листы с видовыми экранами, совпадающими c рамками листов.
Программа нумерует листы по порядку следования рамок в одну строку или в один столбец (либо слева направо, либо сверху вниз). При расположении рамок матрицей - листы будут созданы, но нумерация вкладок потеряет упорядоченность.
Обновление (от старых к новым):
- предусмотрена установка параметров листов (установка принтера DWG to PDF.pc3, подбор ближайших стандартных форматов (A0,1,2,3,4), таблица стилей печати monochrome);
- убрано слово "Лист" из наименования листов;
- для нестандартных форматов листов устанавливается пустое устройство печати;
- улучшение для размещающих рамки форматов в пространстве модели вертикально;
- вместо ввода имени слоя с рамками определение слоя указанием объекта;
- предусмотрено блокирование создаваемых видовых экранов;
- предусмотрен ввод масштаба;
- исправлено завершение программы при пустом выборе объекта для определения слоя с форматами;
- исправлены мелкие ошибки, предусмотрен ввод номера первого листа при работе с удалением существующих листов;
- предусмотрено зумирование создаваемых листов, команда вызова "_AddLay" в целях ускорения набора сокращена до "_AL".
----------------------------
Выложена дополнительная программа создания группы видовых экранов в пространстве листа AVP.lsp. Выход из программы клавишей Esc.
Обновление:
- расширены пределы указания масштабов видовых экранов;
- показана рамка видового экрана при вставке.

Вложения
Тип файла: lsp AVP.LSP (2.9 Кб, 884 просмотров)
Тип файла: lsp AddLay.LSP (12.6 Кб, 940 просмотров)


Последний раз редактировалось Andrey_13, 02.09.2015 в 08:55.
Просмотров: 38435
 
Непрочитано 21.08.2017, 08:48
#161
posetitel


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


а какой косяк может быть в блоке? как функция определяет границы? в блоке внешний контур вычерчен полилинией, у нее все свойства "по блоку", должно работать
posetitel вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Непрочитано 21.08.2017, 10:10
#162
petro_f


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


Цитата:
Сообщение от posetitel Посмотреть сообщение
а какой косяк может быть в блоке? как функция определяет границы? в блоке внешний контур вычерчен полилинией, у нее все свойства "по блоку", должно работать
Откройте свой блок - там куча федбеков и двойной выбор, походу из-за них косяк.

Функция определения границ рамки не моя и я её не разбирал, да и походу автор исходного плагина сам её на форуме взял.


Код:
[Выделить все]
 ;;; Функция определения границ рамки формата для динамического блока
;;; Взято здесь http://forum.dwg.ru/showpost.php?p=480876&postcount=120
(defun GetBoundingBox_dynblock
	   (ent / lst ins_pt min_point max_point 3d_polarp)
	   ;|
(entmakex
  (cons	'(0 . "LINE")
	(mapcar 'cons '(10 11) (getboundingbox_dynblock nil))
  ) ;_ end of append
) ;_ end of entmakex
|;
      (if
	(and (or ent
		 (= (type (setq	ent (vl-catch-all-apply
				      (function
					(lambda	()
					  (car (entsel "\n???? <??????> : "))
					) ;_ end of lambda
				      ) ;_ end of function
				    ) ;_ end of vl-catch-all-apply
			  ) ;_ end of setq
		    ) ;_ end of type
		    'ename
		 ) ;_ end of =
	     ) ;_ end of or
	     (setq ent (vlax-ename->vla-object ent))
	     (vlax-property-available-p ent 'isdynamicblock)
	     (equal (vla-get-isdynamicblock ent) :vlax-true)
	) ;_ end of and
	 (progn
	   (vlax-for item
		     (vla-item
		       (vla-get-blocks
			 (vla-get-activedocument (vlax-get-acad-object))
		       ) ;_ end of vla-get-blocks
		       (vla-get-name ent)
		     ) ;_ end of vla-item
	     (if (equal (vla-get-visible item) :vlax-true)
	       (setq lst (cons item lst))
	     ) ;_ end of if
	   ) ;_ end of vlax-for
	   (setq
	     ins_pt (vlax-safearray->list
		      (vlax-variant-value
			(vla-get-insertionpoint ent)
		      ) ;_ end of vlax-variant-value
		    ) ;_ end of vlax-safearray->list
	     lst
		    (vl-remove
		      nil
		      (mapcar
			(function
			  (lambda (x / minp maxp)
			    (if
			      (not (vl-catch-all-error-p
				     (vl-catch-all-apply
				       (function
					 (lambda ()
					   (vla-getboundingbox x 'minp 'maxp)
					 ) ;_ end of lambda
				       ) ;_ end of function
				     ) ;_ end of vl-catch-all-apply
				   ) ;_ end of vl-catch-all-error-p
			      ) ;_ end of not
			       (list (cons "min" (vlax-safearray->list minp))
				     (cons "max" (vlax-safearray->list maxp))
			       ) ;_ end of list
			    ) ;_ end of if
			  ) ;_ end of lambda
			) ;_ end of function
			lst
		      ) ;_ end of mapcar
		    ) ;_ end of vl-remove
	     lst    (mapcar
		      (function
			(lambda	(mins)
			  (mapcar
			    (function
			      (lambda (fun)
				(apply
				  (read mins)
				  (mapcar
				    (function fun)
				    (mapcar
				      (function
					(lambda	(pts)
					  (cdr (assoc mins pts))
					) ;_ end of lambda
				      ) ;_ end of function
				      lst
				    ) ;_ end of mapcar
				  ) ;_ end of mapcar
				) ;_ end of apply
			      ) ;_ end of lambda
			    ) ;_ end of function
			    (list car cadr caddr)
			  ) ;_ end of mapcar
			) ;_ end of lambda
		      ) ;_ end of function
		      (list "min" "max")
		    ) ;_ end of mapcar
	     lst    (mapcar
		      (function
			(lambda	(ept)
			  (mapcar
			    (function
			      (lambda (coord_pt coord_line coord_ins)
				(+
				  (*
				    coord_pt
				    ((eval
				       (read (strcat "vla-get-"
						     coord_line
						     "EffectiveScaleFactor"
					     ) ;_ end of strcat
				       ) ;_ end of read
				     ) ;_ end of eval
				      ent
				    )
				  ) ;_ end of *
				  coord_ins
				) ;_ end of +
			      ) ;_ end of lambda
			    ) ;_ end of function
			    ept
			    '("X" "Y" "Z")
			    ins_pt
			  ) ;_ end of mapcar
			) ;_ end of lambda
		      ) ;_ end of function
		      lst
		    ) ;_ end of mapcar
	   ) ;_ end of setq
	 ) ;_ end of progn
      ) ;_ end of if
    ) ;_ end of def
__________________
Если ты разговариваешь с идиотом - убедись что он не занят тем же!

Последний раз редактировалось petro_f, 21.08.2017 в 10:19.
petro_f вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Непрочитано 21.08.2017, 13:05
#163
tujn08


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


Цитата:
Сообщение от perpetule Посмотреть сообщение
Есть специализированный
VIEWSBLK.lsp
В чем его прелесть? увы нет времени заюзать.
tujn08 вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Непрочитано 21.08.2017, 17:21
#164
skkkk

AutoCAD_2008->2011
 
Регистрация: 20.03.2008
Московская область
Сообщений: 2,102


tujn08, прелесть в том, что одной кнопкой можно заблокировать все видовые экраны, а другой - разблокировать. Ничего экстраординарного. Или я не понял вопроса?
Но я бы, коснись меня такая нужда, "запаковал" бы всё это дело в некое подобие системной переменной, значение которой менялось бы на противоположное при запуске одной команды. Другой вопрос, насколько это удобно - не всегда все экраны должны быть в одинаковом состоянии. Правда, неясным был бы момент, если половина экранов заблокирована, а вторая половина заблокирована, как поступать в данном случае. Скорее всего я бы сделал ее (переменую) сохраняемой в реестре, и она запоминалась бы между сеансами. А при открытии файла происходило бы чтение этой "импровизированной" переменной и всем экранам назначалось бы соответствующее состояние.
skkkk на форуме вставить имя Обратить внимание модератора на это сообщение  
 
Непрочитано 22.08.2017, 14:10
#165
tujn08


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


Понятно, спасибо. Я двигаюсь к другой цели. Скоро выложу GIF результат работы.
А пока вопрос по оформлению:
Кто подскажешь норматив по оформлению миниатюр на плане?
Смотрю на готовые чертежи - и эти миниатюры оформляются по разному.

----- добавлено через ~25 мин. -----
Вопрос к тому, что
1) кто-то на листе располагают несколько видовых экранов, а другие строго один.
2) кто-то показывает полную схему листов, а другие только ближайшие.
3) кто-то показывает схему в масштабе листа, формата/ориентации листа и относительного положения, а другие схематично

И что делать, если как раз несколько видовых экранов на листе.
Конечно все индивидуально всегда, но все же должен быть компромисс.

----- добавлено через ~2 ч. -----
Интерактивная нарезка видовых экранов с компоновкой на листе AutoCAD
GIF сделать не смог, но есть краткое видео.

Логика такая:
1) первый лист - это лист план АБК (административно-бытовой корпус). Лист с ним оформляют отдельно/вручную и там другой масштаб.
2) инженер обводит трассу - это границы будущих видовых экранов
3) указывает масштаб в "Модель" и "ЛИСТ" (на видео не показано)
4) размещает первый лист (формат и ориентацию можно менять кнопками на клавиатуре). Пока только А1 и А2
по границам красной рамки (формата) инженер видит как видовой экран будет обрезан - дабы не обрезать мачты и прочую информацию
5) дальше появляется зеленая рамка и остаток ненарезанной трассы. Зеленая рамка - это "тень" красной рамки - куда попадет линия разреза нужно смотреть по ней.
можно отставь один видовой экран, а можно сколько угодно.
6) когда нарезана вся трасса - создаются листы в масштабе 1:1 реального размера формата, вставляется рамка формата (ее можно заполнять сразу нужной информацией программно), и вставляются видовые экраны так как было в "Модель".
7) так же на линия разреза отрисовываются линии и надписи - номер линии разреза или продолжении листа.
8) дальше вставится схема листов.
Миниатюры
Нажмите на изображение для увеличения
Название: 1.png
Просмотров: 15
Размер:	13.3 Кб
ID:	192555  

Последний раз редактировалось tujn08, 22.08.2017 в 14:37.
tujn08 вне форума вставить имя Обратить внимание модератора на это сообщение  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Готовые программы > LISP. Создание листов и видовых экранов на них

Инженерные консультации
Опции темы Поиск в этой теме
Поиск в этой теме:

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

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сбиваются масштабы аннотаций и видовых экранов (из-за размерности юнита ?) Tyhig AutoCAD 9 15.09.2015 15:53
Автоматическое создание Листов (layot) с встроенной рамкой. Ассистент содания Листов. Что я делаю не так? Couleurs du Sud AutoCAD 14 16.06.2015 20:17
Проекции видовых экранов листов в модели (= отображение viewport на layout в model) I.Van AutoCAD 6 02.08.2012 15:31
Содержимое видовых экранов (в ПЛ) плавает при кручении колеса мыши JokerrSergh AutoCAD 29 29.12.2008 13:16

|| Главная || Каталог САПР || Тендеры || Публикации || Объявления || Биржа труда || Download || Галерея ||
|| Библиотека || Кунсткамера || Каталог предприятий || Контакты || Файлообменник || Блоги ||


Размещение рекламы