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

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

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

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

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

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

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


Последний раз редактировалось Andrey_13, 28.02.2018 в 21:17. Причина: Добавление ссылки на альтернативную версию программы.
Просмотров: 62424
 
Непрочитано 21.08.2017, 08:48
#161
posetitel


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


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


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


Цитата:
Сообщение от 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
Сообщений: 220


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

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


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


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


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

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

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

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

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

Последний раз редактировалось tujn08, 22.08.2017 в 14:37.
tujn08 вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Непрочитано 26.10.2017, 09:54
#166
IvanMosc


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


Добрый день у меня вопрос по лиспу.
При первом использовании был глюк, когда видовой экран на листе А4 сдвигался относительно самого листа по диагонали ~5мм, т.е. видовой экран вставал четко на "разметку пунктир" а не на край листа. И был такой глюк только с А4.
Позже потребовалось переустановить автокад... раз 5 подряд.. И в итоге этот же сдвиг наблюдается теперь еще и в формате А3 альбом. Другие не проверял.
От чего это зависит и как это нормализовать?
IvanMosc вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Непрочитано 26.10.2017, 10:16
#167
petro_f


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


Цитата:
Сообщение от IvanMosc Посмотреть сообщение
Добрый день у меня вопрос по лиспу.
При первом использовании был глюк, когда видовой экран на листе А4 сдвигался относительно самого листа по диагонали ~5мм, т.е. видовой экран вставал четко на "разметку пунктир" а не на край листа. И был такой глюк только с А4.
Позже потребовалось переустановить автокад... раз 5 подряд.. И в итоге этот же сдвиг наблюдается теперь еще и в формате А3 альбом. Другие не проверял.
От чего это зависит и как это нормализовать?
Добрый день, IvanMosc Вопрос относится к какой версии плагина? К версии, которая расположена в шапке поста или к плагину в сообщении #92? Они теперь настолько разные, что надо уточнять

----- добавлено через ~3 мин. -----
Обновил плагин в #92 посте. Что обновлено - там же лог изменений пункт 19.
__________________
Если ты разговариваешь с идиотом - убедись что он не занят тем же!
petro_f вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Непрочитано 26.10.2017, 12:18
#168
IvanMosc


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


из шапки
автокад 16

Последний раз редактировалось IvanMosc, 26.10.2017 в 12:26.
IvanMosc вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Непрочитано 26.10.2017, 21:03
#169
petro_f


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


Цитата:
Сообщение от IvanMosc Посмотреть сообщение
из шапки
автокад 16
Тогда увы и ах...
Автор давно молчит.
__________________
Если ты разговариваешь с идиотом - убедись что он не занят тем же!
petro_f вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Непрочитано 27.10.2017, 01:00
#170
skkkk

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


Цитата:
Сообщение от tujn08 Посмотреть сообщение
Кто подскажешь норматив по оформлению миниатюр на плане?
Смотрю на готовые чертежи - и эти миниатюры оформляются по разному.
Как-то я проглядел тогда это сообщение.
Обсуждалось это не так давно: Разбивка линейного объекта по листам. Как делать схему компановки листов?
Я там предложил свой вариант, который был вроде бы одобрен мнением большинства, единственное, что изменилось с тех пор - так это только то, что я стал располагать эти схемки прямо над основной надписью, чтобы можно было видеть, что за лист, не разворачивая его, что весьма логично (это по совету одного из формумчан оттуда же).
Однако, нормативов на этот счет выявлено не было, но за 10 лет подобной практики ни разу не было замечаний на этот счет.

Опять же, только сейчас посмотрел видео из #165. Мне понравилось. Давно подумываю написать нечто подобное - всё руки не доходят. Особенно вот эта задумка со взаимным перемещением формата и полосы отвода трассы - это прям здорово! Правда, мне ни к чему располагать несколько кусков на один лист - идея была вертеть и увеличивать/уменьшать форматы по горячим клавишам, используя связку grread/grvecs. При этом я хочу только приблизительно расставлять нужные форматы, предполагается, что настройка видовых экранов и листов будет происходить следующим этапом. Цель - приблизительно подобрать форматы, расставив по указанным местам динамические блоки соответствующих форматов, для дальнейшей более точной компоновки и подбора мест для расположения линий совмещения. После такой компоновки создавать листы, расставлять линии совмещения, а затем из этих дин.блоков делать уменьшенные копии - подобные прямоугольники с сохранением пропорций и взаимного расположения - схему расположения листов (миниатюры, т.н.).
skkkk на форуме вставить имя Обратить внимание модератора на это сообщение  
 
Непрочитано 27.10.2017, 07:02
#171
baksconstructor


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


Рисуем в модели прямоугольники (то что должно быть в видовом экране) в Реверс нажимаем Создать листы, получаем видовые экраны, подгоняем рамку, всё. Или все хотят Большую красную кнопку "Сделать всё" ?
baksconstructor вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Непрочитано 27.10.2017, 12:38
#172
skkkk

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


baksconstructor, речь как раз о том, как эти прямоугольники расставить удобно, и подобрать нужные форматы в зависимости от размеров и конфигурации подосновы. Когда речь заходит о больших участках, эта задача перестает быть столь тривиальной. А создать листы - не проблема.
skkkk на форуме вставить имя Обратить внимание модератора на это сообщение  
 
Непрочитано 28.11.2017, 14:51
#173
petro_f


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


Обновил плагин в #92 посте. Что обновлено - там же лог изменений пункт 20.
Теперь можно создать разные "*.ini" файлы с разными настройками принтеров/плоттеров. Далее в зависимости от задач выбирать нужный файл.
У меня например есть плоттеры с "узкой" бумагой и "широкой". Периодически кончается бумага в одном из плоттеров. Что бы не заморачиваться просто перекидываю форматы (которые можно перекинуть, например А1) на другой плоттер и в печать.
__________________
Если ты разговариваешь с идиотом - убедись что он не занят тем же!
petro_f вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Непрочитано 17.12.2017, 11:56
#174
Dr.Smiley

Инженер-конструктор ПГС
 
Регистрация: 17.08.2011
Сообщений: 40


Доброго всем.
Возможно я не так читал или не туда смотрел, так что не бейте сильно. Но есть нужда в следующем,
дано: чертежи выполненные в пространстве модели, допустим 10 объектов. (балка, колонна, сечения по ним) все чертежи выполнены в различных масштабах.
нужно: перенести все эти чертежи на лист в видовых экранах с заданием масштаба видового экрана для каждого объекта, и уже затем скомпоновать полученные видовые экраны на лист определенного формата для дальнейшей печати (компоновать буду естественно сам)

можно ли это как-то сделать с помощью данного лиспа или же если нет, то существует ли такой?
Dr.Smiley вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Непрочитано 17.12.2017, 15:25
#175
petro_f


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


Цитата:
Сообщение от Dr.Smiley Посмотреть сообщение
Доброго всем.
Возможно я не так читал или не туда смотрел, так что не бейте сильно. Но есть нужда в следующем,
дано: чертежи выполненные в пространстве модели, допустим 10 объектов. (балка, колонна, сечения по ним) все чертежи выполнены в различных масштабах.
нужно: перенести все эти чертежи на лист в видовых экранах с заданием масштаба видового экрана для каждого объекта, и уже затем скомпоновать полученные видовые экраны на лист определенного формата для дальнейшей печати (компоновать буду естественно сам)

можно ли это как-то сделать с помощью данного лиспа или же если нет, то существует ли такой?
Уточните вопрос к какому лиспу относится - тут в ветке 3 плагина
Создание видовых экранов есть другой плагин, смотри во вложении.
Вложения
Тип файла: lsp AVP.LSP (2.9 Кб, 7 просмотров)
__________________
Если ты разговариваешь с идиотом - убедись что он не занят тем же!
petro_f вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Непрочитано 17.12.2017, 16:44
#176
Dr.Smiley

Инженер-конструктор ПГС
 
Регистрация: 17.08.2011
Сообщений: 40


Цитата:
Сообщение от petro_f Посмотреть сообщение
Создание видовых экранов есть другой плагин, смотри во вложении.
Может я что-то не так делаю? Этот плагин создает видовые экраны, но, каждый созданный видовой экран появляется на вновь созданном листе. было 10 сечений, он и создал 10 листов. А мне нужно чтобы все эти 10 сечений отобразились в одном листе.
Dr.Smiley вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Непрочитано 17.12.2017, 16:46
#177
maratovich


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


Цитата:
Сообщение от Dr.Smiley Посмотреть сообщение
А мне нужно чтобы все эти 10 сечений отобразились в одном листе.
Нет такого. Делайте рамки в модели и создавайте из них листы или печатайте напрямую из модели.
__________________
Вопрос : Где находится Тургай ? Ответ : Между Парагваем и Уругваем.....
maratovich вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Непрочитано 17.12.2017, 16:58
#178
petro_f


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


Цитата:
Сообщение от Dr.Smiley Посмотреть сообщение
Может я что-то не так делаю? Этот плагин создает видовые экраны, но, каждый созданный видовой экран появляется на вновь созданном листе. было 10 сечений, он и создал 10 листов. А мне нужно чтобы все эти 10 сечений отобразились в одном листе.
Плагин с поста #175 не подошёл? Я про плагин AVP. Встаёте на нужном видовом экране и поехали....
Миниатюры
Нажмите на изображение для увеличения
Название: Снимок.JPG
Просмотров: 15
Размер:	51.3 Кб
ID:	196894  
__________________
Если ты разговариваешь с идиотом - убедись что он не занят тем же!
petro_f вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Непрочитано 18.12.2017, 07:41
#179
Boxa

КЖ; C#
 
Регистрация: 03.11.2005
Санкт-Петербург
Сообщений: 1,720


Цитата:
Сообщение от Dr.Smiley Посмотреть сообщение
Может я что-то не так делаю? Этот плагин создает видовые экраны, но, каждый созданный видовой экран появляется на вновь созданном листе. было 10 сечений, он и создал 10 листов. А мне нужно чтобы все эти 10 сечений отобразились в одном листе.
Попробуйте вот этот плагин http://experement.spb.ru/wiki/doku.php?id=vport_pp , очень похоже на то, что вы хотите.
__________________
_бложиг
Boxa вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Непрочитано 18.12.2017, 09:15
#180
Dr.Smiley

Инженер-конструктор ПГС
 
Регистрация: 17.08.2011
Сообщений: 40


Цитата:
Сообщение от Boxa Посмотреть сообщение
Попробуйте вот этот плагин
на 11-м автокаде пошло, 14-й почему-то не работает.
но в любом случае большое спасибо за ценную ссылочку.
Dr.Smiley вне форума вставить имя Обратить внимание модератора на это сообщение  
Ответ
Вернуться   Форум 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 || Галерея ||
|| Библиотека || Кунсткамера || Каталог предприятий || Контакты || Файлообменник || Блоги ||