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

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

Как вернуть выделение?

Ответ
Поиск в этой теме
Непрочитано 25.04.2011, 17:21 #1
Как вернуть выделение?
radist
 
Регистрация: 22.02.2011
Сообщений: 53

Знаю,что в автокаде после снятия выделения можно как-то выбрать все эти объекты снова (выделить последние объекты).
Подскажи как это сделать?
Просмотров: 24697
 
Непрочитано 25.04.2011, 17:32
#2
KSI


 
Регистрация: 19.03.2004
Калининград
Сообщений: 1,842


На запрос выбора объектов
_p (латиницей), или П (последний).
Или на запрос выбора ввести ?, покажет все опции команды. И прочитать Справку, справочник команд - Выбор.

Последний раз редактировалось KSI, 25.04.2011 в 17:42.
KSI вне форума  
 
Автор темы   Непрочитано 25.04.2011, 17:41
#3
radist


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


Спасибо!!!
А эта функция работает только над объектами, с которыми производили какие-то действия? Если просто выделяю объект, отменяю выделение, и выполняю команду, то она не срабатывает
radist вне форума  
 
Непрочитано 25.04.2011, 17:45
#4
KSI


 
Регистрация: 19.03.2004
Калининград
Сообщений: 1,842


Выделение и отмена выделения это не те действия. Данные о выделении не сохраняются.
KSI вне форума  
 
Автор темы   Непрочитано 25.04.2011, 17:57
#5
radist


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


Огромное спасибо!!!
radist вне форума  
 
Непрочитано 27.04.2011, 12:32
#6
CaMoCAD


 
Регистрация: 25.03.2008
Зелик
Сообщений: 1,600


Цитата:
Сообщение от KSI Посмотреть сообщение
Данные о выделении не сохраняются.
Да ну?
Сделал себе кнопку "Семен Семеныч" с макросом ^C^C_.pselect;_p;;zoom;o;_.pselect;_p;;
замечательно выделяет предыдущий набор, сброшенный в том числе искейпом + зуммирует на весь экран выбранные объекты (если zoom не нужен, то начиная с него макрос оборвать)
__________________
* Буква "ё" не используется в тексте исключительно в связи с требованиями ЕСКД.
CaMoCAD вне форума  
 
Непрочитано 27.04.2011, 12:42
#7
Profan


 
Регистрация: 25.12.2005
Москва
Сообщений: 13,627


Цитата:
Сообщение от KSI Посмотреть сообщение
На запрос выбора объектов
_p (латиницей), или П (последний).
...
Английской опции "_p" при запросе выбора объектов соответствует русская опция "т". А русской опции "П" соответствует английская опция "_L".
Profan вне форума  
 
Непрочитано 27.04.2011, 13:11
#8
KSI


 
Регистрация: 19.03.2004
Калининград
Сообщений: 1,842


Profan, да, не прав. Поторопился. Последний, это последний нарисованный объект.

CaMoCAD, на самом деле, здесь ещё зависит от метода выбора. Если выбирать рамкой, то при использовании макроса выбираются все объекты. А если выбирать по одному, то после макроса выбирается только тот объект, который был выбран первым.
А если файл был только открыт, то с первого раза макрос не срабатывает, идет сообщение *Неверный выбор*. Да, при этом точно так же ведёт себя и команда _select.
KSI вне форума  
 
Непрочитано 28.04.2011, 09:50
#9
CaMoCAD


 
Регистрация: 25.03.2008
Зелик
Сообщений: 1,600


KSI, странно, у меня высь набор выделяется (aCAD2010)
PS Попробовал изменить PICKADD, тоже рояля не играет...все работает
__________________
* Буква "ё" не используется в тексте исключительно в связи с требованиями ЕСКД.

Последний раз редактировалось CaMoCAD, 28.04.2011 в 09:52. Причина: Ps
CaMoCAD вне форума  
 
Непрочитано 19.12.2015, 12:40
#10
vik74


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


Цитата:
Сообщение от CaMoCAD Посмотреть сообщение
Сделал себе кнопку "Семен Семеныч" с макросом ^C^C_.pselect;_p;;zoom;o;_.pselect;_p;;
долго пользовался этим удобным макросом. Но переустановка системы, новый автокад 2012 с импортом настроек из преженего
После запуска заветной кнопочки, не работает:
Команда: _.pselect
Выберите объекты: _p
найдено: 1

Выберите объекты:

Команда: zoom
Неизвестная команда "ZOOM". Для вызова справки нажмите F1.


Команда: o
ПОДОБИЕ
Текущие настройки: Удалить исходные=Нет Слой=Источник OFFSETGAPTYPE=0
Укажите расстояние смещения или [Через/Удалить/Слой] <Через>: _.pselect

Требуется численное значение расстояния, две точки или ключевое слово.

как бы восстановить?
vik74 вне форума  
 
Непрочитано 19.12.2015, 12:51
1 | #11
Krieger

инженер (КМ)
 
Регистрация: 30.10.2004
Красноярск
Сообщений: 3,837


Подчеркиваний в макросе нет, попробуй так:
Цитата:
^C^C_.pselect;_p;;_zoom;_o;_.pselect;_p;;
__________________
Делай хорошо, плохо само получится.
Krieger вне форума  
 
Непрочитано 19.12.2015, 13:18
#12
vik74


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


Цитата:
Подчеркиваний в макросе нет, попробуй так:
Спасибо! Так заработало!
Еще код с этого форума http://forum.dwg.ru/showthread.php?t=51836 пост 4
Код:
[Выделить все]
$M=$(if,$(getvar,cmdactive),,_select;)_p
тоже работает

Последний раз редактировалось Кулик Алексей aka kpblc, 19.12.2015 в 21:11.
vik74 вне форума  
 
Непрочитано 16.05.2018, 06:41
#13
Кондратий Тихонович


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


Тоже хочу, чтобы после того как я нажимаю Escape и сбрасываю выделение сразу всех объектов можно было одним кликом повторно их выделить.

Пробовал что в этой теме описано - не фига не выходит.
В пространстве листа вообще глючит. А в модели выделяется 1 объект. Причем не предыдущего выделения. А вообще какого-то давнишнего (чуть ли в начале работы выделявшегося). Причем один.

Прочитал темы
можно ли повторить выделение?
Отмена последнего выделенного объекта
Повторение последнего выбора объектов
Отмена выделения обектов в autocad 2013 с шифтом рамкой происходит по одному объекту. Помогите вернуть обратно?
Повторное, но уже автоматическое выделение объектов.
Правильный предыдущий выбор
Как в Autocad после выполнения команды оставить объект выделенным?

Нифига не выходит.

Перепробовал разные лисп-коды. Нифига.

Да.
Ещё хотелось бы чтобы можно было по нажатии кнопки отменять выбор в обратной последовательности (т.е. сначала отменить выбор объекта, выделенного последним, потом - предпоследним, и т.д. вплоть до первого)

Или в автокаде не сохраняется инфа о том, в какой последовательности был выбор?

Короче
У меня AutoCAD 2010 Portable и два вопроса
1) Как одним кликом восстановить выделение объектов, которые были выделены до нажатия ESCAPE
2) Как снимать выделение объектов в порядке, обратном порядку их выделения (сначала снять выделение с выделенного последним, потом - предпоследним, и т.д. вплоть до выделенного первым).
Имеется в виду не вручную (SHIFT + CLICK) , указывая у какого объекта снять выделение, а автоматом.
Повесить к примеру эту функцию на кнопку F3. И чтобы при каждом нажатии F3 происходила отмена выделения очередного объекта в последовательности. Чтобы мне не нужно было запоминать последовательность выделения. Чтобы это делал автокад

3) Ну тогда уж до кучи и обратная п2 функция: по F4 восстанавливать выделение по одному объекту в той же последовательности как они выделялись ранее

Последний раз редактировалось Кондратий Тихонович, 16.05.2018 в 06:54.
Кондратий Тихонович вне форума  
 
Непрочитано 16.05.2018, 07:03
#14
Setvar


 
Регистрация: 10.02.2007
Москва
Сообщений: 611


Цитата:
Сообщение от Кондратий Тихонович Посмотреть сообщение
У меня AutoCAD 2010 Portable
AutoCAD Portable не является официальной лицензионной версией и обсуждению не подлежит.
Setvar вне форума  
 
Непрочитано 16.05.2018, 09:45
#15
Сергей812


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


а если насчет функционала:

Цитата:
Сообщение от Кондратий Тихонович Посмотреть сообщение
1) Как одним кликом восстановить выделение объектов, которые были выделены до нажатия ESCAPE
2) Как снимать выделение объектов в порядке, обратном порядку их выделения (сначала снять выделение с выделенного последним, потом - предпоследним, и т.д. вплоть до выделенного первым).
Имеется в виду не вручную (SHIFT + CLICK) , указывая у какого объекта снять выделение, а автоматом.
Повесить к примеру эту функцию на кнопку F3. И чтобы при каждом нажатии F3 происходила отмена выделения очередного объекта в последовательности. Чтобы мне не нужно было запоминать последовательность выделения. Чтобы это делал автокад

3) Ну тогда уж до кучи и обратная п2 функция: по F4 восстанавливать выделение по одному объекту в той же последовательности как они выделялись ранее
то это в другую ветку - программирование. Есть событие изменения выбора ImpliedSelectionChanged (если для .Net), в нем анализировать текущие выбранные элементы и сравнивая с предыдущими наборами, вести список последовательности выделенных объектов.
Сергей812 вне форума  
 
Непрочитано 16.05.2018, 19:51
#16
Кондратий Тихонович


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


Цитата:
Сообщение от Сергей812 Посмотреть сообщение
это в другую ветку - программирование.
Т.е. встроенного такого функционала автокад не имеет?

----- добавлено через ~2 мин. -----
Цитата:
Сообщение от Сергей812 Посмотреть сообщение
Есть событие изменения выбора ImpliedSelectionChanged (если для .Net), в нем анализировать текущие выбранные элементы и сравнивая с предыдущими наборами, вести список последовательности выделенных объектов.
Т.е. автокад не запоминает порядок выделения объектов и, соответственно, не получится выделять и снимать выделение в запомненной последовательности?

Я правильно Вас понял?

Это точно так?
Кондратий Тихонович вне форума  
 
Непрочитано 16.05.2018, 20:04
#17
Сергей812


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


Цитата:
Сообщение от Кондратий Тихонович Посмотреть сообщение
Т.е. встроенного такого функционала автокад не имеет?
откуда? Само выделение не оказывает изменения в БД чертежа - это какие то ваши личные хотелки, чтобы поддерживался стек действий пользователя по выделению объектов.

----- добавлено через ~6 мин. -----
Цитата:
Сообщение от Кондратий Тихонович Посмотреть сообщение
Т.е. автокад не запоминает порядок выделения объектов и
выделение объектов - это лишь способ получить некоторую группу объектов для последующего применения к ним групповой операции. Порядок выделения не играет никакой роли.
Сергей812 вне форума  
 
Непрочитано 16.05.2018, 22:22
#18
Кондратий Тихонович


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


Цитата:
Сообщение от Сергей812 Посмотреть сообщение
Порядок выделения не играет никакой роли.
Ошибаетесь.
В порядке выделения может содержаться определенная логика
Кондратий Тихонович вне форума  
 
Непрочитано 16.05.2018, 22:34
#19
Сергей812


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


Цитата:
Сообщение от Кондратий Тихонович Посмотреть сообщение
В порядке выделения может содержаться определенная логика
может - но программисты Аутодеска не реализовали в базовом функционале акада подобное. Есть просто коллекция выделенных пользователем объектов и на изменение счетчика количества элементов подвешено событие ImpliedSelectionChanged. И, например, если выделите несколько объектов сразу - по какому критерию очередности их добавлять в стек/очередь? Событие будет одно. И как разделять разные очереди выделения?
Сергей812 вне форума  
 
Непрочитано 18.05.2018, 06:39
#20
Кондратий Тихонович


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


Ну а вообще. Как тогда решают уважаемые юзвери такую проблему:
Ведь бывает нужно вернуть предыдущий набор выделенных объектов к примеру без последних двух выделенных объектов. А набор, к примеру, состоит из 50-ти объектов.

Вручную заново прокликать 48 объектов как-то не айс.
К примеру ты минут 10 шифткликом по одному выбирал и добавлял в набор объекты, а потом случайно кликнул без шифта и всё выделение сбросилось. И вся работа насмарку. Мочи мочало - начинай сначала
Приходится заново прокликивать


Опытным путем установил, для того, чтобы вернуть выделение сразу всех ранее выделенных объектов нужно ввести в командной строке:
_SELECT, а потом _P

Макросы типа ^C^C_.pselect;_p;;zoom;o;_.pselect;_p;;
повешенные на кнопку, у меня почему-то работают не корректно.
Вместо автовыделения мне предлагают самому, вручную "выбрать объекты"
Кондратий Тихонович вне форума  
 
Непрочитано 18.05.2018, 09:29
#21
PsixVK


 
Регистрация: 19.10.2012
Киев
Сообщений: 748


https://forum.dwg.ru/showpost.php?p=940858&postcount=5
PsixVK вне форума  
 
Непрочитано 18.05.2018, 14:52
#22
Сергей812


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


Цитата:
Сообщение от Кондратий Тихонович Посмотреть сообщение
Ну а вообще. Как тогда решают уважаемые юзвери такую проблему:
Ведь бывает нужно вернуть предыдущий набор выделенных объектов к примеру без последних двух выделенных объектов. А набор, к примеру, состоит из 50-ти объектов.

Вручную заново прокликать 48 объектов как-то не айс.
К примеру ты минут 10 шифткликом по одному выбирал и добавлял в набор объекты, а потом случайно кликнул без шифта и всё выделение сбросилось. И вся работа насмарку. Мочи мочало - начинай сначала
Приходится заново прокликивать
это совершенно другая задача - типа "ленивого" выделения: выделяете объекты, нажимаете хоткей/кнопку и только тогда выбранные объекты добавляются в список выделения (уже существующие объекты в списке пропускаются). Другой хоткей/кнопка удаляет выбранные объекты из списка (если они были внесены туда до этого, иначе игнорируются). Третий хоткей/кнопка выделяет объекты из списка на чертеже. Четвертый хоткей/кнопка очищает список. Т.е. создать свою коллекцию выделения, работающую независимо от стандартного механизма выделения. Тогда при "промахе" ничего не потеряется, можно хоть полдня выбирать объекты.

p.s. Но это другая ветка уже - программирование.
Сергей812 вне форума  
 
Непрочитано 19.05.2018, 13:11
#23
Кондратий Тихонович


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


Цитата:
Сообщение от PsixVK Посмотреть сообщение
Не очень понял. Поясните

----- добавлено через ~1 мин. -----
Цитата:
Сообщение от Сергей812 Посмотреть сообщение
Но это другая ветка уже - программирование
Да тут на форуме каждый второй ЛИСП-программист.
Может помогут решить проблему?
Кондратий Тихонович вне форума  
 
Непрочитано 19.05.2018, 17:07
#24
Сергей812


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


Цитата:
Сообщение от Кондратий Тихонович Посмотреть сообщение
Может помогут решить проблему?
ну как то так на скорую руку

// Windows
using System;
using System.Collections.Generic;

// AutoCAD
using Autodesk.AutoCAD.DatabaseServices;
using Autodesk.AutoCAD.Runtime;
using Autodesk.AutoCAD.ApplicationServices;
using Autodesk.AutoCAD.EditorInput;


