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

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

Как выглядит команда LISP для определения типа выделенного объекта на чертеже?

Ответ
Поиск в этой теме
Непрочитано 16.04.2022, 11:30 #1
Как выглядит команда LISP для определения типа выделенного объекта на чертеже?
МишаИнженер
 
Регистрация: 14.12.2008
Сообщений: 1,079

Как на LISP определить тип выбранного объекта на чертеже? Например объекты могут быть разными: линии, арки, полилинии, блоки, размеры, таблицы и т.д. Как на LISP это можно понять?
Просмотров: 4490
 
Непрочитано 16.04.2022, 11:59
1 | #2
Кулик Алексей aka kpblc
Moderator

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


(cdr (assoc 0 (entget ent)))
Хоть иногда бы анализировал чужие коды и слегка посматривал в сторону документации.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 16.04.2022, 12:44
1 | #3
name02


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


Цитата:
Хоть иногда бы анализировал чужие коды и слегка посматривал в сторону документации.
На случай, если хочешь узнать объект, который сам мышкой выбираешь
(cdr (assoc 0 (entget (car (entsel)))))

Последний раз редактировалось name02, 17.04.2022 в 08:43.
name02 вне форума  
 
Автор темы   Непрочитано 17.04.2022, 08:50
#4
МишаИнженер


 
Регистрация: 14.12.2008
Сообщений: 1,079


Удалось написать следующий код программы просмотра названий выбранных объектов:
Код:
[Выделить все]
 (while (setq el (car (entsel "\n Выбери объект:")))
;;команды которые должны выполняться в цикле пока не будет пустой ввод
  (setq dan (entget el))
  (setq name0 (assoc 0 dan))
  (setq name (cdr name0))
  (princ name)
  (alert (strcat "Был выбран " name))
)
А как добавить в этот код обработчик "пустого ввода"
Если пользователь ошибется при выборе объекта надо попросить его выбрать ещё раз объект.
А если пользователь нажмет ESC то надо спросить "Вы действительно хотите завершить выбор объектов?"
Как это сделать на LISP?
МишаИнженер вне форума  
 
Непрочитано 17.04.2022, 09:18
#5
name02


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


Тебе нужно допилить функцию while - как она работает читай справку

МишаИнженер, пожалуйста, сформулируй целиком ту задачу, которую ты хочешь реализовать - вначале ты спрашивал как узнать имя объекта, теперь тебе нужно решение улучшению диалога с пользователем и фильтрацией ошибочных действий.

Что ты в итоге хочешь получить?
name02 вне форума  
 
Непрочитано 17.04.2022, 10:18
1 | #6
Кулик Алексей aka kpblc
Moderator

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


Цитата:
Сообщение от МишаИнженер Посмотреть сообщение
Удалось написать следующий код программы просмотра названий выбранных объектов:
Код:
[Выделить все]
 (while (setq el (car (entsel "\n Выбери объект:")))
;;команды которые должны выполняться в цикле пока не будет пустой ввод
  (setq dan (entget el))
  (setq name0 (assoc 0 dan))
  (setq name (cdr name0))
  (princ name)
  (alert (strcat "Был выбран " name))
)
А как добавить в этот код обработчик "пустого ввода"
Если пользователь ошибется при выборе объекта надо попросить его выбрать ещё раз объект.
А если пользователь нажмет ESC то надо спросить "Вы действительно хотите завершить выбор объектов?"
Как это сделать на LISP?
"САПР на базе" в руки и вперед.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 17.04.2022, 12:34
1 | #7
Сергей812


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


уточню направление посыла от Алексея)
Сергей812 вне форума  
 
Автор темы   Непрочитано 17.04.2022, 12:52
#8
МишаИнженер


 
Регистрация: 14.12.2008
Сообщений: 1,079


Спасибо! Книжки посмотрю потом.
Цитата:
Сообщение от name02 Посмотреть сообщение
Что ты в итоге хочешь получить?
Процесс обработки исключений освоен у меня на VBA. Хотелось бы научиться делать такие вещи на LISPе.
А программку хочу потом использовать для настройки среды черчения AutoCAD в соответствии с характеристиками выбранного объекта.
Такой команды до сих пор нет в AutoCAD! Хотя я помню давным давно такая возможность было в CorelDarw!
В общем хочу сделать копку "Назначить цвет,слой, стиль и т.д. по выбранному объекту"
Вот я вам рассказал свои планы. Теперь может вы мне подскажите как можно задать вопрос пользователю после нажатия кнопки Esc: "Вы действительно хотите завершить выбор объектов?(Y/N)"
Ну или подскажите какие аналоги функции MsgBox есть в ЛИСПе?
МишаИнженер вне форума  
 
