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

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

Пожалуйста, помогите, нужен lisp для выбора объектов

Закрытая тема
Поиск в этой теме
Непрочитано 03.04.2013, 23:00 #1
Пожалуйста, помогите, нужен lisp для выбора объектов
macros55
 
Регистрация: 02.04.2013
Сообщений: 24

в чертежа есть многих точки, многих линии и многих других объектов. Нарисуйте многоугольник линию края, выберите линию и автоматические выбрать все точки, многих линии и многих других объектов. Есть ли у вас такое Lisp? Пожалуйста, помогите
Просмотров: 7546
 
Непрочитано 03.04.2013, 23:06
#2
Солидворкер
Moderator

Конструктор (машиностроение)
 
Регистрация: 23.10.2006
Россия
Сообщений: 23,267
<phrase 1=


Поскольку речь о Lisp, перемещено в раздел Программирование.

Автору советую попробовать расписать чуть более понятно свой вопрос.

It may be better to write in English?
Солидворкер вне форума  
 
Непрочитано 03.04.2013, 23:18
#3
skkkk


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


Может, Выделение объектов в области контура, AutoCAD или LISP.Выделение объектов в области контура поможет?
skkkk вне форума  
 
Автор темы   Непрочитано 03.04.2013, 23:54 очень спасибо
#4
macros55


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


очень спасибо skkkk

Последний раз редактировалось macros55, 04.04.2013 в 01:41.
macros55 вне форума  
 
Автор темы   Непрочитано 07.01.2016, 11:34
#5
macros55


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


друзей нужны ЛИСП.
При выборе нескольких объектов.
касаясь всех объектов выбраны.
Команда FS недействительным,потому что выбор одного объекта.
больше, чем нужно
macros55 вне форума  
 
Непрочитано 07.01.2016, 13:42
#6
Кулик Алексей aka kpblc
Moderator

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


Что, простите?
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 07.01.2016, 14:15
#7
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 11,499


Offtop: Человек с говорящим ником macros третий год просит написать ему лисп
Сергей812 вне форума  
 
Непрочитано 07.01.2016, 14:29
#8
Admin
Administrator


 
Регистрация: 21.08.2003
Сообщений: 4,466


Offtop: Он просто через переводчик пишет, как может.
Admin вне форума  
 
Автор темы   Непрочитано 07.01.2016, 15:26
#9
macros55


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


Naprimer commanda FS(fastsell) mojno sellect tolko odin obyekt...a mne nujno sellect neskolko obyet
macros55 вне форума  
 
Непрочитано 07.01.2016, 15:35
#10
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 11,499


FS:Будет несколько взаимопересекающихся объектов - выделит несколько. Чего вообще нужно то?
Сергей812 вне форума  
 
Автор темы   Непрочитано 07.01.2016, 15:59
#11
macros55


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


Все, что касается много выборного него, чтобы выбрать БЛОК,
macros55 вне форума  
 
Непрочитано 07.01.2016, 16:02
#12
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 11,499


выборного него? Пока не сформулируете вопрос полностью и вразумительно, в развернутом виде - никто не даст ответа.
Сергей812 вне форума  
 
Непрочитано 07.01.2016, 16:17
#13
VVA

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


Цитата:
Сообщение от macros55 Посмотреть сообщение
Naprimer commanda FS(fastsell) mojno sellect tolko odin obyekt...a mne nujno sellect neskolko obyet
Может быть SelSIM Александра Ривилиса?
Попробуй сформулировать вопрос на родном для себя языке.
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 07.01.2016, 17:16
#14
Profan


 
Регистрация: 25.12.2005
Москва
Сообщений: 13,627


Выборного ЕГО.
Profan вне форума  
 
Автор темы   Непрочитано 08.01.2016, 10:49
#15
macros55


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


Код:
[Выделить все]
 (defun c:ns (/ ss xs ls i ob n so) (vl-load-com)
  (if (setq ss (ssget))
    (progn
      (setq xs (ssget "x") ls (ssadd) i (sslength ss))
      (repeat i
        (setq ls (ssadd (setq ob (ssname ss (setq i (1- i)))) ls))
        (repeat (setq n (sslength xs))
          (if (not (minusp (vlax-safearray-get-u-bound (vlax-variant-value
                (vla-Intersectwith (vlax-ename->vla-object ob)
                (vlax-ename->vla-object (setq so (ssname xs
                (setq n (1- n))))) 0)) 1)))
            (setq ls (ssadd so ls)))
        )
      ) (sssetfirst nil ls)
    )
  ) (princ)
)
проблем это Выберите несколько объектов и запуске SELECTSIMILAR все объект выбранный и запуске Lisp(NS)не работает.