namespace LazyObjectsSelection
{
public class Commands : IExtensionApplication
{

/// <summary>
/// Элемент списка выделенных объектов для определенного чертежа
/// </summary>
private struct SelectDrawingObjectsInfo:IComparable<SelectDrawingObjectsInfo>
{
/// <summary>
/// Имя файла DWG
/// </summary>
public string NameFile;
/// <summary>
/// Список выделенных объектов
/// </summary>
public List<ObjectId> ListSelectedObjects;

/// <summary>
/// Базовый конструктор структуры SelectDrawingObjectsInfo
/// </summary>
/// <param name="aNameFile">Имя файла DWG</param>
public SelectDrawingObjectsInfo(string aNameFile)
{
NameFile = aNameFile;
ListSelectedObjects = new List<ObjectId>();
}

/// <summary>
/// Реализация сравнения по умолчанию с другой структурой
/// </summary>
/// <param name="other">Другая структура</param>
/// <returns>Результат сравнения</returns>
public int CompareTo(SelectDrawingObjectsInfo other)
{
return String.Compare(NameFile, other.NameFile, true);
}
}


/// <summary>
/// Список выделенных объектов для всех открытых чертежей
/// </summary>
private static List<SelectDrawingObjectsInfo> _ListSels = null;


/// <summary>
/// Инициализация сборки
/// </summary>
public void Initialize()
{
// Создаем список выделенных объектов
_ListSels = new List<SelectDrawingObjectsInfo>();
// Подписываемся на удаление (закрытие) чертежа
Application.DocumentManager.DocumentDestroyed += new
DocumentDestroyedEventHandler(DocumentManager_DocumentDestroyed);
}


/// <summary>
/// Деинициализация сборки
/// </summary>
public void Terminate()
{
}


/// <summary>
/// Обработчик события менеджера документов - закрытие документа
/// </summary>
/// <param name="sender">Источник сообщения- Менеджер документов</param>
/// <param name="e">Дополнительные аргументы</param>
void DocumentManager_DocumentDestroyed(object sender, DocumentDestroyedEventArgs e)
{
int lIndex = _ListSels.BinarySearch(new SelectDrawingObjectsInfo(e.FileName));
if(lIndex>=0) _ListSels.RemoveAt(lIndex);
}


/// <summary>
/// Добавление выделенных объектов в коллекцию
/// </summary>
[CommandMethod("lso_AddSelectedObjects", CommandFlags.Modal | CommandFlags.NoPaperSpace |
CommandFlags.UsePickSet | CommandFlags.Redraw)]
public void lso_AddSelectedObjects()
{
Document lDoc = Application.DocumentManager.MdiActiveDocument;
PromptSelectionResult lSelResult = lDoc.Editor.SelectImplied();
if (lSelResult.Status == PromptStatus.OK)
{
if (lSelResult.Value.Count > 0)
{
// Получаем индекс текущего активного чертежа в коллекции
int lIndex;
do
{
lIndex = _ListSels.BinarySearch(
new SelectDrawingObjectsInfo(lDoc.Database.Filename));
if (lIndex < 0)
{
_ListSels.Add(new SelectDrawingObjectsInfo(lDoc.Database.Filename));
_ListSels.Sort();
}
} while (lIndex < 0);
// Получаем список выделенных примитивов и заносим в коллекцию
ObjectId[] lListSelObjects = lSelResult.Value.GetObjectIds();
SelectDrawingObjectsInfo lItem = _ListSels[lIndex];
int lCountAddedObjects = 0;
int lCountSkipObjects = 0;
foreach (ObjectId lObjId in lListSelObjects)
{
if (lItem.ListSelectedObjects.Contains(lObjId))
{
lCountSkipObjects++;
}
else
{
lCountAddedObjects++;
lItem.ListSelectedObjects.Add(lObjId);
}
}
_ListSels[lIndex] = lItem;
// Выводим статистику
lDoc.Editor.WriteMessage(
"\nВыделение: добавлено {0}; пропущено {1}; всего объектов {2}",
lCountAddedObjects, lCountSkipObjects,
lItem.ListSelectedObjects.Count);
return;
}
}
// Если что-то пошло не так
lDoc.Editor.WriteMessage("\nВыделение: нет выделенных объектов для добавления!");
}


/// <summary>
/// Удаление выделенных объектов из коллекции
/// </summary>
[CommandMethod("lso_RemoveSelectedObjects", CommandFlags.Modal | CommandFlags.NoPaperSpace |
CommandFlags.UsePickSet | CommandFlags.Redraw)]
public void lso_RemoveSelectedObjects()
{
Document lDoc = Application.DocumentManager.MdiActiveDocument;
PromptSelectionResult lSelResult = lDoc.Editor.SelectImplied();
if (lSelResult.Status == PromptStatus.OK)
{
if (lSelResult.Value.Count > 0)
{
// Получаем индекс текущего активного чертежа в коллекции
int lIndex = _ListSels.BinarySearch(
new SelectDrawingObjectsInfo(lDoc.Database.Filename));
if (lIndex >= 0)
{
// Получаем список выделенных примитивов и удаляем из коллекции
ObjectId[] lListSelObjects = lSelResult.Value.GetObjectIds();
SelectDrawingObjectsInfo lItem = _ListSels[lIndex];
int lCountRemoveObjects = 0;
int lCountNotFoundObjects = 0;
foreach (ObjectId lObjId in lListSelObjects)
{
if (lItem.ListSelectedObjects.Contains(lObjId))
{
lCountRemoveObjects++;
lItem.ListSelectedObjects.Remove(lObjId);
}
else
{
lCountNotFoundObjects++;
}
}
_ListSels[lIndex] = lItem;
// Выводим статистику
lDoc.Editor.WriteMessage(
"\nСнятие выделения: удалено {0}; вне выделения {1}; всего объектов {2}",
lCountRemoveObjects, lCountNotFoundObjects,
lItem.ListSelectedObjects.Count);
return;
}
}
}
// Если что-то пошло не так
lDoc.Editor.WriteMessage("\nСнятие выделения: нет выделенных объектов для исключения!");
}


/// <summary>
/// Выделение объектов из коллекции на чертеже
/// </summary>
[CommandMethod("lso_SetSelectedObjects", CommandFlags.Modal |
CommandFlags.NoPaperSpace | CommandFlags.Redraw)]
public void lso_SetSelectedObjects()
{
Document lDoc = Application.DocumentManager.MdiActiveDocument;
// Получаем индекс текущего активного чертежа в коллекции
int lIndex = _ListSels.BinarySearch(
new SelectDrawingObjectsInfo(lDoc.Database.Filename));
if (lIndex >= 0)
{
SelectDrawingObjectsInfo lItem = _ListSels[lIndex];
if (lItem.ListSelectedObjects.Count > 0)
{
lDoc.Editor.SetImpliedSelection(lItem.ListSelectedObjects.ToArray());
lDoc.Editor.WriteMessage("\nВыделено объектов: {0}",
lItem.ListSelectedObjects.Count);
return;
}
}
// Что-то пошло не так
lDoc.Editor.SetImpliedSelection(new ObjectId[0]);
lDoc.Editor.WriteMessage("\nНет объектов для выделения!");
}


/// <summary>
/// Сброс коллекции выделенных объектов на чертеже
/// </summary>
[CommandMethod("lso_ResetSelectedObjects", CommandFlags.Modal | CommandFlags.NoPaperSpace)]
public void lso_ResetSelectedObjects()
{
Document lDoc = Application.DocumentManager.MdiActiveDocument;
// Получаем индекс текущего активного чертежа в коллекции
int lIndex = _ListSels.BinarySearch(
new SelectDrawingObjectsInfo(lDoc.Database.Filename));
if (lIndex >= 0)
{
SelectDrawingObjectsInfo lItem = _ListSels[lIndex];
lItem.ListSelectedObjects.Clear();
_ListSels[lIndex] = lItem;
}
lDoc.Editor.SetImpliedSelection(new ObjectId[0]);
lDoc.Editor.WriteMessage(
"\nСписок ленивого выделения для данного документа очищен!");
}

}
}
}


