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

Вернуться   Форум DWG.RU > Программное обеспечение > AutoCAD > Изменить порядок создания объектов в AutoCAD

Изменить порядок создания объектов в AutoCAD

Ответ
Поиск в этой теме
Непрочитано 18.06.2012, 10:26 #1
Изменить порядок создания объектов в AutoCAD
hwarang
 
Регистрация: 24.03.2011
Сообщений: 56

Добрый день!
Помогите, пожалуйста, решить задачу изменения порядка создания объектов в AutoCAD. Суть в следующем: имеется чертеж AutoCAD с некоторым количеством объектов (замкнутых полилиний). Этот чертеж конвертируется в управляющую программу для станка плазменной резки, причем контуры станок вырезает в том порядке, в котором они созданы в AutoCAD. Необходимо изменить порядок создания уже имеющихся полилиний, например, с помощью перебора мышкой (напр., команда/lisp->"выберите объекты"->последовательный выбор объектов в необходимом порядке) или автоматически слева направо и снизу вверх.
Просмотров: 6374
 
Непрочитано 18.06.2012, 11:05
#2
Lorens

Учусь
 
Регистрация: 19.04.2007
Санкт-Петербург
Сообщений: 624


А если попробовать создать новый файл и вставлять их туда последовательно?
Lorens вне форума  
 
Автор темы   Непрочитано 18.06.2012, 11:08
#3
hwarang


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


Цитата:
Сообщение от Lorens Посмотреть сообщение
А если попробовать создать новый файл и вставлять их туда последовательно?
Как вариант возможно, но тоже нужно как-то автоматизировать (хотя бы по щелчку мыши объект автоматически копируется в новый файл с исходными координатами). Число объектов на чертеже может измеряться десятками (а то и сотнями), да и чертежей немало, так что без автоматизации не обойтись...
hwarang вне форума  
 
Непрочитано 18.06.2012, 12:30
#4
Taracka


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


Конвертируется каким образом? Обычно порядок обработки задается в программе подготовки программы для станка.
Taracka на форуме  
 
Автор темы   Непрочитано 18.06.2012, 12:39
#5
hwarang


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


Цитата:
Сообщение от Taracka Посмотреть сообщение
Конвертируется каким образом? Обычно порядок обработки задается в программе подготовки программы для станка.
Программа конвертирует dxf-файл в автоматическом режиме, причем контуры задаются в порядке их создания на чертеже (вставляю несколько контуров в новый чертеж в определенной последовательности - в такой же последовательности станок их вырезает). Редактировать управляющую программу (при, например, сотне контуров) будет дольше, чем последовательно их копировать в другой чертеж.
Какие-нибудь советы по сути вопроса есть?
hwarang вне форума  
 
Непрочитано 18.06.2012, 14:05
#6
Дима_

Продуман
 
Регистрация: 22.02.2007
Питер
Сообщений: 2,840


Вот "набросок" из 2 команд - update и show-order, 1-ая "пересоздает" (то есть добаляет в конец) примитивы в порядке выборки, 2-ая показывает текущий порядок создания примитивов:
Код:
[Выделить все]
 (vl-load-com)
(defun collection->list(col / lst)
  (vlax-for obj col (SETQ lst (cons obj lst)))
  (reverse lst))
(defun c:update()
  (mapcar '(lambda (obj)
             (vla-copy obj)
             (vla-delete obj))
          (mapcar 'vlax-ename->vla-object (vl-remove-if 'listp (mapcar 'cadr (ssnamex (ssget))))))
  (princ))
(defun c:show-order()
  (mapcar 
    '(lambda (obj)
        (vla-highlight obj :vlax-true)
        (redraw)
        ((lambda (data)
           (while (> (+ data 0.0000001) (getvar "cdate"))))
         (getvar "cdate"))
        (vla-highlight obj :vlax-false))
    (collection->list (vla-get-modelspace(vla-get-activedocument(vlax-get-acad-object)))))
  (princ))
__________________
Когда в руках молоток все вокруг кажется гвоздями.
Дима_ вне форума  
 
Автор темы   Непрочитано 18.06.2012, 14:31
#7
hwarang


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


Цитата:
Сообщение от Дима_ Посмотреть сообщение
Вот "набросок" из 2 команд - update и show-order, 1-ая "пересоздает" (то есть добаляет в конец) примитивы в порядке выборки, 2-ая показывает текущий порядок создания примитивов:
Спасибо, то что нужно!
А можно ли сделать, чтобы команда show-order показывала следующий примитив по нажатию Enter или стрелочки (любой)? Когда на чертеже много элементов, иногда трудно быстро уследить порядок.
hwarang вне форума  
 
Непрочитано 18.06.2012, 14:47
#8
Дима_

Продуман
 
Регистрация: 22.02.2007
Питер
Сообщений: 2,840


Замени строку 16-18 на (grread)
__________________
Когда в руках молоток все вокруг кажется гвоздями.
Дима_ вне форума  
 
Непрочитано 18.06.2012, 18:27
#9
АлексЮстасу

топограф, технолог
 
Блог
 
Регистрация: 24.05.2009
Москва
Сообщений: 3,029


Можно вопрос на эту тему к знающим? Порядок отображения, за который отвечает Draw Order, и последовательность записи элементов в файле - это не одно и то же? Т.е. отображение элемента сверху (Bring to Front) не приводит к перемещению записи о нем внутри файла?
АлексЮстасу вне форума  
 
Непрочитано 18.06.2012, 21:33
#10
Кулик Алексей aka kpblc
Moderator

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


Не одно и то же. Порядок отображения элементов - отдельная песня. Порядок создания настолько легко не меняется.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 19.06.2012, 11:10
#11
hwarang


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


Цитата:
Сообщение от Дима_ Посмотреть сообщение
Замени строку 16-18 на (grread)
Спасибо! Все отлично работает!
Как говорится, аппетит приходит во время еды: можно ли сделать, чтобы show-order подсвечивала объекты каким-то цветом (напр., красным) для большей наглядности?

Последний раз редактировалось hwarang, 19.06.2012 в 12:23.
hwarang вне форума  
 
Непрочитано 21.06.2012, 13:38
1 | #12
Дима_

Продуман
 
Регистрация: 22.02.2007
Питер
Сообщений: 2,840


Offtop: Пока в личку не написал - не заметил
Менять цвет и/или слой объекта - не хочеться - много попутных проблем возникает, как его всегда и правильно восстановить, но для наглядности - держи выделяет "выделением"
Код:
[Выделить все]
 (vl-load-com)
(defun c:update()
  (mapcar '(lambda (obj)
             (vla-copy obj)
             (vla-delete obj))
          (mapcar 'vlax-ename->vla-object (vl-remove-if 'listp (mapcar 'cadr (ssnamex (ssget))))))
  (princ))
(defun c:show-order()
  (vlax-for obj (vla-get-modelspace(vla-get-activedocument(vlax-get-acad-object)))
           (sssetfirst nil (ssadd (vlax-vla-object->ename obj)))
           (grread)
           (sssetfirst nil))
  (princ))
__________________
Когда в руках молоток все вокруг кажется гвоздями.
Дима_ вне форума  
 
Автор темы   Непрочитано 25.06.2012, 10:05
#13
hwarang


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


Цитата:
Сообщение от Дима_ Посмотреть сообщение
выделяет "выделением"
Спасибо! Отлично работает!
hwarang вне форума  
 
Непрочитано 26.08.2021, 22:12
#14
xaoc25


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


Цитата:
Сообщение от Дима_ Посмотреть сообщение
выделяет "выделением"
Код:
[Выделить все]
 (vl-load-com)
(defun c:show-order()
  (vlax-for obj (vla-get-modelspace(vla-get-activedocument(vlax-get-acad-object)))
           (sssetfirst nil (ssadd (vlax-vla-object->ename obj)))
           (grread)
           (sssetfirst nil))
  (princ))
Здесь собираются в набор все объекты чертежа. А если мне нужно выделить мышью определённый набор, и в этом наборе посмотреть очередь создания объектов, как сделать? ? Менять ssadd на ssget не работает.
xaoc25 вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > AutoCAD > Изменить порядок создания объектов в AutoCAD

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Видеоуроки AutoCAD kosmax AutoCAD 173 17.02.2017 15:08
Цвета линий в AutoCAD. Зачем они нужны и как их изменить АнтонЧ AutoCAD 47 09.10.2013 20:34
группирование объектов в AutoCad 2002 vitalik-petrov AutoCAD 1 03.12.2008 23:09
Как в AutoCad 2006 изменить масштаб только по оси X или Y Никл AutoCAD 1 21.08.2008 13:06