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

Вернуться   Форум DWG.RU > Программное обеспечение > AutoCAD > Динамические блоки > Динамический блок высотная отметка с автоматическим проставление отметки в метрах и знаком "+" для положительной отметки

Динамический блок высотная отметка с автоматическим проставление отметки в метрах и знаком "+" для положительной отметки

Ответ
Поиск в этой теме
Непрочитано 12.05.2020, 17:26 #1
Динамический блок высотная отметка с автоматическим проставление отметки в метрах и знаком "+" для положительной отметки
ANSYSman
 
Регистрация: 04.07.2017
Сообщений: 118

Создал динамический блок высотная отметка с автоматическим проставлением отметки, то есть, если совместить чистый пол разреза с нулевой координатой по Y, то автоматом будут выводиться высотные отметки.

Однако не знаю как сделать, чтобы отметки отображались не в мм а в метрах, то есть на высотной отметке было не 500,000, а + 0,500!
Также хотелось бы, чтобы проставлялся знак "+" во всех отметках, но как этого добиться ума не приложу.

Подскажите пожалуйста, кто в теме, как можно настроить требуемый функционал такого блока.

З.Ы. Некоторые скажут, зачем заморачиваться, если есть модуль СПДС, однако я его не использую, не хочется тащить без особой на то надобности proxy-объекты в свой чертеж, да и вообще иметь их в автокаде!
Просмотров: 12109
 
Непрочитано 12.05.2020, 17:43
#2
zenon

Остекляем!!! Алюминим!!!
 
Регистрация: 21.02.2005
Москва
Сообщений: 3,825
<phrase 1=


Цитата:
Сообщение от ANSYSman Посмотреть сообщение
Подскажите пожалуйста, кто в теме, как можно настроить требуемый функционал такого блока.
1 - в поиск по форуму.
2 - см. раздел формат данных
__________________
Мы можем делать быстро, качественно и недорого, выбирайте любые 2 условия.:search:
zenon вне форума  
 
Непрочитано 28.05.2020, 02:03
#3
Theodor


 
Регистрация: 16.04.2009
Петрозаводск
Сообщений: 323


Что касается "500,000" с переводом в "0,500" - это сильно просто, и думаю вы уже разобрались. А вот с вопросом поставить "+" - смиритесь, проблема давняя и не решенная. Ищите ручные способы манипуляций +/-.
Theodor вне форума  
 
Непрочитано 28.05.2020, 09:38
#4
asys

архитектор
 
Регистрация: 10.08.2005
Ростов-на-Дону
Сообщений: 5,283


держи
Вложения
Тип файла: dwg
DWG 2013
auto_otm.dwg (337.0 Кб, 183 просмотров)
asys вне форума  
 
Непрочитано 28.05.2020, 12:13
#5
Theodor


 
Регистрация: 16.04.2009
Петрозаводск
Сообщений: 323


Цитата:
Сообщение от asys Посмотреть сообщение
держи
А отрицательные как выглядят?
Theodor вне форума  
 
Непрочитано 28.05.2020, 15:49
1 | #6
Nike

Шаражпроектхалтурмонтаж
 
Регистрация: 29.10.2004
Талды-Париж
Сообщений: 5,989


Как вариант, с ручным способом манипуляций +/-.
Вложения
Тип файла: dwg
DWG 2010
auto otmetka.dwg (72.9 Кб, 113 просмотров)
Nike на форуме  
 
Непрочитано 28.05.2020, 15:53
#7
asys

архитектор
 
Регистрация: 10.08.2005
Ростов-на-Дону
Сообщений: 5,283


Цитата:
Сообщение от Theodor Посмотреть сообщение
А отрицательные как выглядят?
+-, тут надо удалять плюсик.
asys вне форума  
 
Непрочитано 28.05.2020, 17:02
#8
Theodor


 
Регистрация: 16.04.2009
Петрозаводск
Сообщений: 323


Цитата:
Сообщение от Nike Посмотреть сообщение
Как вариант, с ручным способом манипуляций +/-
Цитата:
Сообщение от asys Посмотреть сообщение
+-, тут надо удалять плюсик.
вот именно об этом я и говорю, что проблема. Автоматизировать пока не выходит.
Цитата:
Сообщение от Theodor Посмотреть сообщение
А вот с вопросом поставить "+" - смиритесь, проблема давняя и не решенная. Ищите ручные способы манипуляций +/-
Theodor вне форума  
 