На самом деле его еще надо дорабатывать - например, отлавливать события сохранения вновь созданного или переименование документа (хотя и так будет работать - просто в списке будет лишний "мусор" и после переименования пропадет выборка уже выделенных элементов, все придется сначала), разделить списки объектов в пространстве модели и для каждого листа и т.д. Но это уже пускай ваш штатный программист САПР занимается, я лишь идею отобразил в виде работающего кода)

Ну и кнопочки/хоткеи прикрутить на команды - это уже типовая задача.
Сергей812 вне форума  
 
Непрочитано 19.05.2018, 19:31
#25
kifa


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


Цитата:
Сообщение от Кондратий Тихонович Посмотреть сообщение
Вручную заново прокликать 48 объектов как-то не айс.
когда объекты грамотно рассортированы по слоям/блокам/ итд то кликать ручками приходится ну очень редко
kifa вне форума  
 
Непрочитано 21.05.2018, 15:38
1 | #26
PsixVK


 
Регистрация: 19.10.2012
Киев
Сообщений: 748


Цитата:
Сообщение от Кондратий Тихонович Посмотреть сообщение
Не очень понял. Поясните
https://dwg.ru/pub/9
я себе сделал горячую клавишу и использую тот лисп. вызов лиспа get-last-select или gls
PsixVK вне форума  
 
Непрочитано 21.05.2018, 18:32
#27
Кондратий Тихонович


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


Цитата:
Сообщение от PsixVK Посмотреть сообщение
https://dwg.ru/pub/9
я себе сделал горячую клавишу и использую тот лисп. вызов лиспа get-last-select или gls
Тоже сегодня сделал себе кнопку и хоткей get-last-select ещё не видя Вашего сообщения когда ещё был на работе. Наткнулся на код шерстя форум

Это уже что-то

Но полностью проблема не решена. Хотелось бы пошагово возвращать и отменять выделение (см. п.2 и п.3)

Для этого, по видимому, в ЛИСП-коде нужно создавать какой-то динамический массив (или список) и заполнять его по мере выделения

----- добавлено через ~3 мин. -----
Цитата:
Сообщение от kifa Посмотреть сообщение
когда объекты грамотно рассортированы по слоям/блокам/ итд то кликать ручками приходится ну очень редко
Ой не факт.
Разобраться в хитросплетениях большого числа слоев, наборов слоев и иерархий МНОГОСЛОЙНЫХ блоков ой как не просто. Даже самому разработчику. Чего уж говорить про посторонних людей, которые будут разбираться в Вашем чертеже. Они будут вспоминать Вас добрым матерным словом.
Просто я пробовал лет 10 назад упорно идти таким путём. Поэтому знаю о чём говорю
А потом, критерии выделения постоянно "дышат", меняются, поэтому модель с жесткой сортировкой/иерархией/"раскладыванием по полочкам" не отражает объективную реальность.

----- добавлено через ~4 мин. -----
Цитата:
Сообщение от Сергей812 Посмотреть сообщение
ну как то так на скорую руку
Это C# что ли?

Последний раз редактировалось Кондратий Тихонович, 21.05.2018 в 18:41.
Кондратий Тихонович вне форума  
 
Непрочитано 21.05.2018, 18:48
#28
Сергей812


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


Цитата:
Сообщение от Кондратий Тихонович Посмотреть сообщение
Для этого, по видимому, в ЛИСП-коде нужно создавать какой-то динамический массив (или список) и заполнять его по мере выделения
точнее, запоминать разницу между всеми предыдущими состояниями списка и текущим выделенным набором.

Цитата:
Сообщение от Кондратий Тихонович Посмотреть сообщение
Это C# что ли
да - под акад на нем пишу.
Сергей812 вне форума  
 
Непрочитано 26.05.2018, 11:17
#29
Кондратий Тихонович


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


Цитата:
Сообщение от Сергей812 Посмотреть сообщение
под акад на нем пишу.
В 2010 шарп не поддерживается
Кондратий Тихонович вне форума  
 
Непрочитано 26.05.2018, 12:55
1 | #30
Сергей812


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


Цитата:
Сообщение от Кондратий Тихонович Посмотреть сообщение
В 2010 шарп не поддерживается
Честно, что ли? А может просто надо скачать любую бесплатную студию, создать там проект - библиотека, подключить три библиотеки из корневой папки вашей версии акада, вставить мой код и нажать кнопочку скомпилировать?

----- добавлено через 57 сек. -----
в 2010 даже две библиотеки всего подключить к проекту.
Сергей812 вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > AutoCAD > Как вернуть выделение?



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вернуть конточки твердотельных объектов NZ AutoCAD 18 12.04.2011 09:14
Макрос: выделение объекта находящегося в определенной области модели dextron3 Программирование 29 14.10.2010 21:08
Исчезли диологовые окна в Autocad 2008(Русская версия), как их вернуть, если это не глюк? Aleksandrizrigi AutoCAD 1 10.01.2010 20:37
Как снять выделение с объекта оап AutoCAD 2 02.07.2008 01:36
Как убрать выделение в автокаде? Владимир В Программирование 2 06.02.2008 17:00