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

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

LISP. Текст отклонения по высоте.

Ответ
Поиск в этой теме
Непрочитано 05.05.2014, 00:26 #1
LISP. Текст отклонения по высоте.
Yuulliiyyaa
 
Инженерно-геодезические изыскания
 
СПб
Регистрация: 21.03.2013
Сообщений: 9

Всем доброго времени суток!

У меня есть lisp (прикреп.).
Прошу помощи в его изменении!

Для работы нужно, чтобы:
1. Текст отклонения по высоте помещался в отдельный слой (например: Подп_Выс), и чтобы был другой стиль и цвет.
2. Все значения по высоте "выше" пометить с знаком "+"(вместо: 10=+10 и т.п.).

Спасибо!

Вложения
Тип файла: lsp svai.lsp (3.1 Кб, 111 просмотров)

Просмотров: 5678
 
Непрочитано 05.05.2014, 17:06
#2
nolte

спринклеры, сантехника
 
Регистрация: 26.01.2010
Сообщений: 190
Отправить сообщение для nolte с помощью Skype™


просто крик души
Yuulliiyyaa, свяжись по скайпу или пиши на мыло, ну или тут (тоже вариант не плохой). попробую тебе помочь, сочинив новый лисп, это проще, чем чинить старый.
если можно пришли чертежик или выложи его тут, короче нужно толковое объяснение чего есть и чего получить желаешь на выходе.
__________________
Знание лисп: со справочником Н. Полещука
nolte вне форума  
 
Непрочитано 06.05.2014, 15:59
#3
gomer

строю, ломаю
 
Регистрация: 03.04.2008
Украина
Сообщений: 5,515


только денег не давай, тут работы на 5 минут...
gomer вне форума  
 
Непрочитано 06.05.2014, 17:30
#4
nolte

спринклеры, сантехника
 
Регистрация: 26.01.2010
Сообщений: 190
Отправить сообщение для nolte с помощью Skype™


gomer, (с огромной буквы) Вы истинный жжентельмен, Ваш совет - это несомненно намного больше, чем Ваши 5 минут.
А вообще я не собирался платить.
__________________
Знание лисп: со справочником Н. Полещука

Последний раз редактировалось nolte, 06.05.2014 в 17:49.
nolte вне форума  
 
Непрочитано 06.05.2014, 17:56
#5
Дима_

Продуман
 
Регистрация: 22.02.2007
Питер
Сообщений: 2,839


Цитата:
Сообщение от nolte Посмотреть сообщение
А вообще я не собирался платить.
За что??
__________________
Когда в руках молоток все вокруг кажется гвоздями.
Дима_ вне форума  
 
Непрочитано 06.05.2014, 18:14
#6
nolte

спринклеры, сантехника
 
Регистрация: 26.01.2010
Сообщений: 190
Отправить сообщение для nolte с помощью Skype™


не знаю, но прислушался к мудрому совету аксакала.
__________________
Знание лисп: со справочником Н. Полещука
nolte вне форума  
 
Автор темы   Непрочитано 06.05.2014, 20:57
#7
Yuulliiyyaa

Инженерно-геодезические изыскания
 
Регистрация: 21.03.2013
СПб
Сообщений: 9



Скидываю пример того, как хотелось бы, чтобы lisp работал.
Вложения
Тип файла: dwg
DWG 2007
для LISP2.dwg (83.5 Кб, 2088 просмотров)
Yuulliiyyaa вне форума  
 
Непрочитано 08.05.2014, 22:16
#8
nolte

спринклеры, сантехника
 
Регистрация: 26.01.2010
Сообщений: 190
Отправить сообщение для nolte с помощью Skype™


посмотри если подойдет. запуск 44 (можно изменить на чего пожелаешь).
у меня тут с кодировками малехий балаган, посему проверь строчки с коментами, на соответствие с твоими названиями блока свай и слоев их всего 3. в общем работает это следующим образом:
запрашивает проектную высоту
затем просит выделить объекты, как при выборе для копирования например,
потом автоматом ищет блоки с названием "свая" и самой близкой точкой от этого блока и делает все требуемые вычисления и надписи на чертеже, включая черчение стрелки.
то есть в исходных данных блок и точка, а в конце блок и точка плюс все требуемые надписи.
Код:
[Выделить все]
 
(defun		dxf					(x y)
(cdr (assoc x (entget y)))
)
(defun c:44 (/ z_p ent lst_p lst_sv i n name_bl lst_lay lst_style *error*)
			(defun *error* (msg)
				(setvar 'osmode old_osm) (setvar 'cmdecho old_ech)
				(princ)
			)
(vl-load-com)
(setq ms (vla-get-modelspace(vla-get-activedocument(vlax-get-acad-object))))
(setq old_osm (getvar 'osmode) old_ech (getvar 'cmdecho))
(setvar 'osmode 0) (setvar 'cmdecho 0)
(setq lst_lay '("Стрелка" "подп"))
(setq lst_style '("159"))
(vlax-for i (vla-get-layers(vla-get-activedocument(vlax-get-acad-object)))
	(setq lst_lay (vl-remove (vla-get-name i) lst_lay))
)
(vlax-for i (vla-get-textstyles(vla-get-activedocument(vlax-get-acad-object)))
	(setq lst_style (vl-remove (vla-get-name i) lst_style))
)
(if lst_lay (progn (foreach n lst_lay (alert (strcat "\nДОБАВЬТЕ СЛОЙ " "\n" n))) (exit)))
(if lst_slyle (progn (foreach n lst_style (alert (strcat "\nДОБАВЬТЕ ТЕКСТОВЫЙ СТИЛЬ " "\n" n))) (exit)))
(setq name_bl (dxf 2 (car(entsel "\nУКАЖИТЕ ПРОЕКТНУЮ СВАЮ :"))))
(setq z_p (getreal "\nВведите проектную отметку свай: "))
(setq n (ssget "_W" (getpoint "\nУКАЖИТЕ ПЕРВУЮ ТОЧКУ :") (getpoint "\nУКАЖИТЕ ВТОРУЮ ТОЧКУ :")))
(repeat (setq i (sslength n))
	(if (eq (dxf 0 (setq ent (ssname n (setq i (1- i))))) "INSERT")
		(if (eq (dxf 2 ent) name_bl) 
			(setq lst_sv (cons ent lst_sv))
		)
		(if (eq (dxf 0 ent) "POINT")
			(setq lst_p (cons ent lst_p))
		)
	)
)
(mapcar '(lambda (c / pr_x p_bl p_p)
					(vla-put-stylename
						(vla-addtext ms
							(abs
									(setq pr_x
										(fix
											(* 100 (- (car(setq p_p(dxf 10 (cadr c)))) (car(setq p_bl(dxf 10 (car c))))))
										)
									)
							)
							(vlax-3d-point
								(cond
									((minusp pr_x) (list (- (car p_bl) 0.5) (+ (cadr p_bl) 0.08) 0.0))
									((>= pr_x 0) (list (+ (car p_bl) 0.4) (+ (cadr p_bl) 0.08) 0.0))
								)
							)
							0.2
						)
						"159"
					)
					(l-arrow
						(setq p_ar
							(cond
								((minusp pr_x) (subst (- (car p_bl) 0.15) (car p_bl) p_bl))
								((>= pr_x 0) (subst (+ (car p_bl) 0.15) (car p_bl) p_bl))
							)
						)
						(cond
						 ((minusp pr_x) '1)
						 ((>= pr_x 0) '0)
						)
					)
					(mapcar '(lambda (d)
										(vla-put-stylename d "159") (vla-put-rotation d (* 0.5 pi))
									)
							(list
								(vla-addtext ms
									(abs
										(setq pr_x
											(fix
												(* 100 (- (cadr p_p) (cadr p_bl)))
											)
										)
									)
								(vlax-3d-point
									(cond
										((minusp pr_x) (list (- (car p_bl) 0.08) (- (cadr p_bl) 0.5) 0.0))
										((>= pr_x 0) (list (- (car p_bl) 0.08) (+ (cadr p_bl) 0.4) 0.0))
									)
								)
								0.2
								)
							)
					)
					(l-arrow
						(setq p_ar
							(cond
								((minusp pr_x) (subst (- (cadr p_bl) 0.15) (cadr p_bl) p_bl))
								((>= pr_x 0) (subst (+ (cadr p_bl) 0.15) (cadr p_bl) p_bl))
							)
						)
						(cond
						 ((minusp pr_x) '1.5)
						 ((>= pr_x 0) '0.5)
						)
					)
					(vla-put-layer
						(vla-addtext ms (caddr p_p) 
							(vlax-3d-point (list (+ 0.24 (car p_bl)) (- (cadr p_bl) 0.27) (caddr p_bl))) 0.2
						)
						(dxf 8 (cadr c))
					)
					(setq d_v
						(vla-addtext ms (fix(* 100 (- (caddr p_p) z_p)))
							(vlax-3d-point (list (+ 0.24 (car p_bl)) (- (cadr p_bl) 0.57) (caddr p_bl))) 0.2
						)
					)
					(if (> (atoi(vla-get-textstring d_v)) 0)
						(progn
							(vla-put-textstring d_v (strcat "+" (vla-get-textstring d_v)))
							(vla-put-layer d_v "подп")
						)
					)
				)
			(mapcar '(lambda (a)
								(list a 	
									(car (vl-sort lst_p '(lambda (x y)
																				(<	(distance
																							(reverse(cdr(reverse(dxf 10 a))))
																							(reverse(cdr(reverse(dxf 10 x))))
																						)
																						(distance
																							(reverse(cdr(reverse(dxf 10 a))))
																							(reverse(cdr(reverse(dxf 10 y))))
																						)
																				)		
																			)
											)
									)
								)
							)
					lst_sv
			)
)
(setvar 'osmode old_osm) (setvar 'cmdecho old_ech)
(princ)
)
(defun l-arrow (p r)
(mapcar '(lambda (a)
					(vla-setwidth a 1 0.1 0)
					(vla-put-layer a "Стрелка")
					(vla-rotate a (vlax-3d-point p) (* r pi))
				)
		(list 
			(vla-addpolyline ms
				(vlax-safearray-fill
					(vlax-make-safearray vlax-vbdouble '(0 . 8))
					(append
						p
						(subst (+ 0.21 (car p)) (car p) p)
						(subst (+ 0.4 (car p)) (car p) p)
					)
				)
			)
		)
)
(princ)
)
__________________
Знание лисп: со справочником Н. Полещука

Последний раз редактировалось nolte, 11.05.2014 в 13:32.
nolte вне форума  
 
Непрочитано 08.05.2014, 22:34
#9
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,996


nolte, По моему ф-цию dxf забыл приложить
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 08.05.2014, 22:39
#10
nolte

спринклеры, сантехника
 
Регистрация: 26.01.2010
Сообщений: 190
Отправить сообщение для nolte с помощью Skype™


Цитата:
Сообщение от VVA Посмотреть сообщение
nolte, По моему ф-цию dxf забыл приложить
прав, как всегда.
добавил.
__________________
Знание лисп: со справочником Н. Полещука
nolte вне форума  
 
Непрочитано 08.05.2014, 22:52
#11
gomer

строю, ломаю
 
Регистрация: 03.04.2008
Украина
Сообщений: 5,515


Цитата:
Сообщение от nolte Посмотреть сообщение
к мудрому совету аксакала
Не надо меня тут аксакать...

Цитата:
Сообщение от nolte Посмотреть сообщение
Вы истинный жжентельмен
Ваше право делать все заново, если есть рыба, как по мне шило на мыло
gomer вне форума  
 
Автор темы   Непрочитано 10.05.2014, 20:07
#12
Yuulliiyyaa

Инженерно-геодезические изыскания
 
Регистрация: 21.03.2013
СПб
Сообщений: 9



при указании первой и второй точки - lisp больше не реагирует.....((
Yuulliiyyaa вне форума  
 
Непрочитано 10.05.2014, 21:03
#13
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,996


Yuulliiyyaa, Ты код сохраняла после указанного времени?
Цитата:
Сообщение от nolte Посмотреть сообщение
Последний раз редактировалось nolte, 08.05.2014 в 21:40.
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Автор темы   Непрочитано 10.05.2014, 23:55
#14
Yuulliiyyaa

Инженерно-геодезические изыскания
 
Регистрация: 21.03.2013
СПб
Сообщений: 9



да. Первая и вторая точка означают границы области выделения?
Почему lisp не видит объекты чертежа (блоки, точки) ?
А у тебя lisp работает?
Yuulliiyyaa вне форума  
 
Непрочитано 10.05.2014, 23:58
#15
nolte

спринклеры, сантехника
 
Регистрация: 26.01.2010
Сообщений: 190
Отправить сообщение для nolte с помощью Skype™


да работает
добавил проверку на наличие слоев, скорей всего тут собака зарыта, и стиля текста. блок "свая" надо ручками указывать (только один раз) - добавил запрос.
да на всякий случай, следует грузить все функции в акад (тут их 2 : 44 и dxf)
__________________
Знание лисп: со справочником Н. Полещука

Последний раз редактировалось nolte, 11.05.2014 в 01:12.
nolte вне форума  
 
Автор темы   Непрочитано 13.05.2014, 22:56
#16
Yuulliiyyaa

Инженерно-геодезические изыскания
 
Регистрация: 21.03.2013
СПб
Сообщений: 9



все запросы и проверки работают......НО далее lisp не отвечает!
какие нюансы в подготовке чертежа для вычислений (например: блок с именем свая должен находиться в слое "свая" и т.п.) ?
очевидные вещи для вас , для меня могут быть сложными....
Yuulliiyyaa вне форума  
 
Непрочитано 13.05.2014, 23:45
#17
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,996


Yuulliiyyaa, проще будет разговаривать при наличии файла (или его фрагмента) в котором лисп не работает. проверь, на всякий случай, не заблокирован ли текущий слой. но лучше приложи dwg файл
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 14.05.2014, 00:30
#18
nolte

спринклеры, сантехника
 
Регистрация: 26.01.2010
Сообщений: 190
Отправить сообщение для nolte с помощью Skype™


вы девушка прям как солнце питерское
лисп формирует два списка, которые и обрабатывает потом
1 - список блоков свай, которые ты сама указываешь, ввел запрос
УКАЖИТЕ ПРОЕКТНУЮ СВАЮ :
вот по имени блока он их и узнает
2 - список это список примитивов "ТОЧКА" ("POINT"), всех в чертеже.
последовательность такова:
берем одну сваю и сравниваем расстояние до всех точек, выбираем самую близкую и создаем пару ("свая" "ближайшая точка")
и для этой пары наносим все требуемые размеры.
у тебя не работает потому, я так думаю что не формирует 1 из двух начальных списков либо свай либо точек, показывающих отметки съемки свай с площадки, возможно на твоем чертеже это примитив круг "CIRCLE" например.
попробуй запусти лисп на чертеже примере, который прислала сюда.
и заодно раскажи как появляются на чертеже отметки свай (точки снятые с площадки) кто и как их туда заносит.
__________________
Знание лисп: со справочником Н. Полещука
nolte вне форума  
 
Автор темы   Непрочитано 15.05.2014, 21:43
#19
Yuulliiyyaa

Инженерно-геодезические изыскания
 
Регистрация: 21.03.2013
СПб
Сообщений: 9



да, lisp работает, но только в том файле который я изначально скидывала.
В файле для LISP2.dwg продемонстрирована работа вашего lisp, иногда он не работает вообще, а иногда работает с одной парой, а иногда работает со всеми парами из выделенной области.
В файле для LISP4.dwg , lisp не работает, хотелось бы узнать причину.
Вложения
Тип файла: dwg
DWG 2007
для LISP2.dwg (93.7 Кб, 1529 просмотров)
Тип файла: dwg
DWG 2007
для LISP4.dwg (109.3 Кб, 1521 просмотров)
Yuulliiyyaa вне форума  
 
Непрочитано 15.05.2014, 23:26
#20
Кулик Алексей aka kpblc
Moderator

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


У меня почему-то крепнет ощущение, что теме место в "Поиске исполнителей".
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > LISP. Текст отклонения по высоте.



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Текст вдоль полилинии или сплайна (по кривой) Denioska AutoCAD 48 10.09.2022 21:55
LISP. Вставка в таблицу поля, соотвествующего площади примитива Profan Готовые программы 272 06.06.2021 23:12
Как вывести текст в model из приложения написанного на lisp? paradoxvaha AutoCAD 3 16.04.2007 03:54
Многострочный текст в атрибутах медвежонок AutoCAD 1 09.06.2006 12:05
Изменение форматированного текста посредством lisp Tramp LISP 4 03.03.2006 11:28