Автор темы   Непрочитано 28.05.2020, 20:16
| 1 #9
ANSYSman


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


Цитата:
Сообщение от Theodor Посмотреть сообщение
Что касается "500,000" с переводом в "0,500" - это сильно просто, и думаю вы уже разобрались.
К сожалению для меня это не сильно просто. Подскажите пожалуйста, как Вы этого добились?

Цитата:
Сообщение от Theodor Посмотреть сообщение
вот именно об этом я и говорю, что проблема. Автоматизировать пока не выходит.
21 век на дворе, дроны, суперкомпьютеры, а в AutoCAD нет возможности сделать полноценный автоматизированный динамический блок...
ANSYSman вне форума  
 
Непрочитано 28.05.2020, 21:57
#10
Theodor


 
Регистрация: 16.04.2009
Петрозаводск
Сообщений: 323


Цитата:
Сообщение от ANSYSman Посмотреть сообщение
К сожалению для меня это не сильно просто. Подскажите пожалуйста, как Вы этого добились?
В окне настройки "поля" есть кнопка "дополнительный формат". Там можно задать коэффициент для преобразования значения.
Цитата:
Сообщение от ANSYSman Посмотреть сообщение
21 век на дворе, дроны, суперкомпьютеры, а в AutoCAD нет возможности сделать полноценный автоматизированный динамический блок...
Видимо потому, что динамическими блоками пользуется (и понимает как их сделать) наверное менее 1% пользователей автокад. Зачем делать более сложные плюшки.
Theodor вне форума  
 
Непрочитано 28.05.2020, 22:06
2 | #11
skkkk


 
Регистрация: 20.03.2008
Сообщений: 2,653


Цитата:
Сообщение от Theodor Посмотреть сообщение
Ищите ручные способы манипуляций +/-.
Цитата:
Сообщение от asys Посмотреть сообщение
держи
Вложения
Тип файла: dwg
DWG 2013 auto_otm.dwg (337.0 Кб, 24 просмотров)
Цитата:
Сообщение от asys Посмотреть сообщение
+-, тут надо удалять плюсик.
Да простит меня администрация за размещение кодов в разделе динамических блоков...
Код:
[Выделить все]
 ;;; Программа добавляет/убирает плюс в динамическом блоке отметки
