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

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

Набор примитивов с найденными координатами

Ответ
Поиск в этой теме
Непрочитано 11.12.2018, 14:31 #1
Набор примитивов с найденными координатами
nynokne
 
Регистрация: 17.02.2014
Сообщений: 50

Добрый день.
Помогите решить задачу.
Пользователь выбирает отрезок, который необходимо удалить. Программно вычисляется координата стоящего рядом отрезка и текста, которые так же должны быть удалены (второй отрезок и текст всегда располагаются строго под указанным на расстояниях 40 и 39 соответственно).
Нахожу все нужные данные, но не могу составить набор примитивов отрезков и текстов, которые бы имели рассчитанную координату.

Всё работает корректно до строки "(setq SS (ssget....", Автокад ругается "ошибка: неверный список SSGET"

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

Код:
[Выделить все]
 
(defun c:lish (/)
	
		(setq lishniy (car (entsel "\nВыберите лишний отрезок: ")))
		(setq list_obj (entget lishniy))
		(setq p1 (cdr (assoc 11 list_obj)))
		(print p1)
		(setq X_p1 (nth 0 p1))
		(print X_p1)
		(setq Y_p1 (nth 1 p1))
		(print Y_p1)
		(setq Y_p2 (- Y_p1 40));Y_координата второго лишнего отрезка
		(setq Y_text (- Y_p1 39));Y_координата лишнего текста
		(setq koord_text (list X_p1 Y_text 0.0)); координата лишнего текста
		(entmakex (list '(0 . "point") (list 10 X_p1 Y_p2))); создание точки по координатам второго лишнего отрезка
		(setq pt1 (entlast))
		
			(setq SS (ssget '((0 . "LINE") (8 . "Расстояния") (cons 10 X_p1 Y_p2))));создание набора отрезков в слое с начальной координатой второго лишнего отрезка
			(setq i 0)
				(while (< i (sslength SS))
					(setq lineObj (ssname SS i))
					(setq line (entget lineObj))
					(command "_.erase" lineObj "")
					(setq i (+ 1 i))
				)
			(setq TT (ssget '((0 . "TEXT") (8 . "Отметки") (10 X_p1 Y_text))));создание набора текстов в слое с начальной координатой лишнего текста
			(setq j 0)
				(while (< j (sslength TT))
					(setq textObj (ssname TT j))
					(setq text1 (entget textObj))
					(command "_.erase" textObj "")
					(setq j (+ 1 j))
				)
	
); end defun
Просмотров: 1371
 
Непрочитано 11.12.2018, 14:48
#2
1958


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


(cons 10 X_p1 Y_p2) замените на (cons 10 (list X_p1 Y_p2))
(10 X_p1 Y_text) замените на (10 . (list X_p1 Y_text))
1958 вне форума  
 
Автор темы   Непрочитано 11.12.2018, 14:54
#3
nynokne


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


Цитата:
(cons 10 X_p1 Y_p2) замените на (cons 10 (list X_p1 Y_p2))
(10 X_p1 Y_text) замените на (10 . (list X_p1 Y_text))
Код:
[Выделить все]
 
(setq SS (ssget '((0 . "LINE") (8 . "А-ПП_Расстояния_фактические") (cons 10 (list X_p1 Y_p2)))));создание набора отрезков в слое с начальной координатой второго лишнего отрезка
			(setq i 0)
				(while (< i (sslength SS))
					(setq lineObj (ssname SS i))
					(setq line (entget lineObj))
					(command "_.erase" lineObj "")
					(setq i (+ 1 i))
				)
			(setq TT (ssget '((0 . "TEXT") (8 . "А-ПП_Отметки_фактические") (10 . (list X_p1 Y_text)))));создание набора текстов в слое с начальной координатой лишнего текста
уже так пробовал - ошибка автокада "ошибка: неверный список SSGET"
nynokne вне форума  
 
Непрочитано 11.12.2018, 15:09
1 | #4
Кулик Алексей aka kpblc
Moderator

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


А нечего мешать ' и вычисляемые выражения!
Код:
[Выделить все]
 (ssget (list '(0 . "LINE") '(8 . "А-ПП_Расстояния_фактические") (cons 10 (list X_p1 Y_p2))
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 11.12.2018, 16:17
#5
nynokne


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


Алексей, спасибо за помощь.

Возникла другая проблема. Теперь Автокад просит выбрать объекты, хотя весь смысл был в том, чтобы это делать программно.

Код:
[Выделить все]
 
(setq SS (ssget (list '(0 . "LINE") '(8 . "А-ПП_Расстояния_фактические") (cons 11 (list X_p1 Y_p2)))));создание набора отрезков в слое с начальной координатой второго лишнего отрезка
			
			(setq i 0)
				(while (< i (sslength SS))
					(setq lineObj (ssname SS i))
					(command "_.erase" lineObj "")
					(setq i (+ 1 i))
				)
В чём может быть проблема? При ручном выделении всё делается правильно, лишнее удалить не даёт, то есть набор ssget корректен.

Были подозрения, что это из-за того, что требуемый удаления примитив (2-ой отрезок) всего один. Натыкал с привязкой кучу таких же отрезков, всё равно требует выбрать объекты - выбираю, удаляет все.

Последний раз редактировалось nynokne, 11.12.2018 в 16:35.
nynokne вне форума  
 
Непрочитано 11.12.2018, 17:00
1 | #6
Кулик Алексей aka kpblc
Moderator

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


А как насчет ключей ssget? Ну там, "_A" или "_X", например...
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 11.12.2018, 17:08
#7
nynokne


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


Спасибо!

Удалил в процессе попыток самостоятельного решения))
nynokne вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Набор примитивов с найденными координатами

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Линия с типом, использующим shx -> в набор примитивов - возможно ли? rvv AutoCAD 10 30.05.2018 11:37
Функция SSGET и набор примитивов типа "текст", содержащих спецсимволы. Ivv LISP 5 24.05.2018 15:35
Помогите найти ошибку с Lisp "автонумерацией листов" tujn08 LISP 14 12.05.2015 17:20
LISP: как создать набор примитивов из всех открытых рисунков? nikе LISP 6 29.07.2011 23:04
Как сделать набор из примитивов, которые в блоках? (LISP) Shraybicus LISP 19 15.12.2010 23:49