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

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Как вставить поле в пространстве листа?

Как вставить поле в пространстве листа?

Ответ
Поиск в этой теме
Непрочитано 21.04.2020, 20:28 #1
Как вставить поле в пространстве листа?
sergeev_2005
 
Проектирование гражданских зданий
 
Санкт-Петербург
Регистрация: 25.03.2010
Сообщений: 90

Требуется создать поле PlotDate (ДатаВывода), вставить это поле в пространстве листа.
При этом задать координаты X и Y, имя слоя, стиль текста и угол поворота текста.
Если поле PlotDate в данном пространстве листа уже существует, то ничего не делать.
Всё на лиспе. На самом деле я понятия не имею, как проверить существование поля.
Остальное (вставить поле, правда, не с координатами, а в существующий текст) нашел на форуме
Особая благодарность VVA.
Просмотров: 2136
 
Непрочитано 21.04.2020, 22:07
#2
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,844


Ничего не понял. Если это запрос на разработку - то ошибся с разделом. Если затык в коде - то где собственно код?
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 21.04.2020, 22:25
#3
sergeev_2005

Проектирование гражданских зданий
 
Регистрация: 25.03.2010
Санкт-Петербург
Сообщений: 90


Не буду спорить. Может и ошибся с разделом.
Запрос на разработку - это сильно сказано.
На самом деле нужна подсказка: как на лиспе: IF (FIELD "PLotDate" NOT EXIST) THEN DO (.......) ELSE ("ничего не делать").
Можно другую подсказку не по полю, а по слою: IF (LAYER "name" NOT EXIST) THEN DO (...) ELSE ("ничего не делать").
И то, и другое подойдёт.
Алексей, если это разработка, то готов обратится Куда? Ну не силён в лиспе, что делать?
sergeev_2005 вне форума  
 
Непрочитано 22.04.2020, 15:35
#4
Boxa

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


Для Автокад можно писать на достаточно большом количестве языков и судя по
Цитата:
Сообщение от sergeev_2005 Посмотреть сообщение
IF (FIELD "PLotDate" NOT EXIST) THEN DO (.......) ELSE ("ничего не делать").
не проще ли Вам на VBA написать то, что Вам нужно? У Лисп все несколько по другому...
Boxa вне форума  
 
Непрочитано 23.04.2020, 15:51
#5
koMon


 
Блог
 
Регистрация: 26.09.2017
Сообщений: 1,680


Цитата:
Сообщение от sergeev_2005 Посмотреть сообщение
подсказка
Код:
[Выделить все]
 (defun c:plot_date (/ layout_collectio plot_date_exists)
	(if (= "*Paper_Space" (vla-get-name (setq layout_collection (vla-get-block
											  						(vla-get-activelayout
																		(vla-get-ActiveDocument
																			(vlax-get-acad-object)
																		)
																	)
											  					)
										)
						  )
		)
			(progn
				(vlax-map-collection layout_collection
					'(lambda (layout_item)
						(if (and
								 (not plot_date_exists)
								 (= "AcDbText" (vla-get-objectname layout_item))
								 (wcmatch (vla-fieldcode layout_item) "*AcVar PlotDate*")
							)
								(if (null plot_date_exists)
										(setq plot_date_exists t)
								)
						)
					 )
				)
				(if plot_date_exists
					(print "Текст с полем найден")
					(print "Создаём текст с полем")
				)
			)
			(print "Это не лист")
	)
	(princ)
)
koMon вне форума  
 
Автор темы   Непрочитано 23.04.2020, 21:26
#6
sergeev_2005

Проектирование гражданских зданий
 
Регистрация: 25.03.2010
Санкт-Петербург
Сообщений: 90


Спасибо большое, koMon, попробую.

----- добавлено через ~22 мин. -----
koMon, выдаёт "Создаём текст с полем" и... тишина. Командная строка автокада встала в исходную позицию. Это первое, что получилось.

----- добавлено через ~51 мин. -----
При наличии поля PlotDate на листе выдает то же самое.
sergeev_2005 вне форума  
 
Непрочитано 24.04.2020, 07:46
#7
Boxa

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


Цитата:
Сообщение от sergeev_2005 Посмотреть сообщение
выдаёт "Создаём текст с полем" и... тишина.
А что должно произойти? Вы просили подсказку, что Вам дали подсказку. Дальше сами допишите туда то, что у Вас уже есть (Вы об этом в 1 сообщение написали). Странно, по какой то причине Вы решили, что Вам дали готовое решение.... даже с моим незнанием Лиспа, по коду видно что это именно подсказка и именно только условие, которое Вы просили.

