All functions of MochaImport+ V6 can also be remote-executed from other scripts. It supports exactly the same functions as the build-in KBar-API, so please refer to the KBar API documentation for the documentation of all available functions.
Using the API is best explained with an example:
/* This document explains how to remote-execute functions of MochaImport+ V6 from other Ae scripts. The API object used here has the same functions as the KBar API (see https://mamoworld.com/article/mochaimport-kbar-api) */ // let's get the API to do something with MochaImport+. // Pass a file object to MochaImportPlus.jsxbin as argument // of the getMochaImportPlusV6() call // if it is not in the same folder as this script. // See definition of this function at the end of this file var API = getMochaImportPlusV6(); // loads tracking data from the mocha effect on the selected layer API.loadFromEffect(); // applies a corner pin to the selected layer // a dialog is shown to choose the corner pin options API.applyCornerPin(); // applies a corner pin to the first layer of the active comp API.applyCornerPin({layer:app.project.activeItem.layer(1)}); // applies a corner pin to the second layer of the composition without showing a dialog API.applyCornerPin({ layer:app.project.activeItem.layer(2), silent:true, // no dialog, so we have to specify all options below or default values are used cornerPinEffect:"CC Power Pin", // this is the effect match name of the useLiveExpressions:true, keepCurrentFrame:false }); /* This function creates the mochaImportPlusV6 object if it does not exist yet If scriptFile is undefined, this function assumes that MochaImportPlus.jsxbin is in the same folder as this script file. Otherwise, please pass a file object for MochaImportPlus.jsxbin as scriptfile argument. */ function getMochaImportPlusV6(scriptFile){ if(typeof mochaImportPlusV6 == 'undefined'){ return executeMochaImportPlus(scriptFile); } return mochaImportPlusV6; function executeMochaImportPlus(scriptFile){ if(scriptFile === undefined){ scriptFile = getMochaImportPlusScriptFileFromDefaultLocation(); } if(!scriptFile.exists) throw new Error("could not find file "+scriptFile.fsName); scriptFile.open("r"); var fileContents = scriptFile.read(); scriptFile.close(); // yes, this is a global variable. // we use this kbar API to tell MochaImport+ that it should not show its user interface // and return its API instead kbar = { button:{argument:"getAPI"}}; // execute the file --> this should create the mochaImportPlusV6 object var result = eval(fileContents); // when MochaImport+ understands the button command, it will set it to undefined. if(kbar.button !== undefined){ throw new Error("MochaImport+ didn't understand the getAPI action, is scriptFile pointing to another script?"); } return result; } function getMochaImportPlusScriptFileFromDefaultLocation(){ // get the folder where this script file is located var myFolder = (new File($.fileName)).parent; // find MochaImportPlus.jsxbin in the same folder var scriptFile = new File(myFolder.fsName+"/MochaImportPlus.jsxbin"); return scriptFile; } }
What about licenses?
Of course, the API will only work if a proper MochaImport+ license is installed. If you run in trial mode, the usual trial limitations apply (only the first few frames of tracking data are loaded).
- Log in to post comments