dwg.ru forum rss xml
| Правила | Регистрация | Пользователи | Поиск | Сообщения за день | Все разделы прочитаны |  Справка по форуму |

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

Выбор объектов прямоугольным блоком

Версия для печати
 
Ответ
Опции темы Поиск в этой теме
Непрочитано 24.01.2017, 01:40 #1
Выбор объектов прямоугольным блоком
Docuk1
 
Регистрация: 24.01.2017
Сообщений: 3

Docuk1 вне форума Вставить имя

Имеется лисп -PL_export-to-excel из этой подборки. Отлично работает, но выделение области "перегонки в ексель" происходит с помощью двух точек по диагонали. Мне этот лисп нужен только для работы со спецификацией , то есть приходится каждый раз выделять одинаковые области
Пусть как на рисунке будет блок1 (или просто прямоугольник в определенном слое), а для второго и последующих листов область чуть больше (блок2). Можно ли подкорректировать данный лисп, чтобы он работал при выборе блоков, а не точек по диагонали? И желательно выбирать не поштучно, а областью

Миниатюры
Нажмите на изображение для увеличения
Название: 1.JPG
Просмотров: 41
Размер:	66.8 Кб
ID:	182454  Нажмите на изображение для увеличения
Название: 2.jpg
Просмотров: 23
Размер:	62.1 Кб
ID:	182455  

Просмотров: 809
 
Непрочитано 31.01.2017, 12:03
#2
Boxa

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


Цитата:
Сообщение от Docuk1 Посмотреть сообщение
Можно ли подкорректировать данный лисп, чтобы он работал при выборе блоков, а не точек по диагонали? И желательно выбирать не поштучно, а областью
Код вроде открыт, копирайт в нем указан, что то мешает поискать автора и спросить его можно или нет? Или Вы про другое спрашивали?
Boxa вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Автор темы   Непрочитано 01.02.2017, 11:19
#3
Docuk1


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


Цитата:
Сообщение от Boxa Посмотреть сообщение
Код вроде открыт, копирайт в нем указан, что то мешает поискать автора и спросить его можно или нет? Или Вы про другое спрашивали?
Файл датируется 2004 годом. Как то уж очень много времени прошло...
Есть макрос vba, который позволяет печатать область листа внутри выделяемого блока/ блоков( тут ). Я вот подумал, можно ли реализовать захват области Блоком с помощью лиспа
Docuk1 вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Непрочитано 01.02.2017, 16:10
#4
Composter

Отопление и вентиляция
 
Регистрация: 31.10.2008
Москва
Сообщений: 353


там обязательно точно таблицу указывать пиксель в пиксель? если нет то можете прикрутить лисп через vla-GetBoundingBox

вас не поймешь, то хочу изменить эту программу то она старая.

Последний раз редактировалось Composter, 01.02.2017 в 16:20.
Composter вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Непрочитано 02.02.2017, 08:57
#5
Boxa

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


Цитата:
Сообщение от Docuk1 Посмотреть сообщение
Файл датируется 2004 годом. Как то уж очень много времени прошло...
И что? Найти автора не сложно, было бы желание.
Цитата:
Сообщение от Docuk1 Посмотреть сообщение
Я вот подумал, можно ли реализовать захват области Блоком с помощью лиспа
Если Вы спрашиваете про возможности языка программирования и объектной модели, то да, можно.
Boxa вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Автор темы   Непрочитано 02.02.2017, 10:50
#6
Docuk1


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