ещё проблем (NS) запуске выбирать несколько объект и запуске ENTER все объект выбранный на этот раз blok Не выбрано

Последний раз редактировалось Кулик Алексей aka kpblc, 08.01.2016 в 11:52.
macros55 вне форума  
 
Непрочитано 09.01.2016, 18:10
#16
VVA

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


Пробуй
Код:
[Выделить все]
 (defun c:ns (/ ss xs ls i ob n so) (vl-load-com)
  (if (setq ss (ssget "_I"))
    (progn
      (setq xs (ssget "_x" (list(cons 410 (getvar 'CTAB)))) ls (ssadd) i (sslength ss))
      (repeat i
        (setq ls (ssadd (setq ob (ssname ss (setq i (1- i)))) ls))
        (repeat (setq n (sslength xs))
          (if
            (VxGetInters
            (vlax-ename->vla-object ob)
            (vlax-ename->vla-object (setq so (ssname xs (setq n (1- n)))))
            acExtendNone
            )
            (setq ls (ssadd so ls))
            )
        )
      ) (sssetfirst nil ls)
    )
  ) (princ)
)

;
; -- Function VxGetInters
; Returns all intersection points between two objects.
; Copyright:
;   ©2000 MENZI ENGINEERING GmbH, Switzerland
; Arguments [Type]:
;   Fst = First object [VLA-OBJECT]
;   Nxt = Second object [VLA-OBJECT]
;   Mde = Intersection mode [INT]
;         Constants:
;         - acExtendNone           Does not extend either object.
;         - acExtendThisEntity     Extends the Fst object.
;         - acExtendOtherEntity    Extends the Nxt object.
;         - acExtendBoth           Extends both objects.
; Return [Type]:
;   > List of points '((1.0 1.0 0.0)...[list]
;   > Nil if no intersection found
; Notes:
;   - None
; 
(defun VxGetInters (Fst Nxt Mde / IntLst PntLst)
 (setq IntLst (vlax-invoke Fst 'IntersectWith Nxt Mde))
 (cond
  (IntLst
   (repeat (/ (length IntLst) 3)
    (setq PntLst (cons
                  (list
                   (car IntLst)
                   (cadr IntLst)
                   (caddr IntLst)
                  )
                  PntLst
                 )
          IntLst (cdddr IntLst)
    )
   )
   (reverse PntLst)
  )
  (T nil)
 )
)
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Автор темы   Непрочитано 10.01.2016, 00:34
#17
macros55


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


VVA очень спасибо

----- добавлено через ~36 мин. -----
VVA ещё проблем отметки нас есть разные и потом что разные отметки он не работает..только же работу в отметки..
macros55 вне форума  
 
Непрочитано 10.01.2016, 10:23
#18
VVA

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


Цитата:
Сообщение от macros55 Посмотреть сообщение
отметки нас есть разные и потом что разные отметки он не работает
Предварительно Z или уровень всех объектов нужно привести к одному числу (Z=0). Смотри Z0
Другие варианты можно посмотреть здесь LISP. Обнуление координаты Z (аналог FLATTEN )
__________________
Как использовать код на Лиспе читаем здесь

Последний раз редактировалось VVA, 10.01.2016 в 16:51.
VVA вне форума  
 
Автор темы   Непрочитано 10.01.2016, 15:07
#19
macros55


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


Я должен разных проектов отметки, а это невозможно там все отметки 0
macros55 вне форума  
 
Непрочитано 10.01.2016, 16:49
#20
VVA

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


Код:
[Выделить все]
(defun c:ns (/ ss xs ls i ob n so)
  (vl-load-com)
  (if (setq ss (ssget "_I"))
    (progn
      (setq xs (ssget "_x" (list (cons 410 (getvar 'CTAB))))
	    ls (ssadd)
	    i  (sslength ss)
      )
      (repeat i
	(setq ls (ssadd (setq ob (ssname ss (setq i (1- i)))) ls))
	(repeat	(setq n (sslength xs))
	  (if
	    (and
	      (vlax-write-enabled-p
		(vlax-ename->vla-object
		  (setq so (ssname xs (setq n (1- n))))
		)
	      )
	      (not
		(minusp
		  (cdr
		    (assoc
		      62
		      (entget
			(tblobjname "Layer" (cdr (assoc 8 (entget so))))
		      )
		    )
		  )
		)
	      )
	      (vlax-write-enabled-p (vlax-ename->vla-object ob))
	      (VxGetIntersZ0
		(vlax-ename->vla-object ob)
		(vlax-ename->vla-object so)
		acExtendNone
	      )
	    )
	     (setq ls (ssadd so ls))
	  )
	)
      )
      (sssetfirst nil ls)
      (princ "\nSelect ")
      (princ (sslength ls))
      (princ " primitives")
    )
    (alert "Please, select primives first")
  )
  (princ)
)

;;;;
;;;; -- Function VxGetInters
;;;; Returns all intersection points between two objects.
;;;; Copyright:
;;;;   ©2000 MENZI ENGINEERING GmbH, Switzerland
;;;; Arguments [Type]:
;;;;   Fst = First object [VLA-OBJECT]
;;;;   Nxt = Second object [VLA-OBJECT]
;;;;   Mde = Intersection mode [INT]
;;;;         Constants:
;;;;         - acExtendNone           Does not extend either object.
;;;;         - acExtendThisEntity     Extends the Fst object.
;;;;         - acExtendOtherEntity    Extends the Nxt object.
;;;;         - acExtendBoth           Extends both objects.
;;;; Return [Type]:
;;;;   > List of points '((1.0 1.0 0.0)...[list]
;;;;   > Nil if no intersection found
;;;; Notes:
;;;;   - None
;;;; 
(defun VxGetIntersZ0 (Fst Nxt Mde / IntLst PntLst Fst1 Nxt1)
  (setq	Fst1 (vla-copy Fst)
	Nxt1 (vla-copy Nxt)
  )
  (foreach n '(1e99 -1e99)
    (vla-move Fst1
	      (vlax-3d-point (list 0 0 0))
	      (vlax-3d-point (list 0 0 n))
    )
    (vla-move Nxt1
	      (vlax-3d-point (list 0 0 0))
	      (vlax-3d-point (list 0 0 n))
    )
  )
  (vl-catch-all-apply
    '(lambda ()
       (setq IntLst (vlax-invoke Fst1 'IntersectWith Nxt1 Mde))
     )
  )
  (vla-delete Fst1)
  (vla-delete Nxt1)
  (cond
    (IntLst
     (repeat (/ (length IntLst) 3)
       (setq PntLst (cons
		      (list
			(car IntLst)
			(cadr IntLst)
			(caddr IntLst)
		      )
		      PntLst
		    )
	     IntLst (cdddr IntLst)
       )
     )
    )
    (T nil)
  )
  (reverse PntLst)
)
__________________
Как использовать код на Лиспе читаем здесь

Последний раз редактировалось VVA, 12.01.2016 в 10:36. Причина: см #29
VVA вне форума  
 
Автор темы   Непрочитано 11.01.2016, 07:45
#21
macros55


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


письма ошибки ; error: AutoCAD.Application: Not applicable
macros55 вне форума  
 
Непрочитано 11.01.2016, 08:16
#22
VVA

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


macros55, Выложи файл с примером
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Автор темы   Непрочитано 11.01.2016, 08:47
#23
macros55


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


Никаких проблем по установке, но LISP принадлежит ей ошибка

Command: NS
; error: AutoCAD.Application: Not applicable
Command:
macros55 вне форума  
 
Непрочитано 11.01.2016, 08:56
#24
VVA

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


macros55, Мне нужен dwg файл, в котором возникает данная ошибка. У меня все работает. Сообщи так же версию и разрядность Автокада
I need a dwg file in which the error occurs. Please attach it.
__________________
Как использовать код на Лиспе читаем здесь

Последний раз редактировалось VVA, 11.01.2016 в 09:02.
VVA вне форума  
 
Автор темы   Непрочитано 11.01.2016, 09:21
#25
macros55


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


Это мой проект http://forum.dwg.ru/attachment.php?a...1&d=1452493226
Вложения
Тип файла: dwg
DWG 2007
TEST.dwg (200.1 Кб, 697 просмотров)
macros55 вне форума  
 
Непрочитано 11.01.2016, 10:37
#26
VVA

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


Update #20 Try again
__________________
Как использовать код на Лиспе читаем здесь

Последний раз редактировалось VVA, 12.01.2016 в 10:37.
VVA вне форума  
 
Автор темы   Непрочитано 11.01.2016, 14:29
#27
macros55


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


VVA большой спасибо lisp super...ещё маленький проблем

Что происходит?

VVA ещё второй маленький проблем
Миниатюры
Нажмите на изображение для увеличения
Название: img.jpg
Просмотров: 35
Размер:	104.2 Кб
ID:	163438  Нажмите на изображение для увеличения
Название: 1-2.jpg
Просмотров: 32
Размер:	109.1 Кб
ID:	163441  

Последний раз редактировалось Кулик Алексей aka kpblc, 11.01.2016 в 15:21.
macros55 вне форума  
 
Непрочитано 11.01.2016, 17:57
#28
VVA

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


macros55, Потому что метод IntersectWith для блока ищет пересечение не с примитивами, входящими в блок, а с его ограничивающим прямоугольником (bounding box)

Код:
[Выделить все]
(defun C:TEST ()
  ;;;Command Test draw block's bounding box
  (vl-load-com)
(and
  (setq tmp_blk (car(entsel "\nselect Block : ")))
  (or (vla-GetBoundingBox (vlax-ename->vla-object tmp_blk) 'MinPt 'MaxPt) t) ;_Границы блока
  (setq	MinPt (vlax-safearray->list MinPt)
       MaxPt (vlax-safearray->list MaxPt)
	)
  (vl-cmdf "_Rectang" "_none" (list(car MinPt)(cadr MinPt)) "_none" (list(car MaxPt)(cadr MaxPt)))
  )
  )
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Автор темы   Непрочитано 11.01.2016, 18:24
#29
macros55


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


VVA (bounding box) ладно большой спасибо..но почему выбрали OFF LAYER (второй картинке)
macros55 вне форума  
 
Непрочитано 11.01.2016, 21:15
#30
VVA

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


Цитата:
Сообщение от macros55 Посмотреть сообщение
но почему выбрали OFF LAYER (второй картинке)
Потому что не было сказано, что этого делать не следует
Завтра посмотрю, что можно сделать

----- добавлено через ~13 ч. -----
Обновил #20
Update #20 Try again
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Автор темы   Непрочитано 12.01.2016, 11:20
#31
macros55


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


VVA большой спасибо..lisp

----- добавлено через ~1 ч. -----
VVA можно следующий вопрос?
macros55 вне форума  
 
Автор темы   Непрочитано 12.01.2016, 12:26
#32
macros55


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


new lisp
Миниатюры
Нажмите на изображение для увеличения
Название: 3.jpeg
Просмотров: 25
Размер:	167.8 Кб
ID:	163478  
macros55 вне форума  
 
Автор темы   Непрочитано 12.01.2016, 12:48
#33
macros55


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


извини первая картинке (0.50) это неправильно как, удалить ее ...правильно второй картинке (0.05)
Миниатюры
Нажмите на изображение для увеличения
Название: 3.jpeg
Просмотров: 26
Размер:	167.6 Кб
ID:	163482  

Последний раз редактировалось macros55, 12.01.2016 в 12:53.
macros55 вне форума  
 
Автор темы   Непрочитано 15.01.2016, 14:38
#34
macros55


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


VVA ?
macros55 вне форума  
Закрытая тема
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Пожалуйста, помогите, нужен lisp для выбора объектов



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите студенту )! Нужен интересный, креативный план дома для Дипломной работы. dengrits1 Поиск литературы, чертежей, моделей и прочих материалов 4 07.02.2012 14:04
Помогите пожалуйста рассчитать стальную петлю на изгиб borisovev11 Конструкции зданий и сооружений 55 29.11.2011 16:19
Помогите пожалуйста с отоплением Mishan13 Отопление 3 27.10.2011 12:29
Помогите пожалуйста советом по гидроизоляции. SanjkaK Конструкции зданий и сооружений 10 09.08.2011 17:35
Помогите пожалуйста найти поперечник вагона с углём МишаИнженер Поиск литературы, чертежей, моделей и прочих материалов 16 05.08.2011 18:54