
Alex White
Enthusiast
Alex White
Enthusiast
Activity
‎Apr 29, 2025
09:33 PM
1 Upvote
Adobe released a new update of ZXPSignCMD, both for macOS and Windows, which is available here: https://github.com/Adobe-CEP/CEP-Resources/tree/master/ZXPSignCMD/4.1.3 I think the issue is completely solved now. 🙂
... View more
‎Apr 18, 2025
08:12 AM
25 Upvotes
Looks like the ZXP sign process is broken both on macOS and Windows. macOS: Signing process ends with: [1] 21894 segmentation fault ./ZXPSignCmd -sign mypassword -tsa Window: just fails with no error Command that fails: ./ZXPSignCmd -sign "/Users/admin/Desktop/extension/dist/cep" "/Users/admin/Desktop/extension/dist/zxp/com.my.extension.cep.zxp" "/Users/admin/Desktop/extension/lib/.tmp/com.my.extension.cep-cert.p12" mypassword -tsa http://timestamp.digicert.com/ None of the environments nor macOS nor Windows has changed. It just worked yesterday and today it's not. ZXPSignCmd has proper executable rights Tried changing timestamp servers Tried using different network connection Verified with different repos/tools Tested on ARM/x64 macOS, ARM/x64 Windows. All fail to sign Confirmed the same behavior by many devs
... View more
‎Apr 02, 2025
10:26 PM
There is another method availabe that might help you: app.project.renderQueue.renderAsync();
... View more
‎Feb 20, 2025
04:41 AM
Undo group breaks when you are importing the file
... View more
‎Feb 19, 2025
04:47 AM
2 Upvotes
C++ <-> ExtendScript communication is possible, but compiling the ExternalLibrary would require some struggle and IMHO it is not worth it nowadays. ExtendScript should only do ExtendScript things and avoid communication with file system. C++ <-> CEP. Choosing the right way of passing the data and intercommunication protocol highly depends on what exact feature you are trying to implement and what kind of data to pass. So far, the easiest and most reliable way is to use Websockets and that's what I'm doing inside my tools as well.
... View more
‎Oct 28, 2024
12:28 PM
This error comes from Aeviewer. Please close the extension and restart After Effects. Additionally, please open a support ticket here: https://aescripts.com/contact/
... View more
‎Jun 09, 2024
07:54 PM
You need to ask the plugin vendor to re-sign the plugin.
... View more
‎May 20, 2024
09:09 PM
1 Upvote
Yes, right-click on the folder and choose "Show all files inside".
... View more
‎May 19, 2024
10:39 AM
4 Upvotes
There is a way! Just use Aeviewer: https://aescripts.com/aeviewer/ If allows to preview and import FFX presets and many other files. Here is the demo: https://twitter.com/motion_land/status/1783520359481737493
... View more
‎Mar 13, 2024
09:30 AM
Nope, unfortunately
... View more
‎Mar 13, 2024
08:59 AM
There is no hook/method available so the best you can do is monitor the project name via a timer and apply certain functions depending on the name. Here is a rought example: // Global variables
var previousProjectPath = "";
// Function to check project path and execute functions
function checkProjectPath() {
var currentProjectPath = app.project.file ? app.project.file.fsName : "";
if (currentProjectPath !== previousProjectPath) {
previousProjectPath = currentProjectPath;
if (currentProjectPath !== "") {
var projectName = app.project.file.name.replace(/\.aep$/, "");
switch (projectName) {
case "Project1":
executeProject1Functions();
break;
case "Project2":
executeProject2Functions();
break;
// Add more cases for different project names
default:
alert("Unknown project: " + projectName);
}
}
}
}
// Function to execute specific functions for Project1
function executeProject1Functions() {
// Add your custom functions for Project1 here
alert("Project1 functions executed");
}
// Function to execute specific functions for Project2
function executeProject2Functions() {
// Add your custom functions for Project2 here
alert("Project2 functions executed");
}
// Start the scheduled task
app.scheduleTask("checkProjectPath()", 3000, true);
... View more
‎Feb 15, 2024
12:52 AM
You need to find the following file: macOS: /Users/admin/Library/Preferences/Adobe/After Effects/24.0/Adobe After Effects 24.0 Prefs.txt Windows: C:\Users\admin\AppData\Roaming\Adobe\After Effects\24.0\Adobe After Effects 24.0 Prefs.txt And under the ["Main Pref Section v2"] section set the"Pref_SCRIPTING_FILE_NETWORK_SECURITY" prop to "1": So it would be : "Pref_SCRIPTING_FILE_NETWORK_SECURITY" = "1" Note that you need to do that with After Effects closed because otherwise After Effects would overwrite the settings on close with loaded settings.
... View more
‎Feb 14, 2024
11:48 PM
You can try to write a .vbs or .bat file to do that, but it will also require admin rights to modify the settings.
... View more
‎Feb 14, 2024
11:45 PM
1 Upvote
Sure, Adobe made ExtendScript Debugger for VS Code: https://marketplace.visualstudio.com/items?itemName=Adobe.extendscript-debug https://community.adobe.com/t5/exchange-discussions/extendscript-vscode-debugger-2-0-2-live-in-the-vscode-marketplace/td-p/12997758
... View more
‎Feb 14, 2024
10:51 PM
I think this has something to do with discontinued ESTK on macOS due to ARM processors (M1-M3) incompatibility.
... View more
‎Jan 04, 2024
10:44 PM
1 Upvote
Hi, the solution would be simple. You need to rewrite your expression a bit. Leave the first line of expressions as is and modify the second one to the following: [value[0], value[1] + temp] This will add audio amplitude values to the Y coordinates only. If the "temp" value produces too high values and you want to adjust them further, you can come up with something like this: [value[0], value[1] + temp / 50] Where 50 is a percent of how much you would like to reduce the amplitude. Depending on the complexity of the animation, it would probably also be worth trying to go with Motion Sketch to do that animation.
... View more
‎Dec 06, 2023
09:37 PM
1 Upvote
Sorry for self-promotion, but you can already do that and even more with Aep To Mogrt Pro.
... View more
‎Dec 02, 2023
03:00 AM
Try this updated code: var w = new Window("palette", "Offline Media", undefined);
w.add('statictext', undefined, "Enter media file suffix (e.g., mxf):");
var nameWindow = w.add("edittext");
nameWindow.characters = 30;
var sb = w.add("button", undefined, "Start");
w.show();
sb.onClick = offlineFunction;
function offlineFunction() {
try {
var name = nameWindow.text.toLowerCase();
var count = 0;
var errors = 0;
for (var i = 1; i <= app.project.numItems; i++) {
try {
var footageItem = app.project.items[i];
if (footageItem instanceof FootageItem && footageItem.file) {
var filename = footageItem.file.name;
if (filename) {
var idx = filename.lastIndexOf(".");
if (idx > 0) {
var suffix = filename.slice(idx + 1).toLowerCase();
if (suffix === name) {
count++;
var fr = footageItem.frameRate > 0 ? footageItem.frameRate : 1;
var dur = footageItem.duration > 0 ? footageItem.duration : 1;
footageItem.replaceWithPlaceholder(filename, footageItem.width, footageItem.height, fr, dur);
}
}
}
}
} catch (innerError) {
errors++;
$.writeln("Error processing item " + i + ": " + innerError.toString());
}
// Pause every 10 items to reduce strain on AE
if (i % 10 === 0) {
$.sleep(100); // Sleep for 100 milliseconds
}
}
var msg = "Offlined " + count + " media items. Errors: " + errors;
showMsg(msg);
} catch (e) {
showMsg("Exception! " + e.toString());
}
}
function showMsg(msg) {
var myWindow = new Window("dialog");
var myMessage = myWindow.add("statictext");
myMessage.text = msg;
myWindow.add("button", undefined, "OK").onClick = function () {
myWindow.close();
}
myWindow.show();
}
... View more
‎Nov 30, 2023
08:26 PM
1 Upvote
You can use a free version of Aeviewer to preview MOGRT, AEP, and PRPROJ files on mouse-over. You can even import the file the double click.
... View more
‎Nov 22, 2023
09:41 AM
That's awesome! Does it generate sprites or MP4 video inside the MOGRT file?
... View more
‎Nov 22, 2023
12:04 AM
1 Upvote
That's not a good practice that will lead to performance issues after a while.
... View more
‎Nov 21, 2023
11:09 PM
Unfortunately, After Effects doesn't provide such events.
... View more
‎Nov 21, 2023
11:08 PM
There is no way to detect is the user is currently editing text.
... View more
‎Oct 31, 2023
11:59 AM
2 Upvotes
You can make your function run async with "app.scheduleTask();" and during each loop check the global object if the execution should continue, for example: if ($.["myscriptname"].continueRun === false) {
// break the loop here and cancel task
app.cancelTask(); //
}
... View more
‎Oct 31, 2023
09:34 AM
So you need to open each of the selected comps and scale the first layer to fit the comp dimensions? Or you need to scale all layers inside each comp?
... View more
‎Oct 31, 2023
09:13 AM
Create "aev_after.jsx" script under the folder with your images with the following content: (function () {
try {
if (!app.project.selection.length || (!app.project.activeItem)) return !!alert("Please, open the composition and select layers");
app.beginUndoGroup("aev_after");
var importedProject = app.project.selection[app.project.selection.length - 1];
var myComp = app.project.activeItem;
var layer = myComp.selectedLayers[0];
app.executeCommand(2733); // fit to comp height
} catch (e) {
alert(e.toString() + "\nScript File: " + File.decode(e.fileName).replace(/^.*[\|\/]/, '') +
"\nFunction: " + arguments.callee.name +
"\nError on Line: " + e.line.toString());
} finally {
app.endUndoGroup();
}
})() Then use Aeviewer to import files. It will automatically pick up this script and resize images
... View more
‎Oct 24, 2023
01:33 AM
1 Upvote
You don't need to translate all code to TypeScript. There are are options to use JS both in JSX and JS. As for the CEP replaced by UXP, from what I have heard, After Effects should have at least 2 years of CEP support so there are still plenty of time. I could help you in more detailed manner if you could provide some code. If you feel so, you can reach me here: https://www.aeviewer.com/contact
... View more
‎Sep 29, 2023
06:29 AM
I've added an additional check if the expression can be set for the chosen property. if (app.project.activeItem instanceof CompItem) {
var comp = app.project.activeItem;
var selectedLayer = comp.selectedLayers[0];
if (selectedLayer) {
// Check if the layer has effects
if (selectedLayer.property("ADBE Effect Parade").numProperties > 0) {
var effectGroup = selectedLayer.property("ADBE Effect Parade");
var lastEffect = effectGroup.property(effectGroup.numProperties);
// Check if the last effect has checkboxes
if (lastEffect.numProperties > 0) {
var checkbox1 = lastEffect.property("Uniform"); // Change to the actual name
var checkbox2 = lastEffect.property("Individual"); // Change to the actual name
// check if expected effect is present and expression can be set
if (checkbox1 !== null || (!checkbox1.canSetExpression)) {
alert("Cannot set expression for the property: " +
selectedLayer.name + "." + lastEffect.name + ".Uniform");
} else {
checkbox1.expression = 'value;';
}
if (checkbox2 !== null || (!checkbox2.canSetExpression)) {
alert("Cannot set expression for the property: " +
selectedLayer.name + "." + lastEffect.name + ".Individual");
} else {
checkbox2.expression = 'value;';
}
}
} else {
alert("No effects found on the selected layer.");
}
}
}
... View more
‎Sep 28, 2023
07:09 AM
AE 2021 or earlier.
... View more
‎Sep 19, 2023
09:13 PM
If you need to get PostScript Font Names in current and previous versions of AE, I can recommend you installing Aeviewer (which is free extension), that has an API to access all available fonts installed in the system. Here is an API on getting system fonts: https://github.com/axwt/aeviewer-api#get-an-object-with-available-system-fonts
... View more