Петр Витальевич Лоскутов - автор этого лиспа, также автор книг программирования для Autoocad =)
К сожалению, мои знания в программирование на лисп минимальны и стремятся к нулю. Поэтому я прошу помощи.
вот кусочек лиспа, который, как я думаю, и выделяет текст по двум точкам
Код:
[Выделить все]
 (defun pl:get-tbl-ents (/ _box)
  (setq
    _box
     (vl-catch-all-apply
       (function
         (lambda (/ corn1 corn2)
           (if
             (and (setq corn1
                         (getpoint
                           "\nУкажи любой угол таблицы без учёта служебных штампов <Exit>: "
                         ) ;_ end of getpoint
                  ) ;_ end of setq
                  (setq corn2
                         (getcorner
                           corn1
                           "\nУкажи угол таблицы по диагонали от первого <Exit>: "
                         ) ;_ end of getcorner
                  ) ;_ end of setq
             ) ;_ end of and
              (list corn1 corn2)
           ) ;_ end of if
         ) ;_ end of lambda
       ) ;_ end of function
       nil
     ) ;_ end of vl-catch-all-apply
  ) ;_ end of setq
  (if (cond ((not _box) (princ "\nNo selection") nil)
            ((vl-catch-all-error-p _box)
             (princ (strcat "\n" (vl-catch-all-error-message _box)))
             nil
            )
            (t
             (setq _box (list (list (min (caar _box) (caadr _box))
                                    (max (cadar _box) (cadadr _box))
                              ) ;_ end of list
                              (list (max (caar _box) (caadr _box))
                                    (min (cadar _box) (cadadr _box))
                              ) ;_ end of list
                        ) ;_ end of list
             ) ;_ end of setq
            )
      ) ;_ end of cond
    (list _box
          (ssget "_C" (car _box) (cadr _box) '((0 . "LINE")))
          (ssget "_C" (car _box) (cadr _box) '((0 . "LWPOLYLINE")))
          (ssget "_C" (car _box) (cadr _box) '((0 . "TEXT")))
    ) ;_ end of list
  ) ;_ end of if
) ;_ end of defun

Для удобству приложу и весь лисп
Цитата:
Сообщение от Boxa Посмотреть сообщение
Если Вы спрашиваете про возможности языка программирования и объектной модели, то да, можно.
Если Вы знаете, как именно это сделать, буду очень рад Вашей помощи =)
Вложения
Тип файла: lsp pl_export-to-excel.LSP (18.9 Кб, 4 просмотров)
Docuk1 вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Непрочитано 02.02.2017, 11:26
| 1 #7
Boxa

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


Вот теперь стало предельно понятно. Можно, нельзя, не имели никакого значения, соль в том, что Вы не умеете программировать и Вы просите написать программу за вас.
Грустно.
Boxa вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Непрочитано 02.02.2017, 11:41
#8
trir


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


я бы это делал на dotNET
trir вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Непрочитано 03.02.2017, 18:23
#9
Do$

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


Цитата:
Сообщение от Boxa Посмотреть сообщение
Вот теперь стало предельно понятно. Можно, нельзя, не имели никакого значения, соль в том, что Вы не умеете программировать и Вы просите написать программу за вас.
Грустно.
Offtop: Масштабы ожидания халявы у большинства посетителей этой ветки поистине необъятны
__________________
Толковый выбор приходит с опытом, а к нему приводит выбор бестолковый. (The Mechanic)
Do$ вне форума вставить имя Обратить внимание модератора на это сообщение  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Выбор объектов прямоугольным блоком

Инженерные консультации
Опции темы Поиск в этой теме
Поиск в этой теме:

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

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как через лисп произвести быcтрый выбор объектов Project studio? kurstep LISP 22 27.10.2014 12:34
Выбор объектов под wipeout Cfytrr AutoCAD 7 04.07.2008 09:22
Выбор объектов SergU AutoCAD 11 16.06.2008 15:22
Слетел выбор объектов в автокаде DaiverCAD AutoCAD 8 26.03.2008 17:09
Помогите доделать программу добавления объектов в блок МишаVBA Программирование 1 20.05.2006 01:04

|| Главная || Каталог САПР || Тендеры || Публикации || Объявления || Биржа труда || Download || Галерея ||
|| Библиотека || Кунсткамера || Каталог предприятий || Контакты || Файлообменник || Блоги ||


Размещение рекламы