Layer Visibility Javascript

Hi,
I am working on a model of a dovetailed drawer. It is a simple model, but it must be made to show different design options - to be able to switch them back and forth.
I have tried to use Daniel Beardsley's "Build Your Own Car Prototype" as a template for my own presentation. All seemed to go fairly smoothly until it came time to swap the Layer Visibility code around to my own needs.
I want the user to be able to choose between three different deisgn options and so I put each mesh on a separate layer. However, I do not get the effect I am seeking. The console returns:
TypeError: context3D.LayerManager has no properties
2:AcroForm:Button2:Annot5:MouseUp:Action1
How can I set this up correctly?
- David

Thank you very much, Daniel, for your further input.
I have changed the document as you suggested, however it did not work for me. Perhaps I omitted something vital.
Looking over the layers.js carefully I see that at the top a number of methods are named in the Layer Object Constructor, and that at the bottom a number of functions are offered as options for the user of the script. It would seem to me that the functions use these methods to make changes in the layers of the 3D object via its source code.
Considering the above, it seems best to me that I use the functions offered and then define the variable and its properties as you suggest. Editing Layers.js like this:
// The following functions can be called by any PDF document
// that includes this file as part of its 3D Annotation JavaScript.
// the rest of the code in this file (above) is private and can only
// be accessed via the layersManager.
var layersManager = new LayersManagerObject(4);
function addPartToLayer( partName, layerIndex )
layersManager.addPartToLayer( partName, layerIndex );
layersManager.addPartToLayer( "Bottom", 0 );
layersManager.addPartToLayer( "Straight01", 1 );
layersManager.addPartToLayer( "DeepU02", 2 );
layersManager.addPartToLayer( "Crescent03", 3 );
function displayLayer( layerIndex )
layersManager.displayLayer( layerIndex );
layersManager.displayLayer( 0 );
layersManager.displayLayer( 1 );
layersManager.displayLayer( 2 );
layersManager.displayLayer( 3 );
Then set up the button to "displayLayer":
var context3D = getAnnots3D(0)[0].context3D;
context3D.layersManager.displayLayer( 1 );
Unfortunately this does not seem to work either, but instead returns an error that "function is not a function" . . . :(
- David

Similar Messages

  • Using hyperlink to toggle layer visibility?

    Okay, I've got a few threads going in other forums on this, and I'm getting a little frustrated with retyping it all, so I'm going to try to be brief... if you have any questions on what I'm trying to do, sorry for being vague, just ask and I'll try to clarify (I know, I hate posts that don't give enough info to work from).
    OKay... I work with surveillance systems, and for one customer, I'm taking existing PDFs they have of site floorplans, loading them into Ilustrator CS5, adding icons and text showing camera locations and fields-of-view, then exporting to PDF, loading that into Acrobat Pro X, and adding a hyperlink to each camera icon that when clicked, will open a window with a still capture from that camera, so they can see what the view is "supposed" to look like.
    This works fairly well, and the client is happy with it... there's just one annoyance: every click produces a dialog box warning about opening an external program, and in newer versions of Reader, there's no "Don't display this again" checkbox.  A way around this would be great, but I had a better idea:
    I'm already creating layers in Illustrator: one for the floor plan, a second for the camera icons, a third for the text, and a fourth blank one so I can "swap out" the underlying floor/camera info without losing the hyperlinks (anywhere from 16 to 30, depending on the site).
    I had the idea that what I could do, is add a separate layer for each camera's sample image, which would allow me to add the image directly to the document, and have it just appear over the floor plan, rather than loading in a separate app.  Then I could have the image layers start out invisible, and toggle the visibility by clicking the camera icon.
    So I found this article that describes changing layer visibility from a hyperlink: http://help.adobe.com/en_US/Acrobat/9.0/Professional/WS58a04a822e3e50102bd615109794195ff-7 c5b.w.html
    It... sort of works.  I can create a link that will show a hidden layer... but not re-hide it.  I created a separate link that would hide it... but not show it.  Not really suitable - I'd like to have the same link toggle the layer on/off (heck, it would pretty much have to, or you KNOW the end users will get confused). 
    And the whole process seems a little clunky, at least from the above instructions.  Is there a better way to do this in Acrobat X?  Maybe a way to do it all within Illustrator?  Hope I'm clear enough about what I'm trying to achieve.
    If all else fails, is there a way to get rid of the $&^@*#!!! external program warning popup??
    Thanks, all!

    Forget that help page example, it's only practicable if you're setting a very simple pattern of layers.
    Instead, you should look at the JavaScript commands to control the visibility of individual layers, referencing them by their stacking order or name.
    For example this snippet will turn on the layer called "camera1":
    var ocgArray = this.getOCGs();
    for (var i=0; i < ocgArray.length; i++) {
      if (ocgArray[i].name=="camera1") ocgArray[i].state = true;
    You can easily extend this idea by creating a document-level function in the PDF, and calling that function from your links. For example if all your camera layers are named "camera1","camera2", etc. and you have a doc-level function like this:
    function showCamLayer(theName) {
      var ocgArray = this.getOCGs();
      for (var i=0; i < ocgArray.length; i++) {
        if (ocgArray[i].name.substr(0,6) == "camera") ocgArray[i].state = false;
        if (ocgArray[i].name == theName) ocgArray[i].state = true;
    then you can set your links to "run a JavaScript" and enter a single-line command such as showCamLayer("camera4")

  • Save layer visibility states into new PDF

    Hi there,
    I have a document that is a floorplan of a building. I have created color layers to highlight specific rooms (e.g. Office 1, Office 2, Women's/Men's room, Storage room, etc.). I would like to save the PDF (overwrite or as a new PDF) with certain layers turned on so that the next time it is opened (by me or a client), the highlighted rooms are still showing. I found a somewhat convoluted way of doing this in Acrobat using Bookmarks and tying a "Set layer visibility" Action to it, but I am not sure how to go about doing it in Reader. Or should I look into creating a button or JavaScript in Acrobat so that it can complete the same tasks in Reader?
    Thank you for your help,
    Serge

    You might try using View>New View. It will entail going through and setting each map as you would like by turning on and off the layers you want and then save that view with a distinctive name. Then you can use the saved views to act as Layer Comps.

  • InDesign button changes layer visibility?

    Hi all,
    I'm in InDesign CS4. I want to produce an 8-page PDF online publication that contains a tutorial about InDesign (what else?!)
    Also, imagine a JavaScript Button object on the bottom of each page that, when clicked, shows a layer of graphics for Windows screenshots, and when clicked again, shows a layer of Mac OS X screenshots.
    So the text stays the same, but the button would change between accompanying Mac or Windows screenshots. How cool would that be?!
    I see in the button panel, that I can choose from things like close, exit, goto anchor, next page, previous page, URL, movie, sound, view zoom...
    But can the button be made to hide or show a layer of graphics in the PDF (assuming an Acrobat version at least v6 or newer).
    Does that have to be done in Acrobat Pro? Can it be done at all?
    Mike Witherell in Maryland

    Mike,
    Layer visibility changes can only be done within Acrobat.
    Show/Hide fields can be done within ID.
    Yes, if you screw up a button in ID, you can change it in InDesign, but I warn you, the interface for buttons in Acrobat is much different than ID and even the most simple button action becomes very complicated in Acrobat.

  • Interactive PDF file with layer visibility issue.

    I have created an interactive PDF file in InDesign CC and added buttons in Acrobat CC. The buttons reveal layers with the layer visibility action under properties. The problem is that Reader takes 3-4 seconds to show the layer in full screen mode and flickers in any other view.

    For that kind of volume and unattended operation, you want InDesign Server – which is the server/high volume edition of INDD.
    From: Adobe Forums <[email protected]<mailto:[email protected]>>
    Reply-To: "[email protected]<mailto:[email protected]>" <[email protected]<mailto:[email protected]>>
    Date: Thu, 3 Nov 2011 06:58:07 -0700
    To: Leonard Rosenthol <[email protected]<mailto:[email protected]>>
    Subject: How do I create an interactive PDF file with variable data
    Re: How do I create an interactive PDF file with variable data
    created by Ti26E31DSxxx<http://forums.adobe.com/people/Ti26E31DSxxx> in PDF Language and Specifications - View the full discussion<http://forums.adobe.com/message/4005459#4005459

  • Newbie q: rollover using layer visibility?

    Forgive the newbie question, I'm new to Fireworks (having used instead Photoshop and Golive since Golive 1.0).
    I have a layered Photoshop document I've brought into Fireworks (and the various layers have been organised into layer groups). I have series of bitmap graphic objects that I want the user to point at, and click on. What I want is to have a different bitmap graphic show when the user rolls over it (the graphics are gray text: point at a word and it turns white)
    The page, as it stands, has a single base layer where the bitmap items are gray and then, on top of this base layer, an individual layer for each graphic, but white this time (in register, of course, over their non-rolled over counterparts in the base layer). I've drawn slices over each text item, and I was hoping that I could use states (a new concept for me), along with layer visibility, to have a nice rollover behaviour.
    I had thought I could make a new state, then turn on visibility of a layer, and use that new state as the basis of a Swap Image rollover behaviour (or, when that didn't work, a Simple rollover behaviour). I'm not having any success, any layer that I make visible in one state, then becomes visible in the other state.
    The way I used to do this was to export two graphics from Photoshop for a rollover (one for mouseout, one for mousein), and to build the rollover behaviour that way. I'm pretty sure that Fireworks will do this too, but I'm really hoping that it's become more efficient than that, as I was building rollovers this way quite a long time ago! (anyone remember the Apple Media Tool?).
    I've read quite a bit about States, Layers and Pages in several tutorial websites (Adobe and others), and I'm afraid that I'm still not straight on how to achieve what I'm looking for. Can anyone help me out?
    Cheers!
    Chas

    That's great!
    Been using photoshop for a while and never noticed that Fill... menu item!
    Brilliantly simple and simply brilliant. There's a few actions I'll need to amend now.
    Thanks you so much for the speedy response

  • Save Layer Visibility Settings

    So, I have an Illustrator CS5 file with 30 different layers of artwork that I've been using to create PDF city maps.  Is there a way that I can save layer visibility settings for each map? i.e. For one map, I want these 8 layers to be visible, for another, I want 6 other layers to be visible (and so on).
    I'm also using sublayers but I'm just wondering if there's a script or something that will remember certain layer visibility settings. Artboards?
    Thanks

    You might try using View>New View. It will entail going through and setting each map as you would like by turning on and off the layers you want and then save that view with a distinctive name. Then you can use the saved views to act as Layer Comps.

  • Toggle layer visibility

    Hello,
    I need one keyboard shortcut that toggles visibility of one of layers.
    I paint and need to toggle on and off one layer below (layer with a reference picture, not one i paint on). with a shortcut painting process will be not break as with case click at icon.
    tried to make toggle layer visibility with actions unfortunately with no success.
    it is possibility to toggle active layer visibility by add shortcut in keyboard shortcuts preferences  but here it going not about active layer.
    I have no experience with scripting.
    thank you!

    For this to work as written there can only be one layer in the document named 'Ref' otherwise it will toggle the top most layer with that name.
    var targetID = getLayerIDByName('Ref');
    if(undefined != targetID){
        if(getLayerVisibilityByID( targetID ) ){
            hideByName('Ref');
        }else{
            showByName('Ref');
    function getLayerIDByName(name) {
        try{
        var ref = new ActionReference();
        ref.putProperty( charIDToTypeID("Prpr") , charIDToTypeID( "LyrI" ));
        ref.putName( charIDToTypeID( "Lyr " ), name );
        return executeActionGet(ref).getInteger(charIDToTypeID( "LyrI" ));
        }catch(e){}
    function getLayerVisibilityByID( id ) {
        var ref = new ActionReference();
        ref.putProperty( charIDToTypeID("Prpr") , charIDToTypeID( "Vsbl" ));
        ref.putIdentifier( charIDToTypeID( "Lyr " ), id );
        return executeActionGet(ref).getBoolean(charIDToTypeID( "Vsbl" ));
    function hideByName(name) {
        var desc = new ActionDescriptor();
            var list = new ActionList();
                var ref = new ActionReference();
                ref.putName( charIDToTypeID('Lyr '), name );
            list.putReference( ref );
        desc.putList( charIDToTypeID('null'), list );
        executeAction( charIDToTypeID('Hd  '), desc, DialogModes.NO );
    function showByName(name) {
        var desc = new ActionDescriptor();
            var list = new ActionList();
                var ref = new ActionReference();
                ref.putName( charIDToTypeID('Lyr '), name );
            list.putReference( ref );
        desc.putList( charIDToTypeID('null'), list );
        executeAction( charIDToTypeID('Shw '), desc, DialogModes.NO );

  • Layer Visibility Overrides

    I'm having an issue with InDesign's Layer Visibility Options when importing a PSD file. I use the layer visibility option upon import of the PSD and shut off the layers I do not want showing. But then if I edit the PSD and add an additional layer, the file updates in InDesign and turns on every single layer again. Is there a way around this? It makes the layer options kind of useless to me.

    When I import the PSD into InDesign CS3, I make sure it says to preserve the layer overrides, but if I end up adding a new layer to the PSD, when it updates in InDesign the layer override goes haywire and shows all the layers.

  • Keeping layer visibility overrides in CS2

    Hi,
    I apologize if this has been answered before - did a search but couldn't find what I was looking for.
    When using CS4 (6.0.3), I have no problem setting my "object layer option overrides" on a pdf file inside Indesign and having them stick when the pdf is updated.
    The problem comes when I have to use Indesign CS2 on projects.  When setting the over rides everything looks fine but when I use illustrator to make some changes to the pdf and refresh the link in Indesign, all the layers are shown and the "keep layer visibility over rides" does not do what it is supposed to do.  I have it set to only show 2 of 3 layers and the smallest change to the pdf file and a subsequent update to the link will always reset all the layers to show.  Is there a fix for this?
    Thanks,
    Rob

    From what I can tell, Illustrator CS2 does not export usable layer info. So apparently they didn't test if layer overrides would work correctly.
    It is kind of interesting that an Illustrator CS3/4 file has usable layer info in InDesign CS2, but you're correct that the layer overrides seem broken by any update to the file...

  • Saving layer visibility as views does not work - CS5 for Windows

    I've read about it multiple places, even watched a video where it supposedly works. But when I toggle layer visibility and save as a new view, it doesn't seem to work.
    Here's the video: http://layersmagazine.com/illustrator-different-views.html
    Any ideas?

    Layer Visibility Variables – A short introduction
    1. Open a new document and name Layer 1 "Cyan"
    2. Add three main layers and name them "Magenta", "Yellow" and "Black"
    3. On each layer draw a shape and colour it according to the Layer's name.
    4. Save the file as "My_first_Variables.ai"
    5. Target Layer "Cyan" (click the circle at the right hand of the Layer's name)
    6. At the bottom of the Variables Palette click the Make Visibility Dynamic button
    Now you've created your first Layers Visibility Variable. Continue with
    7. Target Layer "Magenta" and click the Make Visibility Dynamic button in the Variables Palette
    8. Target Layer "Yellow" and click the Make Visibility Dynamic button in the Variables Palette
    9. Target Layer "Black" and click the Make Visibility Dynamic button in the Variables Palette
    Done. You have created four Layers Visibility Variables. The next step is to define the Data Sets:
    1. Layers Palette: Show Layer "Cyan" and hide all other layers
    2. Variables Palette: Click the Capture Data Set button (the camera icon)
    3. Layers Palette: Show Layer "Magenta" and hide all other layers. Now in the Variables Palette the first Data Set becomes italic indicating that you can create an new Data Set. So click the Capture Data Set button to define Data Set 2.
    4. Layers Palette: Show Layer "Yellow" and hide all other layers
    5. Variables Palette: Click the Capture Data Set button to create Data Set 3
    6. Show Layer "Black" and hide all other layers. Click the Capture Data Set button to create Data Set 4
    7. Show all layers and click the Capture Data Set button to create Data Set 5
    Done. You have created five Data Sets. Just play around by toggling them in the Variables Palette (Next/Previous Data Set button or via Popup menu/Flyout menu) and see one feature among other things: The Variables Palette as a remote control of the Layers Palette. If you like, rename the Data Sets according to the Layers names for instance.
    Now it's time to create some simple Save/Export actions in order to Batch save/export Layers as single files. For example:
    Export as PSD
    1. Open any file
    2. Actions Palette: Create new action and name it "Export Layers as PSD"
    3. File > Export as PSD. Choose any destination folder, the desired options in the Photoshop Options dialog and hit Enter
    4. Click the Stop Recording button in the Actions Palette and disable the Show dialog icon (on the left hand of the action's name)
    Save as PDF
    1. Open any file
    2. Actions Palette: Create new action and name it "Save Layers as PDF"
    3. File > Save as PDF. Choose any destination folder, the desired options in the PDF Options dialog and hit Enter
    4. Click the Stop Recording button in the Actions Palette and disable the Show dialog icon (on the left hand of the action's name)
    Now start the Batch command:
    1. Switch to the original "My_first_Variables.ai"
    2. Actions Palette Flyout menu: Batch
    3. In the Play Area choose the Export Layers as PSD action
    4. Choose Data Sets as the source
    5. In the Destination Area enable the Override Action Export Commands option and choose any destination folder
    6. Choose an option for the File name and hit Enter to start the Batch
    Done. All four Layers plus the fifth Data Set have been exported as single Photoshop files. Repeat the Batch with the Save Layers as PDF action (don't forget to enable the Override Action Save Commands) and, of course, create your own actions, experiment with other file formats, figure out some harmless bugs especially in conjunction with the PDF compatible AI format when placing in InDesign.

  • Save layer visibility

    Hi guys,
    I have created several PDFs from an Illustrator file that I later edited with Acrobat to add text boxes that can be modified and saved in Adobe Reader.
    The PDFs are exported with Acrobat Layers which work fine. The only problem I have is that I need the users with Adobe Reader to be able to save layer visibility along with the text in the boxes I've created.
    Does anybody have a solution for this?

    If enabling the file so Reader users could save form field data doesn't do it then, it can't be done. Sorry.

  • Layer Visibility Override icon

    My maps team have just seen this icon and are wondering why it's appeared in the links icon.
    I looked in the help section to find out but couldn't find much about it, does anyone have a second to explain to me regarding this icon, or how to turn it on or off?
    hope to hear from you
    Brgds
    Alex

    Help > InDesign Help
    Search for
    layer PSD
    Look for topic
    To set layer visibility for placed PSD or PDF files
    That should help.
    The icon beside the link it telling you someone has adjusted the visibility of its layers by using the Object Layer Options dialog box.
    HTH
    -mt

  • Turn on layer visibility without exact name

    Hi all,
    This is my first post, and my first attempt to edit javascript for AI, so please bear with me! I am realtively good with actionscript, so I am trying my hand at this to streamline our image exporting process. I am using CS5 on a PC.
    We build our illustrator files to be a combination of different layers. Sometimes just one layer is exported at a time, and sometimes layers are combined to form a more complex image. We use layer names with instructions of what layers should be on and off.
    An example of the layer naming might look like this:
    03 (01-ON, 02-OFF)
    02 (01-OFF)
    01
    I have been able to figure out how to check if there is a note to turn a layer on, my question is how do I select the layer to turn on the visibility without using the exact name of the layer?
    In my example, when layer 3 gets exported, it should have layer "01" visible and layer "02 (01-OFF)" not visible. Since our files are always constructed differently (meaning 02 might not always have a note about 01 being off), I can't use the getByName option because I don't have an exact name to call the layer and turn the visibility on. The layers always start with 01, 02, 03, etc. Is there a way to use getByName and only have it look at the first 2 characters of the layer name?
    Thanks in advance for any help!

    Looking at the way you have set your files up you don't need to know any names while it is possible to do that I think you are just making more work for yourself… All you actually need do is get a ON/OFF list from each layer name as this is ordered…
    Edit OK I had a quick go to see if this worked… this appears to what I think you are wanting…
    #target illustrator
    exportLayerSets();
    function exportLayerSets() {
              var doc, lay, visList, i, j;
              doc = app.activeDocument;
              for ( i = 0; i < doc.layers.length; i++ ) {
                        lay = doc.layers[i];
                        lay.visible = true;
                        visList = lay.name.match( /ON|OFF/gi );
                        if ( visList != null ) {
                                  for ( j = 0; j < visList.length; j++ ) {
                                            if ( visList[j] == 'ON' ) {
                                                      doc.layers[ i + j + 1 ].visible = true;
                                            } else {
                                                      doc.layers[ i + j + 1 ].visible = false;
                        app.redraw();
                        alert( 'Is this working?' );
                        // EXPORT HERE…
                        lay.visible = false;

  • Setting default layer visibility in Acrobat 9 Standard

    I just installed Acrobat 9 Standard after getting a Win7 x64 computer.  My old computer had Acrobat 7.5 Pro.  One of the features I need is the ability to change the default visibility of layers created by a PDF export from another program.  When I view the layer properties in Acrobat, everything is dimmed out.  Is the ability to interact with the layer properties a feature I can turn on somewhere?

    Perhaps you will need Acrobat 9 Professional or Professional Extended.
    The Acrobat product comparison page indicates such for:
    Convert Autodesk® AutoCAD®, Microsoft Visio, and Microsoft Project files to PDF
    with one-button ease, preserving document layers in Visio and AutoCAD and object data in Visio*
    http://www.adobe.com/products/acrobat/matrix.html
    Be well...

Maybe you are looking for

  • BPM 7.3 - Adobe Lifecycle Designer 9.0

    Hi guys, I`m a PI developer and quite new to SAP BPM, only took part in the SAP training several months ago. Now my colleague installed a BPM 7.3 system and I`m trying to implement some processes starting with the sample of the training. At the momen

  • Why Whenever i watch with my apple tv the video lags

    Whenever I Use airplay for my Mac Book Pro So i can watch stuff on my apple tv the videos seem to lag and sometimes t dosent even play yet on my laptop theres no issues,can  someone explain why and what to do to fix it?

  • Oracle 8i, Oracle 9i AS, and J2EE Conformance. What for What ?

    I am very desappointed by the way Oracle is packaging and delivering successive versions of "Oracle JVM" suites, and the confusion they are creating with so called "Oracle 9i AS" ... As stated in documentations, 1- Oracle 8i release 3 (8.1.7) has a J

  • If I replace memory sticks, will this affect ongoing FCPX projects?

    Mid-year 2010 iMac with only 4GB memory (2x2). Computer running Extremely slow while editing, surfing web, everything! Nothing on the hardrive - already dumped everything onto external HD's months ago - but it just keeps getting slower. Today - patie

  • Error Message: You muyst have IE 5.5 or higher to use the Contact Center Manager Admin.

    Trying to download an application for work,  Tried on the IE 8, 10 & 11 with no add ons and in the compatibility mode and it will not work.  I continue to get the error message:  You must have IE 5.5 or higher to use the Contact Center Manager Admin.