;;; https://forum.dwg.ru/showthread.php?t=157529
;;; Имя блока и атрибута задаются в кавычках в 5-й и 6-й строках соответственно
(defun C:PM ( / block_name attr_tag ss i en vl attr_list attr str)
	(setq block_name "auto otm 3.0"
		  attr_tag "OTM"
		  ss (ssget "_X" '(( 0 . "INSERT")))
	)
	(if ss
		(repeat (setq i (sslength ss))
			(setq en (ssname ss (setq i (1- i)))
				  vl (vlax-ename->vla-object en)
			) 
			(if (and 
					(= (vla-get-IsDynamicBlock vl) :vlax-true)
					(= (vla-get-EffectiveName vl) block_name)
				)
				(progn
					(setq attr_list (vlax-safearray->list (vlax-variant-value (vla-getattributes vl)))
						  attr (car (vl-remove-if-not '(lambda (x) (= attr_tag (vla-get-TagString x))) attr_list))
						  str (vla-get-TextString attr)
					)
					(if (< (cadr (vlax-safearray->list (vlax-variant-value (vla-get-InsertionPoint vl)))) 0)
						(vla-put-TextString attr (vl-string-subst "" "+" str))
						(vla-put-TextString attr (strcat "+" (vl-string-subst "" "+" str)))
					)
				)
			)
			
		)
	)
	(vl-cmdf "_.REGENALL")
)


В общем, берем блок отметки от asys'a из #4, либо для своего блока в коде прописываем его имя и имя нужного атрибута, соблюдая регистр. Загружаем код, ясное дело. В нужный момент, когда уже все блоки по местам, вместо регенерации запускаем команду PM. И улыбаемся
Миниатюры
Нажмите на изображение для увеличения
Название: 2020-05-28 at 22-03-00.gif
Просмотров: 225
Размер:	982.2 Кб
ID:	226751  
skkkk вне форума  
 
Автор темы   Непрочитано 28.05.2020, 22:37
#12
ANSYSman


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


Цитата:
Сообщение от skkkk Посмотреть сообщение
Загружаем код, ясное дело.
Спасибо БОЛЬШОЕ за ответ! Вот это современный и сильный и инженерный подход))
А куда код загружать надо (я просто с кодами ни разу не работал)?

Цитата:
Сообщение от skkkk Посмотреть сообщение
запускаем команду PM.
А что это за команда? У меня при вводе РМ в строку выходят только две команды: РАЗМЕТИТЬ и РМОДЕЛЬ...

З.Ы. Что за язык программирования Вы используете для автокада? Заинтересовало, тоже хочу так уметь
ANSYSman вне форума  
 
Непрочитано 28.05.2020, 22:46
1 | #13
skkkk


 
Регистрация: 20.03.2008
Сообщений: 2,653


Цитата:
Сообщение от ANSYSman Посмотреть сообщение
А куда код загружать надо (я просто с кодами ни разу не работал)?
Как использовать лисп, опубликованный на форуме
В статье (спасибо VVA) по сей день всё справедливо. Добавлю только, что для выделения и копирования в буфер "цветного кода", как у меня в посте, нужно нажать на кнопочку в левом верхнем углу окна с кодом.


----- добавлено через ~1 мин. -----
Цитата:
Сообщение от ANSYSman Посмотреть сообщение
А что это за команда? У меня при вводе РМ в строку выходят только две команды: РАЗМЕТИТЬ и РМОДЕЛЬ...
Команда появится после загрузки кода. И она прописана в латинице (пи-эм) - PLUS_MINUS имелось в виду
Миниатюры
Нажмите на изображение для увеличения
Название: Code.PNG
Просмотров: 770
Размер:	43.0 Кб
ID:	226754  

Последний раз редактировалось skkkk, 28.05.2020 в 22:52.
skkkk вне форума  
 
Непрочитано 28.05.2020, 22:47
#14
Theodor


 
Регистрация: 16.04.2009
Петрозаводск
Сообщений: 323


Цитата:
Сообщение от ANSYSman Посмотреть сообщение
А что это за команда? У меня при вводе РМ в строку выходят только две команды: РАЗМЕТИТЬ и РМОДЕЛЬ...

З.Ы. Что за язык программирования Вы используете для автокада? Заинтересовало, тоже хочу так уметь
А вот теперь администраторы начнут ругаться! Лучше бегите в темы по программированию Lisp. Их тут всяких полно.
Theodor вне форума  
 
Непрочитано 29.05.2020, 11:13
#15
skkkk


 
Регистрация: 20.03.2008
Сообщений: 2,653


Озадачился тут вопросом: нужен ли плюс на нуле? Ни в одном из найденных чертежей АР его не обнаружил. С архитектуркой редко приходится дело иметь, однако, помню, на форуме кто-то хотел этого плюса перед нулём, поэтому сделал, чтоб он был, но где это было и чем всё закончилось - не помню. Рассудите, кто знает. Поправлю код выше, если плюс не нужен там.
skkkk вне форума  
 
Автор темы   Непрочитано 29.05.2020, 11:21
#16
ANSYSman


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


Цитата:
Сообщение от skkkk Посмотреть сообщение
Озадачился тут вопросом: нужен ли плюс на нуле? Ни в одном из найденных чертежей АР его не обнаружил. С архитектуркой редко приходится дело иметь, однако, помню, на форуме кто-то хотел этого плюса перед нулём, поэтому сделал, чтоб он был, но где это было и чем всё закончилось - не помню. Рассудите, кто знает. Поправлю код выше, если плюс не нужен там.
Я видел на некоторых чертежах приставку "плюс минус" (плюс сверху, минус снизу).
ANSYSman вне форума  
 
Непрочитано 29.05.2020, 11:52
#17
skkkk


 
Регистрация: 20.03.2008
Сообщений: 2,653


Цитата:
Сообщение от ANSYSman Посмотреть сообщение
Я видел на некоторых чертежах приставку "плюс минус"
Посмотрел ГОСТ 21.501. Там в приложениях есть примеры - во всех ноль указан без знака, при этом снизу, под полкой, есть надпись "Ур.ч.п."
Чуть доработал код. В случае, если значение отметки равно нулю, плюса не будет, зато будет появляться пометка о чистом поле Offtop: (уровень чистого поля ).
Код:
[Выделить все]
 ;;; Программа добавляет/убирает плюс в динамическом блоке отметки
;;; а также в случае, если отметка равна 0.000, назначает атрибуту attr_tag_2 значение "Ур.ч.п."
;;; https://forum.dwg.ru/showthread.php?t=157529
;;; Имя блока и атрибутов задаются в кавычках в 6-й, 7-й и 8-й строках соответственно
(defun C:PM2 ( / block_name attr_tag attr_tag_2 ss i en vl attr_list attr attr_2 str coord_Y)
	(setq block_name "auto otm 3.0"
		  attr_tag "OTM"
		  attr_tag_2 "YRZ"
		  ss (ssget "_X" '(( 0 . "INSERT")))
	)
	(if ss
		(repeat (setq i (sslength ss))
			(setq en (ssname ss (setq i (1- i)))
				  vl (vlax-ename->vla-object en)
			) 
			(if (and 
					(= (vla-get-IsDynamicBlock vl) :vlax-true)
					(= (vla-get-EffectiveName vl) block_name)
				)
				(progn
					(setq attr_list (vlax-safearray->list (vlax-variant-value (vla-getattributes vl)))
						  attr (car (vl-remove-if-not '(lambda (x) (= attr_tag (vla-get-TagString x))) attr_list))
						  str (vla-get-TextString attr)
						  coord_Y (cadr (vlax-safearray->list (vlax-variant-value (vla-get-InsertionPoint vl))))
					)
					(if (<= coord_Y 0)
						(vla-put-TextString attr (vl-string-subst "" "+" str))
						(vla-put-TextString attr (strcat "+" (vl-string-subst "" "+" str)))
					)
					(setq attr_2 (car (vl-remove-if-not '(lambda (x) (= attr_tag_2 (vla-get-TagString x))) attr_list)))
					(if (equal coord_Y 0 0.4)
						(vla-put-TextString attr_2 "Ур.ч.п.")
						(vla-put-TextString attr_2 "")
					)
				)
			)
		)
	)
	(vl-cmdf "_.REGENALL")
	(princ)
)

Последний раз редактировалось skkkk, 01.06.2020 в 15:23. Причина: Отловил баг
skkkk вне форума  
 
Непрочитано 29.05.2020, 14:17
#18
Nike

Шаражпроектхалтурмонтаж
 
Регистрация: 29.10.2004
Талды-Париж
Сообщений: 5,989


Надо в DIESEL-е поковыряться, может с ним можно плюс к полю положительной отметки приклячить..
Nike на форуме  
 
Непрочитано 29.05.2020, 15:14
#19
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 11,002


Цитата:
Сообщение от Nike Посмотреть сообщение
Надо в DIESEL-е поковыряться, может с ним можно плюс к полю положительной отметки приклячить..
тыц
Сергей812 вне форума  
 
Непрочитано 01.06.2020, 10:00
#20
asys

архитектор
 
Регистрация: 10.08.2005
Ростов-на-Дону
Сообщений: 5,283


skkkk, спасибо, РМ работает. А вот РМ2 ошибку выдает "Command: PM2 ; error: bad argument type: VLA-OBJECT nil"
asys вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > AutoCAD > Динамические блоки > Динамический блок высотная отметка с автоматическим проставление отметки в метрах и знаком "+" для положительной отметки

Размещение рекламы
Опции темы Поиск в этой теме
Поиск в этой теме:

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Возможно ли сделать динамический блок, чтобы одна часть его была аннотативная, а другая нет? Falaleichik Динамические блоки 6 31.01.2022 17:44
Как вставить в таблицу динамический блок с параметром видимости и с атрибутами? Profan Программирование 18 06.07.2016 16:41
Динамический блок с изменением тескта Анdwg Динамические блоки 9 29.06.2015 07:56
Помогите установить зависимость в динамический блок Benz Динамические блоки 2 13.11.2011 21:39
Как добавить атрибуты в динамический блок? Archeo Динамические блоки 20 17.11.2006 11:30