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

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

Выбор рамкой под углом

Ответ
Поиск в этой теме
Непрочитано 12.01.2014, 22:12 #1
Выбор рамкой под углом
roaa
 
ОПС
 
Kazakhstan
Регистрация: 29.03.2012
Сообщений: 128

Понадобилась функция по выбору рамкой под углом. На форуме не нашел, пришлось попробовать самому.
Может, кому-то и понадобится. В функции использованы некоторые коды Lee Mac.

Код:
[Выделить все]
 
(defun _sensor_select_frame ( clr illum ang1 / _getosmode _grX _dyn_frame p1 p2 )
;;; Функция выбора рамкой
;;; Аргументы:
;;;   clr - цвет рамки   
;;;   illum - t с подсветкой, nil - без
;;;   ang1 - угол в радианах, если nil предлагает задать
;;; Вызов:
;;;   (_sensor_select_frame 1 nil nil)
;;; Возвращает:
;;;   Список координат точек рамки
  (redraw)
  
  (defun _getosmode ( os / lst )
    (foreach mode
     '(
         (0001 . "_end")
         (0002 . "_mid")
         (0004 . "_cen")
         (0008 . "_nod")
         (0016 . "_qua")
         (0032 . "_int")
         (0064 . "_ins")
         (0128 . "_per")
         (0256 . "_tan")
         (0512 . "_nea")
         (1024 . "_qui")
         (2048 . "_app")
         (4096 . "_ext")
         (8192 . "_par")
      )
      (if (not (zerop (logand (car mode) os)))
        (setq lst (cons "," (cons (cdr mode) lst)))
      )
    )
    (apply 'strcat (cdr lst))
  )  
  
  (defun _grX ( p s c / -s r q )
    (setq -s (- s)
           r (/ (getvar 'VIEWSIZE) (cadr (getvar 'SCREENSIZE)))
           p (trans p 1 3)
    )
    (grvecs
      (list c 
            (list -s      -s) (list s        s)
            (list -s (1+ -s)) (list (1- s)   s)
            (list (1+ -s) -s) (list s   (1- s))
            
            (list -s       s) (list s       -s)
            (list -s  (1- s)) (list (1- s)  -s)
            (list (1+ -s)  s) (list s  (1+ -s))
      )
      (list
            (list r  0. 0. (car  p))
            (list 0. r  0. (cadr p))
            (list 0. 0. r  0.)
            (list 0. 0. 0. 1.)
      )
    )
    p
  )
  
  (defun _dyn_frame ( p1 p2 p3 ang1 ang2  clr illum / pd1 pd2 )  
    (setq pd1 (inters p1 (polar p1 ang2 100) p3 (polar p3 ang1 100) nil)
          pd2 (inters p2 (polar p2 ang2 100) p3 (polar p3 ang1 100) nil)
    )
    (grvecs (list (if (eq illum 't) (- clr) clr) p1 p2  p2 pd2  pd2 pd1  pd1 p1))
    (list pd2 pd1)
  )
  
  (defun *error* ( msg )
    (princ "\nЗавершено пользователем.  ")
    (redraw)
  )
    
  (if 
    (and (eq (type clr) 'int)
         (setq p1   (getpoint "\nSpecify Base Point: "))
         (if (not ang1)(setq ang1 (getangle p1 "\nSpecify an Angle: "))(member (type ang1) '(int real)))
         (setq ang2 (+ ang1 (* 0.5 pi)))
    )
    (progn
      (setq os (_getosmode (getvar 'OSMODE)))
      (princ (setq ms "\nSpecify Opposite Corner: "))
      (while 
        (progn
          (and (setq gr (grread t 15 0) g1 (car gr) pd (cadr gr)) (/= g1 3))
          (cond
                (  (= g1 5) (redraw)
                   (if
                     (and
                       (zerop (logand 16384 (getvar 'OSMODE)))
                       (setq op (osnap pd os))
                     )
                     (_grX (setq pd op) 6 20)
                   )
                   (setq p34
                             (_dyn_frame p1 
                               (setq p2 (inters p1 (polar p1 ang1 100) pd (polar pd ang2 100) nil))
                               pd ang1 ang2 clr illum
                             )
                   )
                )
                (  (or (member gr '((2 13) (2 32)))(or (= g1 11) (= g1 25)))
                   (setq p34 nil)
		)
          )
        )
      )
      (redraw)
      (if p34 (cons p1 (cons p2 p34)) nil)
    )
  )
)

Последний раз редактировалось roaa, 19.01.2014 в 11:12.
Просмотров: 6801
 
Непрочитано 16.01.2014, 18:33
#2
skkkk


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


roaa, идея замечательная, поэтому есть замечания и пожелания:
1. При нажатии на правую кнопку (Enter) на запрос базовой точки (и/или угла) напрашивается, на мой взгляд, запрос выбора опорного объекта, например, линии или сегмента полилинии, с которого возьмется угол рамки.
2. У динамической рамки, как бы это выразиться, всего одна степень свободы, т.е. прямоугольник растягивается только по высоте либо только по ширине, что не очень удобно.
3. Если нажать Esc при указании второго угла рамки, то на чертеже эта рамка остается. Т.е. нужна обработка ошибок.
4. Раз программа так называется (ключевое слово "выбор"), то и возвращать она, по-хорошему, должна набор, а не список точек.
5. Хочется, чтоб рамка была как родная автокадовская: в одну сторону секущая (и к тому же штриховая), в другую - охватывающая.
6. Можно добавить возможность производить выбор циклически, используя первый заданный угол.
7. При выборе с Shift'ом с попавших в рамку уже выбранных объектов хорошо бы, чтоб выделение снималось.
8. Ну и неплохо бы иметь возможность добавлять фильтры выбора.
А там и в "Готовые программы" ее можно
skkkk вне форума  
 
Непрочитано 16.01.2014, 18:40
#3
Nike

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


чета она ничего не выбирает
Nike вне форума  
 
Непрочитано 16.01.2014, 19:13
1 | #4
skkkk


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


Цитата:
Сообщение от Nike Посмотреть сообщение
ничего не выбирает
Она (пока?) возвращает точки границы выбранной области. Видимо, по замыслу roaa, эти точки должны скармливаться как аргументы ssget'у с опцией "_WP" или "_CP".
Сделать выбор можно, например, так (при подгруженном лиспе из первого поста):
Код:
[Выделить все]
 (defun C:TEST ( / lst ss)
	(sssetfirst nil nil)
	(setq lst (_sensor_select_frame 1 T)
		  ss (ssget "_CP" lst))
	(sssetfirst nil ss)
	(princ (strcat "\nВыбрано " (vl-princ-to-string (sslength ss)) " примитивов"))
	(princ) 
)
skkkk вне форума  
 
Автор темы   Непрочитано 17.01.2014, 23:52
#5
roaa

ОПС
 
Регистрация: 29.03.2012
Kazakhstan
Сообщений: 128


Цитата:
Сообщение от skkkk
roaa
1. Функция и задумывалась именно для получения точек, а дальше на усмотрение, кто как обработает. Выбор опорного объекта потребует дополнительной обработки, да и количество кликов это не уменьшит.
2. Тут у меня пока не хватает знаний как от этого покрасивше избавиться.
3. Добавил.
4. Да...неудачное название
5-8. Это функция...уж простите. К тому же Ваш код практически это выполняет.

Последний раз редактировалось roaa, 17.01.2014 в 23:59.
roaa вне форума  
 
Непрочитано 18.01.2014, 19:12
#6
Do$

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


У меня лично когда-то была "идея фикс" сделать свой инструмент выбора взамен стандартного SSGET с использованием GRREAD. Так вот, споткнулся я как раз на этом:
Цитата:
Сообщение от skkkk Посмотреть сообщение
5. Хочется, чтоб рамка была как родная автокадовская: в одну сторону секущая (и к тому же штриховая), в другую - охватывающая.
100% "родную автокадовскую" сделать, скорее всего, не получится. Мало того, что она штриховая, так еще прямоугольник выбора закрашивается зеленым или синим цветом, в зависимости от типа рамки. Закрашивание это - прозрачное, с помощью лиспа такого не сделать и никак не сымитировать. По крайней мере, у меня не получилось.
__________________
Толковый выбор приходит с опытом, а к нему приводит выбор бестолковый. (The Mechanic)
Do$ вне форума  
 
Автор темы   Непрочитано 18.01.2014, 23:12
#7
roaa

ОПС
 
Регистрация: 29.03.2012
Kazakhstan
Сообщений: 128


Do$,
Для прямоугольной рамки это нетрудно
Код:
[Выделить все]
 
(defun test ( / pt1 )
;;; Возвращает: созданный набор
;;; для проверки: (sssetfirst nil (test))
  (if (setq pt1 (getpoint "Первый угол:  "))
    (progn 
      (command "_.select" "_box" pt1 pause "" '"_p" "") 
      (ssget "_p")
    )
  )
)
----- добавлено через ~1 мин. -----
Немного изменил код. Теперь вторая точка находится динамически, немного удобней. Добавил возможность задания угла.

Последний раз редактировалось roaa, 19.01.2014 в 11:19.
roaa вне форума  
 
Непрочитано 19.01.2014, 12:56
#8
Do$

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


command "_.select"... - это практически командная обертка SSGET, даже, наверное, ее изначальной ObjectARX реализации. Но не все, что доступно в ARX можно реализовать в ЛИСПе, в том числе, с использованием командных методов. К примеру, сможешь ты в этом коде сделать так, чтобы стандартное сообщение "Select objects:" ("Выберите объекты:") заменить своим? Причем таким образом, чтобы оно висело в комстроке, пока идет выбор и бегало за курсором, если включен динамический ввод?
__________________
Толковый выбор приходит с опытом, а к нему приводит выбор бестолковый. (The Mechanic)
Do$ вне форума  
 
Непрочитано 12.02.2020, 14:50
1 | 1 #9
koMon


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


Цитата:
Сообщение от Do$ Посмотреть сообщение
сделать свой инструмент выбора взамен стандартного SSGET с использованием GRREAD
что-то типа такого?
Миниатюры
Нажмите на изображение для увеличения
Название: CW_Selection.gif
Просмотров: 107
Размер:	4.31 Мб
ID:	223082  
koMon вне форума  
 
Непрочитано 12.03.2020, 13:46
#10
merkur1y

дороги
 
Регистрация: 12.07.2019
СПб
Сообщений: 134


Цитата:
Сообщение от koMon Посмотреть сообщение
что-то типа такого?
реально ли разместить окончательный код, чтобы было как в миниатюре выше...
а то не спецу, честно говоря не понятно как совместить ваши коды в один, если не подразумевалось конечно, что они будут использованы по очереди...
merkur1y вне форума  
 
Непрочитано 12.03.2020, 16:59
#11
Boxa

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


В старых версиях это может быть и полезно, но в новых то версиях (как минимум с 2017) можно же выбирать с помощью лоссо, зачем еще код какой то.
По поводу картинки, kоMon специально оживил этот шестилетний некротопик , что бы похвастаться =)
Boxa вне форума  
 
Непрочитано 13.03.2020, 09:51
#12
merkur1y

дороги
 
Регистрация: 12.07.2019
СПб
Сообщений: 134


так лассо не удобно что вести надо аккуратно - вымерять ровную линию, а на гифке то чётко всё показывает прям как надо...
в теме https://forum.dwg.ru/showthread.php?t=7620, с которой я сюда попал, один из форумчан (kp+) "раскрыл" великолепный секрет, который эту рамку заменяет: после нажатия л.к.м. написать "_w", "_f " или "_с" и тогда в принципе задача решается удобнее чем этим лассо вымерять ровную линию
merkur1y вне форума  
 
Непрочитано 13.03.2020, 14:30
#13
koMon


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


Цитата:
Сообщение от merkur1y Посмотреть сообщение
не понятно как совместить ваши коды в один
кодов для совмещения нет. он один. то есть всё крутится, перемещается и переключается в одном запуске.
Цитата:
Сообщение от Boxa Посмотреть сообщение
с 2017) можно же выбирать с помощью лоссо
merkur1y верно подметил, что лассо это не от слова совсем удобная вещь для тонкого выбора, и потом у него же и был первый реанимирующий пост про выбор рамкой под углом. и да, я, присоединившись к группе реаниматолога(ов), взглянул на задачу под несколько другим углом рамки и всё.
Цитата:
Сообщение от Boxa Посмотреть сообщение
kоMon специально оживил этот шестилетний некротопик , что бы похвастаться =)
Boxa, ну вот чем здесь хвастать?!
я знаю что могу, ты знаешь что я могу, и вероятно даже
знает что я могу.
поэтому рассматривай это как антисаNETарный проход в защиту зашпинянного, вечно-живого, с готовностью идущего на помощь и молодого лиспа
koMon вне форума  
 
Непрочитано 14.03.2020, 03:07
#14
skkkk


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


Цитата:
Сообщение от Do$ Посмотреть сообщение
сделать свой инструмент выбора взамен стандартного SSGET с использованием GRREAD
Цитата:
Сообщение от koMon Посмотреть сообщение
что-то типа такого?
Цитата:
Сообщение от merkur1y Посмотреть сообщение
реально ли разместить окончательный код, чтобы было как в миниатюре выше...
Цитата:
Сообщение от Boxa Посмотреть сообщение
kоMon специально оживил этот шестилетний некротопик , что бы похвастаться =)
Цитата:
Сообщение от koMon Посмотреть сообщение
кодов для совмещения нет. он один. то есть всё крутится, перемещается и переключается в одном запуске.




Цитата:
Сообщение от merkur1y Посмотреть сообщение
честно говоря не понятно как совместить ваши коды в один
Если речь про #1 и #4, то нужно просто подгрузить оба кода и вызывать командой TEST.
Я в свое время этот код под себя допилил - стояла подобная задача, но использовал его от силы несколько раз. Хотел выложить на форум, но подзабыл, видимо, да и интереса к этой теме не было.
Там из свистелок только возможность выбора рамкой секущей или опоясывающей, в зависимости от направления рамки (по принципу родной рамки ssget), а также возможность с зажатым Shift'ом удалять объекты из набора (только, если ExpressTools установлены). Из перделок (заливка рамки фоном, верчение её в реальном времени по кругу, подсветка попавших в рамку примитивов) ничего нет. Но для задачи выбрать все объекты, находящиеся между двумя прямыми, может, и сойдет.
Код:
[Выделить все]
 ;;; Команда для выбора объектов наклонной рамкой.
;;; С выбранных до вызова команды объектов выделение не снимается.
;;; Цвет рамки назначается равным цвету текущего слоя.
;;; Если вторая точка рамки левее первой, то рамка секущая, если правее - охватывающая.
;;; Если установлены Express Tools, то при нажатом Shift рамка отменит выделение попавших в нее объектов.
;;; http://forum.dwg.ru/showthread.php?t=107683
(vl-load-com)
(defun C:SLOPING-SELECT	( / *error*
						;;; Вспомогательные функции:
							_grX ; динамическая отрисовка красного крестика (автор Lee Mac)
							_dyn_frame ; отрисовка динамической рамки (автор Lee Mac)
							;_getosmode ; привязки в grvecs (автор Lee Mac)
							_sensor_select_frame ;получение списка точек динамической рамки (автор roaa)
							sset1_plus_sset2 ; объединение двух наборов в один(автор wkiernan)
						;;; Локальные переменные:
							total_ss ;общий набор объектов, включая предварительно выбранные
							lst ; список точек рамки
							frame_angle ; угол поворота рамки
							oldOSMODE ; начальное значение привязки
							ss ; набор, полученный в пределах одной итерации
							i ;	счетчик удаления примитивов их набора при зажатом Shift
							p1 ; первая точка рамки
							pd1 pd2 ; точки рамки
						;;; Глобальная переменная *FRAMEANGLE* - угол поворота рамки
						)
	(defun *error* (msg)
		(setvar "SNAPANG" 0)
		(if oldOSMODE (setvar "OSMODE" oldOSMODE))
		(princ msg)
		(redraw)
		(sssetfirst nil total_ss)
		(sssetfirst nil nil)
	) ;_end of defun *error*
	
;;; --------------------------------------------------------
;;; Описание вспомогательных функций

	(defun _grX ( p s c / -s r q )
		(setq -s (- s)
			   r (/ (getvar 'VIEWSIZE) (cadr (getvar 'SCREENSIZE)))
			   p (trans p 1 3)
		)
		(grvecs
		  (list c 
				(list -s      -s) (list s        s)
				(list -s (1+ -s)) (list (1- s)   s)
				(list (1+ -s) -s) (list s   (1- s))
				
				(list -s       s) (list s       -s)
				(list -s  (1- s)) (list (1- s)  -s)
				(list (1+ -s)  s) (list s  (1+ -s))
		  )
		  (list
				(list r  0. 0. (car  p))
				(list 0. r  0. (cadr p))
				(list 0. 0. r  0.)
				(list 0. 0. 0. 1.)
		  )
		)
		p
	) ;_end of defun _grX
	(defun _dyn_frame ( p1 p2 p3 ang1 ang2  clr illum / )  
		(setq pd1 (inters p1 (polar p1 ang2 100) p3 (polar p3 ang1 100) nil)
			  pd2 (inters p2 (polar p2 ang2 100) p3 (polar p3 ang1 100) nil)
		)
		(grvecs (list (if (eq illum 't) (- clr) clr) p1 p2  p2 pd2  pd2 pd1  pd1 p1))
		(list pd2 pd1)
	) ;_end of defun _dyn_frame
	
  ; (defun _getosmode ( os / lst )
    ; (foreach mode
     ; '(
         ; (0001 . "_end")
         ; (0002 . "_mid")
         ; (0004 . "_cen")
         ; (0008 . "_nod")
         ; (0016 . "_qua")
         ; (0032 . "_int")
         ; (0064 . "_ins")
         ; (0128 . "_per")
         ; (0256 . "_tan")
         ; (0512 . "_nea")
         ; (1024 . "_qui")
         ; (2048 . "_app")
         ; (4096 . "_ext")
         ; (8192 . "_par")
      ; )
      ; (if (not (zerop (logand (car mode) os)))
        ; (setq lst (cons "," (cons (cdr mode) lst)))
      ; )
    ; )
    ; (apply 'strcat (cdr lst))
  ; ) ;_end of defun _getosmode
	
	(defun _sensor_select_frame ( clr illum p1 ang1 / ang1 ang2 gr g1 pd p34 p2)
		;;; Функция выбора рамкой
		;;; автор - roaa
		;;; http://forum.dwg.ru/showthread.php?t=107683
		;;; Аргументы:
		;;;   clr - цвет рамки   
		;;;   illum - t с подсветкой, nil - без
		;;;   ang1 - угол в радианах, если nil предлагает задать
		;;; Вызов:
		;;;   (_sensor_select_frame 1 nil nil)
		;;; Возвращает:
		;;;   Список координат точек рамки
		(if 
			(and (eq (type clr) 'int)
				 (member (type ang1) '(int real))
				; (if ang1 (setq frame_angle ang1 *FRAMEANGLE* ang1)) 
				 (setq ang2 (+ ang1 (* 0.5 pi)))
			) ;_end of and
			(progn
				; (setq os (_getosmode (getvar 'OSMODE)))
				(princ "\nПротивоположный угол: ")
				(while 
				  (progn
					(and (setq gr (grread t 15 1) g1 (car gr) pd (cadr gr)) (/= g1 3))
					(cond
					  ( (= g1 5) ;cond #1
						(redraw)
						; (if
							; (and
								; (zerop (logand 16384 (getvar 'OSMODE)))
								; (setq op (osnap pd os))
							; )
							; (_grX (setq pd op) 6 20)
							(_grX pd 3 20)
							(_grX p1 3 20)
						; ) ;_end of if
						(setq p34
							(_dyn_frame p1 
								(setq p2 (inters p1 (polar p1 ang1 100) pd (polar pd ang2 100) nil))
								pd ang1 ang2 clr illum
							) ;_end of _dyn_frame
						) ;_end of setq
					  ) ;_end of cond #1
					  (	(or (member gr '((2 13) (2 32)))(or (= g1 11) (= g1 25))) ;cond #2
						(setq p34 nil)
					  ) ;_end of cond #2
					) ;_end of cond
				  ) ;_end of progn
				) ;_end of while
				(redraw)
				(if p34 (cons p1 (cons p2 p34)) nil)
			) ;_end of progn
		) ;_end of if
	) ;_end of defun _sensor_select_frame
	

	(defun sset1_plus_sset2 (sset1 sset2 / sset3)
		;;; Функция объединяет два набора.
		;;; Добавляет оба набора в новый набор.
		;;; Аргументы - наборы sset1 и sset2 или nil.
		;;; Возвращает созданный набор, 
		;;; объединяющий два входящих набора, 
		;;; исключая повторяющиеся объекты.
		;;; Если один из аргументов nil, то возвращается 
		;;; новый набор, совпадающий со входящим.
		;;; Если оба аргумента nil, то возвращается пустой набор.
		;;; http://forums.autodesk.com/t5/Visual-LISP-AutoLISP-and-General/how-to-join-two-selection-sets/td-p/2338945
		;;; Код в теме по ссылке выше, в посте №6. 
		;;; Автор поста: wkiernan
		(setq sset3 (ssadd))
		(if (= (type sset1)(quote pickset))
			(setq scount (sslength sset1))
			(setq scount 0)
		)
		(while (> scount 0)
			(ssadd (ssname sset1 (setq scount (1- scount))) sset3)
		)
		(if (= (type sset2)(quote pickset))
		(setq scount (sslength sset2))
		(setq scount 0)
		)
		(while (> scount 0)
		(ssadd (ssname sset2 (setq scount (1- scount))) sset3)
		)
		sset3
	) ;_end of defun sset1_plus_sset2	

	
;;; --------------------------------------------------------
;;; Описание основной функции

	(setq total_ss (ssget "_I")
		  lst T 
		  frame_angle nil
		  oldOSMODE (getvar "OSMODE")
	) ;_end of setq
	(while lst
		(setvar "OSMODE" 0)
		(if frame_angle (setvar "SNAPANG" frame_angle))
		(initget "Изменить")
		(setq p1 
				(if frame_angle 
					(getpoint "\nПервый угол рамки или [Изменить наклон] ")
					(getpoint "\nПервый угол рамки: ")
				)
		) ;_end of setq
		(setvar "OSMODE" oldOSMODE)
		(if (eq p1 "Изменить") (setq frame_angle nil p1 (cadr (grread T))))
		(if (null p1) (setq lst nil))
		(if (and (null frame_angle) p1) 
			(or
				(setq frame_angle 
							(getangle p1 
								(strcat "\nНаклон: " 
										(if *FRAMEANGLE*
											(strcat 
												"<Предыдущий (" 
												(rtos (/ (* *FRAMEANGLE* 180.0) pi) 2 0)
												"°)>"
											)
											""
										) ;_end of if
								) ;_end of strcat
							) ;_end of getangle
				) ;_end of setq
				(setq frame_angle *FRAMEANGLE*)
			) ;_end of or
		) ;_end of if
		(if frame_angle (setq *FRAMEANGLE* frame_angle))
		(if p1 
			(setq lst 
				(_sensor_select_frame
					(vla-get-color 
						(vla-item 
							(vla-get-layers (vla-get-activedocument (vlax-get-acad-object))) 
							(getvar "CLAYER")
						) ;_end of vla-item
					)  ;_end of vla-get-color
					T
					p1				
					frame_angle 
				) ;_end of _sensor_select_frame
			) ;_end of setq
		) ;_end of if
		(setvar "SNAPANG" 0)
		(if lst
			(progn
				(if (<= (car pd2) (car p1))(setq ss (ssget "_CP" lst))(setq ss (ssget "_WP" lst)))
				(if (and ss acet-sys-shift-down (acet-sys-shift-down))
					(repeat (setq i (sslength ss))
						(setq i (1- i))
						(if (ssmemb (ssname ss i) total_ss)
							(ssdel (ssname ss i) total_ss)
							
						) ;_end of if
					) ;_end of repeat
					(setq total_ss (sset1_plus_sset2 total_ss ss))
				) ;_end of if
			) ;_end of progn
		) ;_end of if
		(sssetfirst nil nil)
		(sssetfirst nil total_ss)
		(princ)
	) ;_end of while
	(princ)
) ;_end of defun C:SLOPING-SELECT

Миниатюры
Нажмите на изображение для увеличения
Название: 1510932581196811168.png
Просмотров: 183
Размер:	2.37 Мб
ID:	224021  
skkkk вне форума  
 
Непрочитано 16.03.2020, 10:09
#15
merkur1y

дороги
 
Регистрация: 12.07.2019
СПб
Сообщений: 134


что я могу сказать, молодые люди...приятно с Вами общаться
и так сказать делом помогли, и настроение подняли
благодарю за код
merkur1y вне форума  
 
Непрочитано 16.03.2020, 20:43
#16
koMon


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


Я хочу выразить неиссякаемый респект skkkk, за тонкий ироничный (ирония - лучший юмор имхо) фрагмент "Пятерых из Простолиспово". Я настойчиво прошу автора приделать автофокус чтобы завершить гармонически фрагмент. Offtop: Про переделки как-то не очень)))
koMon вне форума  
 
Непрочитано 17.03.2020, 10:04
#17
skkkk


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


Цитата:
Сообщение от koMon Посмотреть сообщение
Я настойчиво прошу автора приделать автофокус чтобы завершить гармонически фрагмент.
Окай.
Миниатюры
Нажмите на изображение для увеличения
Название: screenshot_1-5-768x398.png
Просмотров: 120
Размер:	10.9 Кб
ID:	224111  
skkkk вне форума  
 
Непрочитано 17.03.2020, 10:19
#18
koMon


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


ну ёперный театр!?
Increase Size Decrease Size Нажмите для просмотра
https://www.youtube.com/watch?v=NZuIvqhRG6g
koMon вне форума  
 
Непрочитано 17.03.2020, 11:03
#19
koMon


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


так будет получше
Миниатюры
Нажмите на изображение для увеличения
Название: Skkkk.jpg
Просмотров: 31
Размер:	553.4 Кб
ID:	224123  
koMon вне форума  
 
Непрочитано 17.03.2020, 20:36
#20
skkkk


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


Цитата:
Сообщение от koMon Посмотреть сообщение
так будет получше
Тогда уж так



Но вообще, "Успенский" в этой теме, конечно, roaa.

А ты, "Печкин", давай уже выкладывай свою "посылку", а не то...

Миниатюры
Нажмите на изображение для увеличения
Название: desktop.jpg
Просмотров: 92
Размер:	86.9 Кб
ID:	224151  Нажмите на изображение для увеличения
Название: 2_08.jpg
Просмотров: 92
Размер:	64.7 Кб
ID:	224152  
skkkk вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Выбор рамкой под углом

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Выбор в автокаде ASЪ AutoCAD 39 26.06.2014 20:19
Выбор и подсветка объектов в 2013 Акаде. Astartes AutoCAD 4 20.05.2013 13:24
Выбор рамкой (работает глючно) Strannyk AutoCAD 2 24.05.2011 11:40
Выбор объектов рамкой, вне экрана? Berejnoy AutoCAD 8 03.01.2008 13:44
Выбор примитивов в функции (command) mmax Программирование 12 19.05.2006 20:02