Цитата:
Сообщение от sergeev_2005 Посмотреть сообщение
При наличии поля PlotDate на листе выдает то же самое.
Еще раз, этот код, это
Цитата:
Сообщение от koMon Посмотреть сообщение
подсказка
а не готовое решение, нужно доработать напильником и как минимум проверять типы объектов и прочие, сопутствующие, обстоятельства.

ЗЫ.
По дате регистрации, вроде не студент, а задача учебная. В работе эта задача решается штатными инструментами авткада, через переопределение блока и синхронизацию атрибутов. И главное требование, неприменно на Лисп... Странно.
Boxa вне форума  
 
Непрочитано 24.04.2020, 09:19
#8
koMon


 
Блог
 
Регистрация: 26.09.2017
Сообщений: 1,680


Цитата:
Сообщение от sergeev_2005 Посмотреть сообщение
выдаёт "Создаём текст с полем" и...
ну, как правильно написал Boxa, фрагмент проверяет ТЕКСТЫ в пространстве текущего листа и как бы всё) а создать новый текст и впихнуть в него поле - это уже как фантазия у кого работает!
Цитата:
Сообщение от sergeev_2005 Посмотреть сообщение
При наличии поля PlotDate на листе выдает то же самое.
поле PlotDate можно вставить также в МТЕКСТ и т.д. возможно у вас так и есть... выложите лист на посмотреть...
koMon вне форума  
 
Автор темы   Непрочитано 24.04.2020, 10:33
#9
sergeev_2005

Проектирование гражданских зданий
 
Регистрация: 25.03.2010
Санкт-Петербург
Сообщений: 90


koMon, спасибо ещё раз! Ну да, сразу не сообразил. Добавил в Вашу программу проверку на MText - всё получилось.
Boxa, во-первых, тон! Вам бы по импортным форумам поползать. Есть чему поучиться в манере общения, хотя Вы также не студент.
Во-вторых, Вы же не знаете мою общую задачу. Так зачем же предлагать её решать разными языками и методами автокада?
Это тривиально, и, если бы это было приемлемо, то я бы и тему не поднимал.
Цитата:
Для Автокад можно писать на достаточно большом количестве языков и судя по
Не надо судить. Это было всего лишь нечто похожее на алгоритмическую нотацию, принятую ещё в 80-х прошлого столетия, когда ещё не было VBA. да и VB тоже.

Последний раз редактировалось sergeev_2005, 24.04.2020 в 10:42. Причина: Дубль текста
sergeev_2005 вне форума  
 
Непрочитано 24.04.2020, 11:02
#10
Boxa

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


Цитата:
Сообщение от sergeev_2005 Посмотреть сообщение
во-первых, тон!
И что не так с моим тоном!?
Цитата:
Сообщение от sergeev_2005 Посмотреть сообщение
Вам бы по импортным форумам поползать. Есть чему поучиться в манере общения, хотя Вы также не студент
Спасибо. Регулярно.
Цитата:
Сообщение от sergeev_2005 Посмотреть сообщение
Во-вторых, Вы же не знаете мою общую задачу. Так зачем же предлагать её решать разными языками и методами автокада?
Не знаю, но вижу Ваш вопрос и Вашу
Цитата:
Сообщение от sergeev_2005 Посмотреть сообщение
алгоритмическую нотацию
и понимаю, что с этой нотацией, Вам сложнее будет работать в функциональном стиле лиспа и потому предлагаю сразу посмотреть в сторону того, что более соответствует Вашей алгоритмической нотации. Предлагаю, но выбор делать Вам.

По Вашим словам, складывается впечатление, что Вы считаете, что Вас кто то хочет обидеть или задеть. Отнюдь, я не сильно ошибусь, если напишу, что участникам дискуссии... все равно и никто не ставит своей целью Вас обидеть или задеть.
Boxa вне форума  
 
Автор темы   Непрочитано 24.04.2020, 11:38
#11
sergeev_2005

Проектирование гражданских зданий
 
Регистрация: 25.03.2010
Санкт-Петербург
Сообщений: 90


ОК, ВОХА, принято. На самом деле всем большое спасибо! Всё исчерпывающе.
sergeev_2005 вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Как вставить поле в пространстве листа?

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как вписать определенный элемент модели в ВЭ в пространстве листа Sanbl4 AutoCAD 5 02.12.2015 14:00
Простановка размеров в пространстве листа Serz AutoCAD 8 18.03.2014 13:53
Как отобразить пустую строку в поле дин.блока, которое ссылается на незаполненное свойство листа подшивки? ГОСТ&ОПОКА AutoCAD 5 28.10.2013 13:47
Простановка размеров в пространстве листа <Layout> zenon AutoCAD 71 09.01.2012 16:00
Значение поля(field) в Пространстве Листа и Пространстве Модели различаются. Автокад 2009-2010 wetr AutoCAD 2 06.05.2009 02:33