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

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

AutoCAD 2017 VLisp. Как программно группу объектов объектов поместить на задний план?

Ответ
Поиск в этой теме
Непрочитано 06.11.2016, 03:42 #1
AutoCAD 2017 VLisp. Как программно группу объектов объектов поместить на задний план?
Yura Agafonov
 
Инженер.
 
Minsk
Регистрация: 04.05.2012
Сообщений: 95

Сервис -> Порядок прорисовки -> На задний план
В результате запускается команда "AI_DRAWORDER"
Пробую запустить ее через функцию Command-s
Код:
[Выделить все]
 (Command-s "_AI_DRAWORDER")
Результат - Неизвестная ошибка.
Далее пробую использовать команду "draworder"

Код:
[Выделить все]
 (defun _PutToBack (ent /)
  (command "draworder" ent "" "А" "")
)

(setq _nabor (ssget '((0 . "INSERT"))))
  (setq _n (sslength _nabor))
  (setq i -1)
  (repeat _n
    (setq i (+ i 1)) 
    (setq _ent (cdr (assoc -1 (entget (ssname _nabor i)))))    
      (_PutToBack _ent)   
  )					;end repeat
И данный код не работает. В чем моя ошибка?
Просмотров: 1919
 
Непрочитано 06.11.2016, 09:59
#2
VVA

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


Пробуй так
Код:
[Выделить все]
(ai_draworder "_f") ;_send to front
(ai_draworder "_b") ;_send to back
Перед этим сделай набор предварительно выбранным
Код:
[Выделить все]
(if (setq ss (ssget "_:L" '((0 . "INSERT"))))
  (progn
    (SSSETFIRST ss ss)
    (ai_draworder "_b") ;_send to back
    )
  )
По лисперски
Код:
[Выделить все]
(if (setq ss (ssget "_:L" '((0 . "INSERT"))))
    (LM:movetobottom ss)
  )
Недостающее смотреть здесь Draw Order Functions
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Автор темы   Непрочитано 06.11.2016, 14:50
#3
Yura Agafonov

Инженер.
 
Регистрация: 04.05.2012
Minsk
Сообщений: 95
Отправить сообщение для Yura Agafonov с помощью Skype™


Спасибо. Единственное SSSETFIRST работает только для набора.
А как сделать предварительно выбранным не весь набор, а i-ый элемент набора _ent , то есть
Код:
[Выделить все]
 (setq _ent (cdr (assoc -1 (entget (ssname _nabor i)))))  
Yura Agafonov вне форума  
 
Непрочитано 06.11.2016, 17:04
#4
Кулик Алексей aka kpblc
Moderator

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


http://autolisp.ru/2011/12/16/draworder/ ?
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 06.11.2016, 20:48
#5
VVA

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


Цитата:
Сообщение от Yura Agafonov Посмотреть сообщение
А как сделать предварительно выбранным не весь набор, а i-ый элемент набора _ent
создать из этого элемента набор. Но лучше проштудировать ссылку в #4
Код:
[Выделить все]
(SSSETFIRST  nil (ssadd _ent))
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > AutoCAD 2017 VLisp. Как программно группу объектов объектов поместить на задний план?

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Object Enabler для Autocad 2015 объектов из Autoplant zekatyumen AutoCAD 7 14.09.2015 07:10
Как программно (AutoLisp, VLisp) определить материал трубопровода, построенного средствами AutoCAD MEP? Громов Владимир Вертикальные решения на базе AutoCAD 3 27.03.2015 09:55
Возможно ли в автокаде программно преобразовать в блок большую группу объектов расположенных в пространстве и схожих по геометри Jоhnny Программирование 6 08.12.2012 00:24
Подскажите программу правильной конвертации PROXY объектов "СПДС График" в обычные объекты AutoCAD МишаИнженер Программирование 2 03.11.2011 10:05