Тема: Программа+макрос на кнопку "Удаление повторяющихся элементов" для AutoCAD 2006

Можно ли написать программу аналогичную команде Array только с обратным эффектом: удалением повторяющихся элементов.

Re: Программа+макрос на кнопку "Удаление повторяющихся элементов" для AutoCAD 2006

Наверное можно, но не знаю как и зачем???
ИМХО, лучше сделать програму выбора одинаковых примитивов (пройтись ssget по заданым\вычисленым точкам и sssetfirst) а пользователь пускай смотрит то ли оно выделило и еще раз подумает стоит ли удалять.
Тьфу, не лучше просто сформировать фильтр в ssget и выбрать вручную? Даже стандартная команда есть - _.FILTER

Re: Программа+макрос на кнопку "Удаление повторяющихся элементов" для AutoCAD 2006

> Forma
Перед тем как задать вопрос нужно подуматьнемнго и самому. Какие критерии "одинаковости"? Очевидно, что для разных типов примитивов AutoCAD они совершенно разные...

Re: Программа+макрос на кнопку "Удаление повторяющихся элементов" для AutoCAD 2006

> Runa

Александр Ривилис пишет:

аналогичную команде Array только с обратным эффектом

Именно по этим критериям, по каким строит команда  Array. Я сегодня всю ночь этой .... занимался. И эта ночь не последняя.

Re: Программа+макрос на кнопку "Удаление повторяющихся элементов" для AutoCAD 2006

> Forma
А какой из примитивов оставить?

Re: Программа+макрос на кнопку "Удаление повторяющихся элементов" для AutoCAD 2006

То, что сделано командой "_Array" ("Массив") можно только стереть по команде "_Erase" ("Стереть"). Никакой обратной функции выдумать невозможно, IMHO. Точно так же можно задаться целью создать программу, выполняющую функцию, обратную копированию. Только в этом случае абсурд очевиден. А что такое массив, как не копирование с заданным шагом? Так ведь каждый объект, у которого свойства совпадают со свойствами другого объекта, можно считать повторяющимся.
И уж совсем будет выглядить абсурдным, к примеру, желание создать программу и макрос для функции, обратной команде "_Line" ("Отрезок"). Но при такой постановке задачи, как написано здесь:

> Forma
ничего другого и не представишь.

Re: Программа+макрос на кнопку "Удаление повторяющихся элементов" для AutoCAD 2006

> Forma
Это не критерий. Если не хочешь сам думать не заставляей это делать других...

> che
Пять баллов! Вопрос не в бровь, а в глаз!!!

Re: Программа+макрос на кнопку "Удаление повторяющихся элементов" для AutoCAD 2006

