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

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

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

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

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

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

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

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

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


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


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


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

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


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


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


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

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


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

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


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


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


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


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


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

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


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


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


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


Цитата:
Сообщение от 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
Просмотров: 129
Размер:	982.2 Кб
ID:	226751  
skkkk на форуме  
 
Автор темы   Непрочитано 28.05.2020, 22:37
#12
ANSYSman


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


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

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

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


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


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


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

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


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


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

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


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


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


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


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


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


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


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


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


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

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


skkkk, спасибо, РМ работает. А вот РМ2 ошибку выдает "Command: PM2 ; error: bad argument type: VLA-OBJECT nil"
asys вне форума  
 
Непрочитано 01.06.2020, 13:14
#21
skkkk


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


asys, странно, перепроверил сейчас - работает. Взял код из #17. Попробовал на двух машинах (2011 и 2015), специально загрузившись без лиспов в пустом каде, чтоб убедиться, что ничего особенного не подгружается. Да и нечему там особо не работать. Может, в файле дело? Код заточен на работу с файлом из #4 имя блока должно быть "auto otm 3.0", в нем - атрибуты "OTM" и "YRZ".
Отредактировал #17, правда, добавил только (vl-load-com), но вряд ли дело в нем, потому что была бы другая ошибка. Можно файл глянуть? И если удалить из кода в #17 строчки с 33-й по 37-ю включительно (обработка нулевого значения и редактирование тега "YRZ"), будет работать?
skkkk на форуме  
 
Непрочитано 01.06.2020, 13:35
#22
asys

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


хм..... в чистом файле все работает. А вот в том где я сначала запускал (уже готовый с фасадами) только первый вариант. второй ругается. Правда в чистом файле РМ2 дописывает фигню какую-то РЈСЂ.С‡.Рї.
asys вне форума  
 
Непрочитано 01.06.2020, 13:45
#23
skkkk


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


Фигня - это из-за кодировки. При копировании и вставке файла в обоих приложениях надо включить русскую раскладку. Или в текстовом редакторе с кодировкой поиграться. А грязный файл бы надо увидеть, чтобы понять, что там за баг. Можно на почту через личку. Конфиденциальность гаранирую.

----- добавлено через ~2 ч. -----
asys, баг отловил, код в #17 обновил. Также добавил допуск для нуля, так как в случае, если блок отметки на десятые доли миллиметра (до 0.4 мм) на ноль по Y не попал, то в поле отображался ноль (0.000 - округлялось до целых мм, до трех знаков после запятой), но при этом надпись "Ур.ч.п." не появлялась. Вот и не могу понять: нужен ли этот допуск или лучше уж тогда при попадании блока не точно в ноль надпись "Ур.ч.п." не появлялась бы? Чтобы было ясно, что вкралась ошибочка при установке нуля, которая, возможно, потом будет кровь пить.

----- добавлено через ~2 ч. -----
asys, да, и спасибо за фидбэк
skkkk на форуме  
 
Непрочитано 01.06.2020, 15:47
#24
asys

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


skkkk, спасибо. Теперь работает. А насчет "ур.ч.п." я ее в твоем лиспе стер. Для своего пользования нме удобнее, чтобы там было пусто.
Цитата:
лучше уж тогда при попадании блока не точно в ноль надпись "Ур.ч.п." не появлялась бы?
тогда уже пусть в атрибуте будет написано что-то типа "поправь отметку урод криворукий". так доходчивее будет
asys вне форума  
 
Непрочитано 01.06.2020, 17:11
#25
skkkk


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


Цитата:
Сообщение от asys Посмотреть сообщение
Для своего пользования нме удобнее, чтобы там было пусто.
Дело хозяйское, просто я где возможно стараюсь косить под ГОСТы. У всяких буквоедов из экспердиз меньше вопросов бывает. Offtop: Хотя и мнение есть, что по итогу выходит проще наделать броских, мелких и легкоустранимых недочетов, эксперт выполнит моральный план по количеству замечаний и меньше создаст головняка ребятам
Просто тогда первый лисп вроде в самый раз, тем более, что баг второго был связан именно с этим "урчепом"
Цитата:
Сообщение от asys Посмотреть сообщение
тогда уже пусть в атрибуте будет написано что-то типа "поправь отметку урод криворукий". так доходчивее будет
Это имеет смысл сделать только для околонулевых значений или для всех, где Y не равен целому числу миллиметров? И, может, просто красить блок, допустим, в красный? Лисп, конечно, можно и матерному обучить
skkkk на форуме  
 
Непрочитано 01.06.2020, 17:35
#26
asys

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


Цитата:
Сообщение от skkkk Посмотреть сообщение
где Y не равен целому числу миллиметров?
забей. Даже ошибка в высоте между отметкой и предметом до 10 мм не видна при распечатке. Все сьедается толщиной линии. Мне не сложно дернуть блок выше на 2-3-5 мм.
asys вне форума  
 
Непрочитано 02.07.2020, 19:29
#27
TNemo


 
Регистрация: 14.11.2011
СПб
Сообщений: 1,304


QAcad лучше всего для установки и пересчета отметок без всяких мерзких прокси
__________________
точность вопроса влияет на меткость ответа
хамов и умалишенных просьба не беспокоить
TNemo вне форума  
 
Непрочитано 02.10.2020, 11:42
1 | #28
undred


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


Приветствую.
Идея для выноски с плюсом и минусом без дополнительных танцев с лисп.

Убрал знак на нуле
Вложения
Тип файла: dwg
DWG 2013
Высотная отметка.dwg (45.4 Кб, 27 просмотров)

Последний раз редактировалось undred, 02.10.2020 в 12:02.
undred вне форума  
 
Непрочитано 02.10.2020, 11:53
#29
skkkk


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


Здорово придумано. Зачёт
Только, вроде, на нуле не должно быть знака.
skkkk на форуме  
 
Непрочитано 02.10.2020, 22:33
#30
Theodor


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


Решение оригинальное! Вот только с практической точки зрения может быть не всегда удобным привязывать все отметки к нулевой высоте. Но все же еще раз: КРУТО!
Theodor вне форума  
 
Непрочитано 05.10.2020, 16:39
#31
undred


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


Цитата:
Сообщение от Theodor Посмотреть сообщение
Решение оригинальное! Вот только с практической точки зрения может быть не всегда удобным привязывать все отметки к нулевой высоте. Но все же еще раз: КРУТО!
Привязка к базовой точке блока.
undred вне форума  
 
Непрочитано 02.11.2020, 20:13
#32
Bykov_ant


 
Регистрация: 14.02.2013
Ukraine
Сообщений: 7


Вот есть такой блок. Отметка берется из параметра блока "Z". Но нужно выставлять отдельно видимость для "выше ноля", ниже ноля" и "0,000"
Вложения
Тип файла: dwg отм уровня.dwg (62.2 Кб, 8 просмотров)
Bykov_ant вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > AutoCAD > Динамические блоки > Динамический блок высотная отметка с автоматическим проставление отметки в метрах и знаком "+" для положительной отметки

CAD БИБЛИОТЕКА
Размещение рекламы
Опции темы Поиск в этой теме
Поиск в этой теме:

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


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