Сообщество программистов Autodesk в СНГ

ADN Club => AutoCAD .NET API => Тема начата: Lemieux от 14-08-2021, 09:21:15

Название: Удаление Layout
Отправлено: Lemieux от 14-08-2021, 09:21:15
Всех приветствую.
Возможно ли запретить удаление Layout пользователям? Я пробовал ObjectOverrule, но закладка всё равно удаляется, а мне надо, чтобы ничего не удалялось.
Название: Re: Удаление Layout
Отправлено: Александр Ривилис от 14-08-2021, 16:15:25
Возможно ли запретить удаление Layout пользователям?
Не думаю что это возможно. И если пользователь хочет удалить Лист, то почему ему нужно мешать? Меня удивляют (это мягко сказано) попытки не дать пользователю что-либо сделать в AutoCAD.
Название: Re: Удаление Layout
Отправлено: Lemieux от 14-08-2021, 18:47:52
Возможно ли запретить удаление Layout пользователям?
Не думаю что это возможно. И если пользователь хочет удалить Лист, то почему ему нужно мешать? Меня удивляют (это мягко сказано) попытки не дать пользователю что-либо сделать в AutoCAD.
У меня команда создаёт листы в пространстве модели и для них настраивает layout, чтобы потом с одного нажатия публиковать документ. У меня команды для для добавления листов и удаления (для меня казалось логично удалять каждый последний лист, если он не понадобился), но один пользователь додумался удалить только один layout вручную и не в конце, а в середине. И вот я думаю, что делать с этой задачей.
Название: Re: Удаление Layout
Отправлено: Александр Ривилис от 14-08-2021, 18:52:39
но один пользователь додумался удалить только один layout вручную и не в конце, а в середине. И вот я думаю, что делать с этой задачей.
Можешь его предупредить, что этого делать в будущем не следует, и желательно отменить удаление листа (используя событие LayoutManager.LayoutToBeRemoved)
Название: Re: Удаление Layout
Отправлено: Lemieux от 14-08-2021, 19:01:21
и желательно отменить удаление листа (используя событие LayoutManager.LayoutToBeRemoved)
А как отменить? Я пробовал использовать данные эвент, но так и не понял как отменить удаление. Этот же эвент просто срабатывает перед удалением.
Название: Re: Удаление Layout
Отправлено: Александр Ривилис от 14-08-2021, 19:05:52
А как отменить?
В событии запускаешь (через Document.SendStringToExecute) команду "_Undo " или "_U ". Но вообще-то я имел в виду, чтобы заставить пользователя самого выполнить отмену, если он удаляет созданный тобой Лист. Тебе же следует его просто предупредить, что этот Лист нужен и чтобы он сам выполнил отмену удаления.
Название: Re: Удаление Layout
Отправлено: Lemieux от 14-08-2021, 19:08:54
В событии запускаешь (через Document.SendStringToExecute) команду "_Undo " или "_U ".
Хитро  :)

Но вообще-то я имел в виду, чтобы заставить пользователя самого выполнить отмену, если он удаляет созданный тобой Лист. Тебе же следует его просто предупредить, что этот Лист нужен и чтобы он сам выполнил отмену удаления.
Я подумал об этом варианте, но пока начал решать вопрос, то просто стало интересно.
Название: Re: Удаление Layout
Отправлено: Александр Ривилис от 14-08-2021, 19:11:31
Lemieux,
Кстати, запускать отмену следует не в событии LayoutToBeRemoved, а в событии LayoutRemoved, когда уже точно известно, что будет что отменять...
Название: Re: Удаление Layout
Отправлено: avc от 14-08-2021, 20:58:35
У меня команда создаёт листы в пространстве модели и для них настраивает layout, чтобы потом с одного нажатия публиковать документ. У меня команды для для добавления листов и удаления (для меня казалось логично удалять каждый последний лист, если он не понадобился), но один пользователь додумался удалить только один layout вручную и не в конце, а в середине. И вот я думаю, что делать с этой задачей.
На мой взгляд, не с того конца заходите. Раз программа что-то создала (не обязательно лист), то надо как-то пометить, что это программно созданный объект (в xData, например). И после можно будет легко пересоздавать весь набор, удаляя все старые. Пользователь имеет законное право удалить все что ему угодно. Это его чертеж. Просто надо учитывать это обстоятельство. Запрещать бесполезно - найдется способ обойти запрет.