/
Edwar
/
cam-api-examples
Обзор
Документация
Войти
/
Edwar
/
cam-api-examples
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
ExtensionUtility/ExtensionUtilityDelphi/project/main/src/Extension.pas
94 строки
2 KB
bond
Updated SDK version and build system version. Create a place for specification package dependency.
04 фев 2025, 16:29
04 фев 2025, 16:29
fbce780
Код
Авторство
О чём код?
unit Extension; interface uses System.SysUtils ,System.IOUtils ,Windows ,Winapi.ShellAPI ,Winapi.TlHelp32 ,IDL.CAMAPI.Extensions ,IDL.CAMAPI.Application ,IDL.CAMAPI.ResultStatus ,IDL.CAMAPI.Singletons ,SystemExtensionFactory ; type TExtensionTest = class(TInterfacedObject ,IExtension ,IExtensionUtility) private FExtensionInfo: IExtensionInfo; public constructor Create(); destructor Destroy(); override; public function Get_Info: IExtensionInfo; safecall; procedure Set_Info(const Value: IExtensionInfo); safecall; public /// <summary> /// Show parameters of project /// </summary> /// <param name="context">Information about current running instance</param> /// <param name="resultStatus">Structure to return error</param> procedure Run(const Context: IExtensionUtilityContext; out ResultStatus: TResultStatus); safecall; end; implementation { TExtensionTest } constructor TExtensionTest.Create; begin inherited Create(); FExtensionInfo := nil; end; destructor TExtensionTest.Destroy; begin // inherited; end; function TExtensionTest.Get_Info: IExtensionInfo; begin Exit(FExtensionInfo); end; procedure TExtensionTest.Set_Info(const Value: IExtensionInfo); begin FExtensionInfo := Value; end; procedure TExtensionTest.Run(const Context: IExtensionUtilityContext; out ResultStatus: TResultStatus); begin ResultStatus := default(TResultStatus); try var ret := default(TResultStatus); // get global context var extension := TSystemExtensionFactory.GetSingletonExtension<ICamApiPaths>('Extension.Global.Singletons.Paths'); // get context var currentFolder := extension.Get_MainProgramFolder; if currentFolder = '' then raise Exception.Create('Cannot get MainProgramFolder'); // export var application := Context.CamApplication; var exportedFile := TPath.Combine(currentFolder, 'exported.stcp'); application.ExportCurrentProject(exportedFile, true, ret); if (ret.Code = TResultStatusCode.rsError) then raise Exception.Create(ret.Description); except on e: exception do begin ResultStatus.Code := TResultStatusCode.rsError; ResultStatus.Description := e.Message; end; end; end; end.