> Forma
При всем уважении: не кажется ловлей блох? С делал _array с шагом 500 мм, потом 2 элемент перенес на 0.001 мм - и все, прога не срабатывает. Или удалил вообще. А если еще массив 2-мерный, да повернутый на какой-то угол... А если оно за компанию будет и непрямоугольным - тут быстро не сделать!
Первое правило: "Если что-то может работать не так, оно обязательно начнет работать не так, как Вы себе это представляли, в самый неподходящий для этого момент." (с) Мерфи, вольное изложение.
Применимо к задаче:
1. Ставить более жесткие граничные условия (например:
Массив не поворачивается
Может быть только 2-мерным, работа производится в текущей USC, объекты, не попадающие в Z=0, в работе не участвуют, объект считается попавшим в набор, если его тип - "INSERT" (т.е. блок) и совпадают имя блока, угол поворота и масштаб, либо координаты x и y различных примитивов меняются с заданным шагом. Шаг задается пользователем с ком.строки либо мышкой с графического экрана (через getdist).
Точность = 0 (т.е. изменение в 16 знаке после запятой не включит объект в выбор).
Пользователь самостоятельно указывает область, в которой надо проверять объекты на "принадлежность массиву". Областью не может быть все активное пространство.
Работа может выполняться и в пространстве модели, и в пространстве листа, и в модели "через видовой экран".
Ффффууу...
Ну и так далее.
2. Если это надо действительно, то надо предусматривать все возможные варианты поведения. На следующий день после того, как будет получена прога, по закону подлости нарисуется ситуация, где эта прога будет жизненно необходима, а не сработает, поскольку ситуация не была предусмотрена ТЗ.
---
Короче - пиши ТЗ, говори, что тебе надо, тогда и будут работы.

Re: Программа+макрос на кнопку "Удаление повторяющихся элементов" для AutoCAD 2006

Если говорить просто о повторяющихся элементах, то задача бессмысленна, кроме случая, для которого существует команда "overkill" из "Express Tools". Вот у меня, допустим, нарисованно 60 повторяющихся элементов плана (колонн) и каждый элемент содержит 4 одинаковых отрезка, итого 240 повторяющихся элементов. И что дальше? Команда может все ликвидировать? Правильно, нужен какой-то критерий, если вообще нужна подобная программа. В моем представлении обратной процедурой для любого действия в AutoCAD'е является команда "_UNDO" ("ОТМЕНИТЬ").
Вот и задействовать ее в текущем сеансе с меткой.

Re: Программа+макрос на кнопку "Удаление повторяющихся элементов" для AutoCAD 2006

Весело тут у вас...
Впрочем если вообразить, что у кого-то может возникать необходимость в подобной программе (чего я, как не пытаюсь сделать не могу), то наверное ему проще бы было воспользоваться командой _minsert.

Re: Программа+макрос на кнопку "Удаление повторяющихся элементов" для AutoCAD 2006

Еще раз повторяю:
?    аналогичную команде Array только с обратным эффектом
    ?.
Задача проще "пареной репы". Я ночь сегодня на это убил.

Re: Программа+макрос на кнопку "Удаление повторяющихся элементов" для AutoCAD 2006

> AY
А что это за команда  _minsert. В двух словах хотя бы. В AutoCAD много потайных команд.

Re: Программа+макрос на кнопку "Удаление повторяющихся элементов" для AutoCAD 2006

F1 -> Поиск -> minsert

Re: Программа+макрос на кнопку "Удаление повторяющихся элементов" для AutoCAD 2006

> Forma
Кроме как команда "_u" в голову ничего не приходит.

Re: Программа+макрос на кнопку "Удаление повторяющихся элементов" для AutoCAD 2006

> Forma
Если задача проще какой-то там репы, зачем на нее ночь убивать. Разберем опять, что такое массив. Это ведь ни что иное, как копирование объекта (ов) заданное число раз с заданным шагом. Можно это сделать без команды "_Array" ("Массив")? Можно, с помощью команды "_Copy" ("Копировать"), только подольше будет. Вот здесь показана как раз программа копирования с заданным шагом:
https://www.caduser.ru/forum/topic19844.html
Значит, что? А то и значит, что нужна команда, обратная копированию. И нечего голову морочить.

Re: Программа+макрос на кнопку "Удаление повторяющихся элементов" для AutoCAD 2006

Александр Ривилис пишет:

Это не критерий

Почему это? Конкретный обьект известен.
Функция повторяемости известна. Что тут думать? Цикл простейший с Delete. Знал бы LISP- сам бы написал.

Re: Программа+макрос на кнопку "Удаление повторяющихся элементов" для AutoCAD 2006

> Владимир Громов
Я не на задачу ночь убил, а на удаление этих ..... элементов. Коих было
ровно 540 штук с дискретностью 320 мм

Re: Программа+макрос на кнопку "Удаление повторяющихся элементов" для AutoCAD 2006

> Владимир Громов
Наконец то ! Правильно именно так!

Re: Программа+макрос на кнопку "Удаление повторяющихся элементов" для AutoCAD 2006

А вообще, если пофантазировать. Вот мы имеем объект и размножаем его массивом. Это "Array".
Теперь. Вот мы имеем объект и хотим его "сделать что-то такое, обратное массиву". Каково, а? Это похлеще мнимой единицы.

Re: Программа+макрос на кнопку "Удаление повторяющихся элементов" для AutoCAD 2006

> Владимир Громов
Это Вы кому насчет морочения головы?

Re: Программа+макрос на кнопку "Удаление повторяющихся элементов" для AutoCAD 2006

> Владимир Громов
Не усложняйте. Все гораздо проще.

Re: Программа+макрос на кнопку "Удаление повторяющихся элементов" для AutoCAD 2006

Вот мы имеем объект и хотим его "сделать что-то такое, обратное массиву". Каково, а? Это похлеще мнимой единицы.

Если объект размножать не командой array, а командой minsert, то в последствии возможно изменять количество рядов колонок и соответствующие расстояния между ними (в окне свойства). Ограничение - массив не может быть полярным.

Re: Программа+макрос на кнопку "Удаление повторяющихся элементов" для AutoCAD 2006

_.filter или _.qselect - единственое подспорье в этом трудном деле. Попробуй и в следущий раз уйдет не ночь а полвечера.

Re: Программа+макрос на кнопку "Удаление повторяющихся элементов" для AutoCAD 2006

> AY
Есть там, по-моему, еще один тонкий момент с массивом с 1 строкой и 1 столбцом...
В качестве прикола: можно попробовать overkill с ненормально большими допусками.

Re: Программа+макрос на кнопку "Удаление повторяющихся элементов" для AutoCAD 2006

> kpblc
Какой такой момент?