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

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

Фильтр команды "ssget"

Ответ
Поиск в этой теме
Непрочитано 28.04.2008, 17:47
Фильтр команды "ssget"
Mazai
 
Москва
Регистрация: 04.04.2008
Сообщений: 97

Здраствуйте.
У меня вопрос - можно ли одним запросом с помощью команды "SSGET" сформировать набор, в котором одновременно отбирались бы примитивы типа "LINE" и "LWPOLYLINE". Или в этой команде отбор примитивов возможен только по одному типу? Если это так, то как ещё можно это сделать? (как сформировать два набора, потом их объеденить и отсортировать - я знаю - получается много лишних действий)
Просмотров: 11395
 
Непрочитано 30.04.2013, 16:59
#21
sasha_lif

Дизайнер-конструктор
 
Регистрация: 29.05.2004
Kiev
Сообщений: 1,179
<phrase 1=


Подскажите, как поправить код
Написал сам, вроде работает.
Не сильно разбираюсь,как сделать:
Сейчас программа автоматически находит и печатает ВСЕ рамки-блоки.

А хотелось бы задать область (т.е. обвожу часть чертежа, и только там ищутся эти рамочки для распечатки)

Код:
[Выделить все]
 (defun c:asd (/ )
  (vl-load-com)
  (setq s1 (ssget "_X" (list (assoc 8 (entget (car (entsel "Выберите объект, находящийся на необходимом слое: ")))))))	
  (setq l1 (sslength s1))

(setq  blip (getvar "BLIPMODE"))
(setq  echo (getvar "CMDECHO"))
(setvar "CMDECHO"  0)
(setvar "BLIPMODE" 0)

  
(setq i 0) 
(while (< i= l1) 
	
  (setq s11 (ssname s1 i))
  (setq a_nach (entget s11))
  (setq a (entget s11)) ; получение списка со всеми координатами точек прямоугольника
  
  	(setq t1 (assoc 10 a))    (setq t1_x (car (cdr t1))) (setq t1_y (car (cdr (cdr t1))))
	(setq a (subst '(11 11stop) t1 a))
	(setq t2 (assoc 10 a))    (setq t2_x (car (cdr t2))) (setq t2_y (car (cdr (cdr t2))))
	(setq a (subst '(11 11stop) t2 a))
	(setq t3 (assoc 10 a))    (setq t3_x (car (cdr t3))) (setq t3_y (car (cdr (cdr t3))))
	(setq a (subst '(11 11stop) t3 a))
	(setq t4 (assoc 10 a))    (setq t4_x (car (cdr t4))) (setq t4_y (car (cdr (cdr t4))))
	
	

	(setq tdiag_x_max (max t2_x t3_x t4_x))
	(setq tdiag_y_max (max t2_y t3_y t4_y))
	(setq tdiag_x_min (min t2_x t3_x t4_x))
	(setq tdiag_y_min (min t2_y t3_y t4_y))



(setq point1 (list tdiag_x_min tdiag_y_min))
(setq point2 (list tdiag_x_max tdiag_y_max))

(setq Dy (- tdiag_y_max tdiag_y_min))
(setq Dx (- tdiag_x_max tdiag_x_min))

(setq Dyx (/ Dy Dx))

(if (> Dy Dx ) (setq ugol "P")(setq ugol "l"))

(command "_-plot" "y"  ""  ""  ""  ""  ugol  ""   "" point1 point2 ""  ""  ""   ""  ""  ""   ""  ""   "")
(setq i (1+ i))

)

(setvar "CMDECHO"  echo)
(setvar "BLIPMODE" blip)

)
Вложения
Тип файла: dwg
DWG 2007
asd.dwg (118.4 Кб, 822 просмотров)
__________________
Kiev, Ukraine
sasha_lif вне форума  
 
Непрочитано 30.04.2013, 18:59
#22
skkkk


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


А если заменить (ssget "_X".... на (ssget "_C" (getpoint) (getpoint)...., не поможет? Проверить сейчас не могу.
skkkk вне форума  
 
Непрочитано 30.04.2013, 20:05
#23
sasha_lif

Дизайнер-конструктор
 
Регистрация: 29.05.2004
Kiev
Сообщений: 1,179
<phrase 1=


Ну во -первых указанием двух точек не всегда годится, т.к. распечатывать надо не всегда то, что лежит внутри прямоугольника. А часто часть чертежей с одного места, часть с другого...
Хотелось бы именно ВЫДЕЛЕННУЮ ЧАСТЬ ЧЕРТЕЖА
сделал так:
Код:
[Выделить все]
 (setq s1 (ssget "P" '((8 . "format")) ) 
Но что-то не всегда срабатывает, по этому предварительно выделенному части чертежа.
__________________
Kiev, Ukraine
sasha_lif вне форума  
 
Непрочитано 01.05.2013, 09:04
#24
Do$

AutoCAD/Civil3D LISP/C#
 
Регистрация: 15.08.2008
Санкт-Петербург
Сообщений: 1,701
Отправить сообщение для Do$ с помощью Skype™


(setq s1 (ssget '((8 . "format")))
Do$ вне форума  
 
Непрочитано 07.05.2013, 23:35
#25
sasha_lif

Дизайнер-конструктор
 
Регистрация: 29.05.2004
Kiev
Сообщений: 1,179
<phrase 1=


Do$, большое спасибо, так и сделал ))
__________________
Kiev, Ukraine

Последний раз редактировалось Кулик Алексей aka kpblc, 07.05.2013 в 23:57.
sasha_lif вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Фильтр команды "ssget"



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Для чего нужны фильтры слоев?Как ими пользоваться? Aysulu AutoCAD 43 17.04.2019 10:59
Изменение полей (fields) RomanM AutoCAD 20 24.08.2016 22:39
запуск программы из AutoCADа kminas Программирование 19 15.06.2012 13:42
Отображение GRID при выполнении команды PAN REALTIME MAX-MAX AutoCAD 10 29.06.2009 18:43
Прозрачные команды Vova AutoCAD 17 21.06.2006 05:33