Непрочитано 17.04.2022, 13:31
#9
Кулик Алексей aka kpblc
Moderator

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


М-да... Ты сначала изучи штатные средства, и только потом начинай что-то изобретать.
Цитата:
Сообщение от МишаИнженер Посмотреть сообщение
А программку хочу потом использовать для настройки среды черчения AutoCAD в соответствии с характеристиками выбранного объекта.
Интерактивная лента в помощь
Цитата:
Сообщение от МишаИнженер Посмотреть сообщение
Назначить цвет,слой, стиль и т.д. по выбранному объекту
_.matchprop уже не котируется?
Цитата:
Сообщение от МишаИнженер Посмотреть сообщение
может вы мне подскажите как можно задать вопрос пользователю после нажатия кнопки Esc: "Вы действительно хотите завершить выбор объектов?(Y/N)"
Мало того, что направление, так еще и ссылку на скачивание дали. Вперед, с песнями.
Цитата:
Сообщение от МишаИнженер Посмотреть сообщение
Ну или подскажите какие аналоги функции MsgBox есть в ЛИСПе?
initget, getkword, dcl - выбирай. Но сначала все же изучи штатные возможности.
Offtop: До сих пор помню, как прилетел код на VBA, который тупо делал кривой и косой аналог _.array
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 22.04.2022, 10:44
1 | #10
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,990
<phrase 1= Отправить сообщение для VVA с помощью Skype™


Цитата:
Сообщение от МишаИнженер Посмотреть сообщение
Хотелось бы научиться делать такие вещи на LISPе
В учебных целях
Код:
[Выделить все]
 
(defun C:TEST ( / ent flg)
(setq Flg t)
(while Flg
   (setq ent (entsel "\Выберите объект [завершить]:"))
  (cond ((null ent)(if (= (getvar "ERRNO") 52)(setq Flg nil)(princ " *Мимо*\n")))
	(t (alert (strcat "Вы выбрали \n" (cdr(assoc 0 (entget (car ent)))))))
	)
  )
  (princ)
  )

Цитата:
Сообщение от МишаИнженер Посмотреть сообщение
А программку хочу потом использовать для настройки среды черчения AutoCAD в соответствии с характеристиками выбранного объекта
Цитата:
Сообщение от МишаИнженер Посмотреть сообщение
Такой команды до сих пор нет в AutoCAD!
LISP. Быстрое рисование. QUICKDRAW
Начиная с 2011Автокада ADDSELECTED (команда)

----- добавлено через ~12 мин. -----
Цитата:
Сообщение от МишаИнженер Посмотреть сообщение
Теперь может вы мне подскажите как можно задать вопрос пользователю после нажатия кнопки Esc: "Вы действительно хотите завершить выбор объектов?(Y/N)"
Код:
[Выделить все]
 
(defun C:TEST1 ( / ent flg)
(VL-LOAD-COM)  
(setq Flg t)
(while Flg
  (if (VL-CATCH-ALL-ERROR-P(VL-CATCH-ALL-APPLY '(lambda()(setq ent (entsel "\Выберите объект <завершить>:")))))
    (progn
      (initget "Да Нет")
      (setq Flg (=(GETKWORD "\nВы действительно хотите завершить? [Да/Нет]<Да>: ") "Нет"))
      )
    (cond ((null ent)(if (= (getvar "ERRNO") 52)(setq Flg nil)(princ " *Мимо*\n")))
	(t (alert (strcat "Вы выбрали \n" (cdr(assoc 0 (entget (car ent)))))))
	)
    )
  )
  (princ)
  )

__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Как выглядит команда LISP для определения типа выделенного объекта на чертеже?

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Скрипт для получения Oject ID объекта и поиска объектов по Object ID на чертеже modest-bp AutoCAD 2 19.04.2020 14:39
Как включить отображение перекрытых линий только у выделенного объекта AutoCAD2011 Marrazzmm AutoCAD 2 07.03.2017 10:32
Lisp. Копирование объекта, шаг и повтор с добавлением в новый слой pobat LISP 9 19.10.2016 08:18
Свойства выделенного объекта не отображаются в выпадающих окнах панелей инструментов AutoCAD2014. afsokolov AutoCAD 1 15.12.2015 14:25