Мне не удалось заставить это работать. Я думаю, что я делаю что-то не так с преобразованиями. Я просто хочу отключить средство обновления после того, как оно будет реализовано в приложении.
Ниже по порядку приведены классы «Инициализация приложения», «Утилитный класс» и «Отключенный класс».
Запуск приложения
try
{
UtilsAssemblyLock.AssemblyLockUpdaterId assemblyLockUpdater =
new UtilsAssemblyLock.AssemblyLockUpdaterId(application
.ActiveAddInId);
UpdaterRegistry.RegisterUpdater(assemblyLockUpdater, true);
UpdaterRegistry.AddTrigger(
assemblyLockUpdater.GetUpdaterId(),
new ElementClassFilter(typeof(FabricationPart)),
Element.GetChangeTypeParameter(new ElementId(BuiltInParameter.FABRICATION_PART_WEIGHT)));
UtilsAssemblyLock.assemblyLockedFailureId =
new FailureDefinitionId(Guid.NewGuid());
FailureDefinition.CreateFailureDefinition(
UtilsAssemblyLock.assemblyLockedFailureId,
FailureSeverity.Error,
"S.A.I.: \n" + "Cannot edit assembly without permission.");
}
catch (Exception ex3)
{
MessageBox.Show(ex3.Message);
return Result.Cancelled;
}
Класс утилит
public class UtilsAssemblyLock
{
public static FailureDefinitionId assemblyLockedFailureId;
public class AssemblyLockUpdaterId : IUpdater
{
private readonly UpdaterId assemblyLockUpdaterId;
private FabricationDimensionDefinition _dimensionDefinition;
public AssemblyLockUpdaterId(AddInId id)
{
assemblyLockUpdaterId = new UpdaterId(id, new Guid("7595F412-275B-4F65-A354-7F9CB439283B"));
}
public void Execute(UpdaterData data)
{
try
{
Document doc = data.GetDocument();
List ids = new List();
ids.AddRange(data.GetAddedElementIds());
ids.AddRange(data.GetModifiedElementIds());
ids.AddRange(data.GetDeletedElementIds());
foreach (ElementId id in ids)
{
if (doc.GetElement(id) is FabricationPart fabricationPart)
{
if (!data.IsChangeTriggered(id, Element.GetChangeTypeParameter(new ElementId(BuiltInParameter.FABRICATION_PART_WEIGHT))))
{
break;
}
if (!fabricationPart.IsValidObject)
continue;
#region Elements Are Assembled
if (!fabricationPart.AssemblyInstanceId.IsNull())
{
Console.Beep();
AssemblyPassword assemblyPasswordForm = new AssemblyPassword();
assemblyPasswordForm.ShowDialog();
if (assemblyPasswordForm.assemblyPasswordEntry() == "1234" ||
assemblyPasswordForm.assemblyPasswordEntry() == "abcd")
{
}
else
{
FailureMessage failureMessage = new FailureMessage(assemblyLockedFailureId);
failureMessage.SetFailingElement(id);
doc.PostFailure(failureMessage);
}
}
#endregion
}
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
public UpdaterId GetUpdaterId()
{
UpdaterId id = assemblyLockUpdaterId;
return (id);
}
public ChangePriority GetChangePriority()
{
return ChangePriority.MEPSystems;
}
public string GetUpdaterName()
{
return "Fabrication Assembly Updater";
}
public string GetAdditionalInformation()
{
return "Fabrication Pipe Assembly updater example: checks to make sure Pipe that has been assembled " +
"is not edited.";
}
}
}
Отключить команду
{
[Transaction(TransactionMode.Manual)]
//[Journaling(JournalingMode.NoCommandData)]
public class DisableAssemblyLock : IExternalCommand
{
public Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements)
{
var transaction = new Transaction(commandData.Application.ActiveUIDocument.Document, "Disable Assembly Lock");
using (transaction)
{
if (transaction.Start() == TransactionStatus.Started)
{
try
{
UpdaterRegistry.DisableUpdater(new AssemblyLockUpdaterId(commandData.Application.ActiveAddInId));
}
catch (Exception e)
{
MessageBox.Show(e.Message);
return Result.Failed;
}
finally
{
transaction.Commit();
}
}
return Result.Succeeded;
}
}
}
}
Подробнее здесь: https://stackoverflow.com/questions/762 ... ng-updater
Борьба с отключением Updater ⇐ C#
Место общения программистов C#
1731095303
Anonymous
Мне не удалось заставить это работать. Я думаю, что я делаю что-то не так с преобразованиями. Я просто хочу отключить средство обновления после того, как оно будет реализовано в приложении.
Ниже по порядку приведены классы «Инициализация приложения», «Утилитный класс» и «Отключенный класс».
Запуск приложения
try
{
UtilsAssemblyLock.AssemblyLockUpdaterId assemblyLockUpdater =
new UtilsAssemblyLock.AssemblyLockUpdaterId(application
.ActiveAddInId);
UpdaterRegistry.RegisterUpdater(assemblyLockUpdater, true);
UpdaterRegistry.AddTrigger(
assemblyLockUpdater.GetUpdaterId(),
new ElementClassFilter(typeof(FabricationPart)),
Element.GetChangeTypeParameter(new ElementId(BuiltInParameter.FABRICATION_PART_WEIGHT)));
UtilsAssemblyLock.assemblyLockedFailureId =
new FailureDefinitionId(Guid.NewGuid());
FailureDefinition.CreateFailureDefinition(
UtilsAssemblyLock.assemblyLockedFailureId,
FailureSeverity.Error,
"S.A.I.: \n" + "Cannot edit assembly without permission.");
}
catch (Exception ex3)
{
MessageBox.Show(ex3.Message);
return Result.Cancelled;
}
Класс утилит
public class UtilsAssemblyLock
{
public static FailureDefinitionId assemblyLockedFailureId;
public class AssemblyLockUpdaterId : IUpdater
{
private readonly UpdaterId assemblyLockUpdaterId;
private FabricationDimensionDefinition _dimensionDefinition;
public AssemblyLockUpdaterId(AddInId id)
{
assemblyLockUpdaterId = new UpdaterId(id, new Guid("7595F412-275B-4F65-A354-7F9CB439283B"));
}
public void Execute(UpdaterData data)
{
try
{
Document doc = data.GetDocument();
List ids = new List();
ids.AddRange(data.GetAddedElementIds());
ids.AddRange(data.GetModifiedElementIds());
ids.AddRange(data.GetDeletedElementIds());
foreach (ElementId id in ids)
{
if (doc.GetElement(id) is FabricationPart fabricationPart)
{
if (!data.IsChangeTriggered(id, Element.GetChangeTypeParameter(new ElementId(BuiltInParameter.FABRICATION_PART_WEIGHT))))
{
break;
}
if (!fabricationPart.IsValidObject)
continue;
#region Elements Are Assembled
if (!fabricationPart.AssemblyInstanceId.IsNull())
{
Console.Beep();
AssemblyPassword assemblyPasswordForm = new AssemblyPassword();
assemblyPasswordForm.ShowDialog();
if (assemblyPasswordForm.assemblyPasswordEntry() == "1234" ||
assemblyPasswordForm.assemblyPasswordEntry() == "abcd")
{
}
else
{
FailureMessage failureMessage = new FailureMessage(assemblyLockedFailureId);
failureMessage.SetFailingElement(id);
doc.PostFailure(failureMessage);
}
}
#endregion
}
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
public UpdaterId GetUpdaterId()
{
UpdaterId id = assemblyLockUpdaterId;
return (id);
}
public ChangePriority GetChangePriority()
{
return ChangePriority.MEPSystems;
}
public string GetUpdaterName()
{
return "Fabrication Assembly Updater";
}
public string GetAdditionalInformation()
{
return "Fabrication Pipe Assembly updater example: checks to make sure Pipe that has been assembled " +
"is not edited.";
}
}
}
Отключить команду
{
[Transaction(TransactionMode.Manual)]
//[Journaling(JournalingMode.NoCommandData)]
public class DisableAssemblyLock : IExternalCommand
{
public Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements)
{
var transaction = new Transaction(commandData.Application.ActiveUIDocument.Document, "Disable Assembly Lock");
using (transaction)
{
if (transaction.Start() == TransactionStatus.Started)
{
try
{
UpdaterRegistry.DisableUpdater(new AssemblyLockUpdaterId(commandData.Application.ActiveAddInId));
}
catch (Exception e)
{
MessageBox.Show(e.Message);
return Result.Failed;
}
finally
{
transaction.Commit();
}
}
return Result.Succeeded;
}
}
}
}
Подробнее здесь: [url]https://stackoverflow.com/questions/76238962/struggling-with-disabling-updater[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия