• Global community
    • Language:
      • Deutsch
      • English
      • Español
      • Français
      • Português
  • 日本語コミュニティ
    Dedicated community for Japanese speakers
  • 한국 커뮤니티
    Dedicated community for Korean speakers
Exit
0

registrer action plug-in of illustrator

New Here ,
Dec 20, 2016 Dec 20, 2016

Copy link to clipboard

Copied

hi All!

i'm a newbie on illustrator, i read the Illustrator CS6 Programmer's Guide, at pages 27 - Action plug-ins introduce registering action plug-ins events with Tutorial example, but i don't see any Action events showed in action panel. so someone can help me. Thanks!

TOPICS
SDK

Views

995

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines

correct answers 1 Correct answer

Guide , Dec 21, 2016 Dec 21, 2016

Actions only show in the panel after they've been recorded. You need to register your action and when your plugin is fired, check if recording is on (AIActionManagerSuite::InRecordMode). If so, you record your action using the AIActionManagerSuite. Then you just listen to the caller/selector that indicates AI wants you to play it back, and you unroll the parameters using the same suite and perform your operation.

Votes

Translate

Translate
Adobe
Guide ,
Dec 21, 2016 Dec 21, 2016

Copy link to clipboard

Copied

Actions only show in the panel after they've been recorded. You need to register your action and when your plugin is fired, check if recording is on (AIActionManagerSuite::InRecordMode). If so, you record your action using the AIActionManagerSuite. Then you just listen to the caller/selector that indicates AI wants you to play it back, and you unroll the parameters using the same suite and perform your operation.

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
New Here ,
Dec 21, 2016 Dec 21, 2016

Copy link to clipboard

Copied

thank you, A. Patterson! I did it as your guide, but not get any action. cause is in addAction function do not finish to register action event. you can give an example to me ? thanks so much

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Guide ,
Dec 22, 2016 Dec 22, 2016

Copy link to clipboard

Copied

During start up, you need register the action like so (rough code):

AIActionParamTypeRef actionParameters = 0;

AIErr error = sAIActionManager->AINewActionParamType(&actionParameters);

// add parameters using AIActionSetType

// register action with RegisterActionEvent & actionParameters

// clean up when done

sAIActionManager->AIDeleteActionParamType(actionParameters);

Next, when you are about to execute the functionality you described when you registered the action, you check to see if the user is recording:

if (sAIActionManager->InRecordMode()) {

     AIActionParamValueRef valueBlock;

     AIErr error = sAIActionManager->AINewActionParamValue(&valueBlock);

     // e.g.

     sAIActionManager->AIActionSetReal(valueBlock, 'valu', 10.0f);

     sAIActionManager->RecordActionEvent("my_action_name", kDialogOff, valueBlock);

     // clean up

     sAIActionManager->AIDeleteActionParamValue(valueBlock);

}

Now the action has been recorded. It should show up in the Action panel.

Lastly, when the user plays the action, you'll get a call/selector of kActionCaller / kDoActionSelector (see AIActionManager.h). When you get that, you need to cast the message void* to a DoActionMessage. It has a AIActionParamValueRef member param, from which you pull out the action values:

DoActionMessage* doActionMessage = reinterpret_cast<DoActionMessage*>(message);

AIReal value = 0.0f;

AIErr error = sAIActionManager->AIActionGetReal(message->param, id, &value);

// pull out other parameters if there are any

// do your functionality!

There are a bunch of other parameters with registering & recording actions you should play with. You can record enums, for example, which let you store a value like '10' with a string to describe it. You can also specify whether or not your functionality has a dialog or not, and let the action indicate if they want to show your dialog or not (they want to stop and tweak action parameters halfway through a playback).

Hope that helps!

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
New Here ,
Dec 22, 2016 Dec 22, 2016

Copy link to clipboard

Copied

Thank you, A. Patterson! I have a problem not finished: I created a plugin named "Rename Art" showed on the Tool panel. when I click on it will rename all arts selected. this plugin has executed exactly. could I call it in vb.net script? if could, how do I have to do ? Thank you so much

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Guide ,
Jan 03, 2017 Jan 03, 2017

Copy link to clipboard

Copied

Not quite sure I'm understanding you, but I think you're asking if you can invoke a plugin from ExtendScript (or just scripting in general)?

The answer is...sort of. AIScriptMessage.h has the C++ end of things, but I'm struggling to remember how you invoke that from script.

I think it's like so:

app.sendScriptMessage("exact_plugin_name", "function_name", "parameter1, parameter2, parameter3");

If you look at AIScriptMessage.h, it has sample code for catching the related caller and pulling out the information. It's pretty crappy, but it should work.

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
New Here ,
Jan 03, 2017 Jan 03, 2017

Copy link to clipboard

Copied

I mean: I created a plugin do anything (ex: rename all arts,...). After, I create a Tool using VB.net, this Tool will rename all objects in a file illustrator. In my Tool, can I use the plugin created before ? if can, how do i have to do ? Thank you so much!

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Guide ,
Jan 04, 2017 Jan 04, 2017

Copy link to clipboard

Copied

LATEST

I'm afraid I don't have any experience VB.net so I don't know what's possible there. Maybe someone else will have some experience that can shed some light on it. Good luck though!

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines