Re-arrange 1D array?

Hello,
How can I re arrange the elements of a 1D array? e.g.   A B C D E F G H  --->  A B E F C D G H
Thanks!
Solved!
Go to Solution.

Here are two solutions that operate "in-place" with respect to the large array. Pick one (top or bottom).
LabVIEW Champion . Do more with less code and in less time .
Attachments:
SwapArraySections.png ‏24 KB

Similar Messages

  • Looking for a best way to arrange an array of Pop Up windows with repeating small imgs

    I would like to find out what is the best way to approach setting up various Pop Up windows.
    Here is my set up:
    I have 20+ product images which act as buttons and each brings a user to a unique section with the pop up window where a large photo of this product in use is displayed. In addition to this photo in the pop up window are additional product images (which were also used to create a photographed assembly)
    I figured that since I repeat my product images on the pop up windows and all of them are already used in the product page let me use them again in the pop up window. So I arranged the pop up windows in each separate labeled section in which I reused the product images buttons from the products page and put the UI Loader into each separate labeled section which loads the big assebly photo of that product in use.
    Here are my questions:
    - Should each product have a separate labeled section with a pop up window
         This way I can reuse a number of already existing product button images and load only the high resolution assemble image
          However I end up having a lot of sections labeled for each product
    - or it should be arranged as follows:
         var sourceVar:String;
         function my_btnDown(event:MouseEvent):void {
         sourceVar="product_popups/product1_popUp.swf;
         gotoAndPlay("productsLoader");//where "productsLoader" is the labeled secion of my UI Loader
         This way I end up with one labeled section but have to implement up to 5 buttons on each new Pop Up.  In a sence I make the size of a loading pop up .swf a bit bigger by not recycling the existing buttons, but my assumption that I will have an easier funcitonality of the site?
    I am not sure which way would be a better or more appropriate way to go?

    Léonie-
    You are totally correct regarding custom tags instead of keywords depending upon the instance.
    My main point is that Folders are mostly misused. Images need to be keyworded or tagged and linked to Albums, generally not put in folders. With digital images almost always folder organization of images is just wrong, because folders by definition locate an image in just a single category. And few images are ever just in a single category.
    Some usage of folders can be helpful. Folders of Projects (e.g. 2001 Projects, Client royalfrenchel, etc.) make sense to help collapse a large number of Projects. However note that even in that simple two-folder example images cannot be in both folders at the same time without splitting the folders up.
    IMO users should spend  time carefully establishing how to keyword/tag and aggressively avoid using folders as much as possible. Eg. in Arturo's instance "week5" should be a keyword, not a folder. That way if one wants to make a brochure and use 5-week-old puppy pix it is an easy search on "week5" to retrieve pix to create an Album to peruse for brochure purposes. If "week5" instead comprises multiple deeply nested Folders subset to every litter of every Dam the process of retrieving becomes a nightmare.
    I welcome further discussion of this important topic.
    -Allen

  • Arrangement of Array

    Hello All,
    I have a array as shown below Array one and have to arrage as shown below array 2
      Array one                          Array Two
    N1-Network-01                    N1-Network-01
    N1-Network-01                    N1-Network-02
    N1-Network-01                    N1-Network-03
    N1-Network-01                    N2-Network-01
    N1-Network-02                    N2-Network-02
    N1-Network-02
    N1-Network-03
    N2-Network-01
    N2-Network-01
    N2-Network-02
    Data in array one will keep on changing it wont be fixed... Sometimes N1-network-01 once will come sometimes 10 times. But in second it should come just for one. I have done bit coding which i am attaching you. 
    Thanks so much..
    Solved!
    Go to Solution.
    Attachments:
    Untitled 1.vi ‏11 KB

    I'd like to point out that the proposed solution wont work for all cases. Add another N1-Network-01 to the end of the array. The current solution won't add it. If you will always have the N1's grouped together (such as you sort the array first) then it won't be a problem. But if you aren't sorting the array you will run into an issue.
    See the output difference in the attached snippet
    CLA, LabVIEW Versions 2010-2013
    Attachments:
    array replace.png ‏40 KB

  • Arrays touching on front panel slows down VI.

    I have written a VI which downloads and displays 2 Arrays of Spacecraft Telemetry packets. If I arrange the arrays on the front panel so that they are touching (to look neater), the VI slows to a fraction of its original speed. Why is this? I wasted 3 days trying to understand what had gone wrong with my code, when it turned out to be a cosmetic problem. I can send you a copy of the VI along with instructions on how to reproduce the problem if you like.

    As with CapeFl, I also have been able to duplicate your problem (LV 6.0.2 on Win95). However, once the arrays are touching, if I select one and tell it to "move to front" by highlighting it, selecting the Reorder drop-down from the toolbar and select "move to front", the problem disappears. Evidently has something to do with 2 arrays on the same level overlapping, and trying to update. Therefore, you can have your front panel the way you want it.
    Mark

  • Strings adding zero's to arrays

    I have a program that arranges 4 arrays which consist of columns of 10
    data points from each iteration of the program. The final program puts
    these sets of 10 pts into one long column. I converted the array into a
    spreadsheet string. I used the match pattern to find and replace the new
    line characters and returns with tabs. Each column has 10 data
    points, then one zero separating them from the next 10 points. I've
    tried the same idea using backspace, form feed, space characters, etc,
    and I still have one row of zeros separating my data points. Does
    anyone have any idea what this character could be or how to fix this? I
    tried all of the characters in the manuals and none will get rid of this
    problem.
    Heather
    Sent vi
    a Deja.com http://www.deja.com/
    Before you buy.

    The poster who suggested the "zeroes" could be squares- signifying a
    non-printable character, may be on the right track.
    However, it occurs to me that you're using quite an unwieldy way of tackling
    a simple problem- and that the way you're using is unnecessarily platform
    dependent and complicated by the need to handle a return and a linefeed.
    I'm not quite sure how your arrays are arranged- as four discreet arrays?
    If it's four separate arrays with 10 points and you want one big array, you
    can use the "build array" function. If you pop up the right mouse button
    menu over this, you see an option to change an input from an element to an
    array. If you make a "build array" with four array inputs, what you get out
    is one long 1D array with the four sets of data appended one after the
    other. If you then want the output as one long column, a useful trick is to
    feed your new array into another "build array" node, this time with only a
    single "element" input. This promotes the 1D array to a single column 2D
    array, that you can then feed through a "transpose 2D array" and then into a
    "build spreadsheet string" to generate your output string without having to
    do all the search and replace operations. You may or may not need the
    "transpose 2D array", depending on how the file turns out- I tend to simply
    do things like this without thinking them through and then tweak them to
    make them work- which I find quicker than going through all the details in
    advance.
    wrote in message news:[email protected]...
    > I have a program that arranges 4 arrays which consist of columns of 10
    > data points from each iteration of the program. The final program puts
    > these sets of 10 pts into one long column. I converted the array into a
    > spreadsheet string. I used the match pattern to find and replace the new
    > line characters and returns with tabs. Each column has 10 data
    > points, then one zero separating them from the next 10 points. I've
    > tried the same idea using backspace, form feed, space characters, etc,
    > and I still have one row of zeros separating my data points. Does
    > anyone have any idea what this character could be or how to fix this? I
    > tried all of the characters in the manuals and none will get rid of this
    > problem.
    >
    > Heather
    >
    >
    > Sent via Deja.com http://www.deja.com/
    > Before you buy.

  • Oracle Spatial Performance with 10-20.000 users

    Does anyone have any experience when Oracle Spatial is used with say 20.000 concurrent users. I am not interested in MapViewer response time, but lets say there is:
    - an app using 800 different tables each having an sdo_geometry column
    - the app is configured with different tables visible on different view scales
    - let's say an average of 40-50 tables is visible at any given time
    - some tables will have only a few records, while other can hold millions.
    - there is no client side caching
    - clients can zoom in/out pan.
    Anwers I am interested in:
    - What sort of server would be required
    - How can Oracle serve all that data (each Refresh renders the map and retrieves the data over the wire as there is no client side caching).
    - What sort of network infrastructure would be required.
    - Can clients connect to different servers and hence use load balancing or does Oracle have an automatic mechanism for that?
    Thanks in advance,
    Patrick

    Patrick, et al.
    There are lots of things one can do to improve performance in mapping environments because of a lot of the visualisation is based on "background" or read-only data. Here are some "tips":
    1. Spatially sort read-only data.
    This tip makes sure that data that is close to each other in space are next to each other on disk! Dan gave a good suggestion when he referenced Chapter 14, "Reorganize the Table Data to Minimize I/O" pp 580- 582, Pro Oracle Spatial. But just as easily one can create a table as select ... where sdo_filter() where the filtering object is an optimized rectangle across the whole of the dataset. (This is quite quick on 10g and above but much slower on earlier releases.)
    When implementing this make sure that the created table is created such that its blocks are next to each other in the tablespace. (Consider tablespace defragmentation beforehand.) Also, if the data is READ ONLY set the PCTFREE to 0 in order to pack the data up into as small a number of blocks as possible.
    2. Generalise data
    Rendering spatial data can be expensive where the data is geometrically detailed (many vertices) esp where the data is being visualised at smaller scales than it was captured at. So, if your "zoom thresholds" allow 1:10,000 data to be used at 1:100,000 then you are going to have problems. Consider pre-generalising the data (see sdo_util.simplify) before deployment. You can add multiple columns to your base table to hold this data. Be careful with polygon data because generalising polygons that share boundaries will create gaps etc as the data is more generalised. Often it is better to export the data to a GIS which can maintain the boundary relationships when generalising (say via topological relationships).
    Oracle's MapViewer has excellent on-the-fly generalisation but here one needs to be careful. Application tier caching (cf Bryan's comments) can help here a lot.
    3. Don't draw data that is sub-pixel.
    As one zooms out objects become smaller and smaller until they reach a point where the whole object can be drawn within a single pixel. If you have control over your map visualisation application you might want to consider setting the SDO_FILTER parameter "min_resolution" flag dynamically so that its value is the same as the number of meters / pixel (eg min_resolution=10). If this is set Oracle Spatial will only include spatial objects in the returned search set if one side of a geometry's MBR is greater than or equal to this value. Thus any geometries smaller than a pixel will not be returned. Very useful for large scale data being drawn at small scales and for which no selection (eg identify) is required. With Oracle MapViewer this behaviour can be set via the generalized_pixels parameter.
    3. SDO_TOLERANCE, Clean Data
    If you are querying data other than via MBR (eg find all land parcels that touch each other) then make sure that your sdo_tolerance values are appropriate. I have seen sites where data captured to 1cm had an sdo_tolerance value set to a millionth of a meter!
    A corollary to this is make sure that all your data passes validation at the chosen sdo_tolerance value before deploying to visualisation. Run sdo_geom.validate_geometry()/validate_layer()...
    4. Rtree Spatial Indexing
    At 10g and above lots of great work went in to the RTree indexing. So, make sure you are using RTrees and not QuadTrees. Also, many GIS applications create sub-optimal RTrees by not using the additional parameters available at 10g and above.
    4.1 If your table/column sdo_geometry data contains only points, lines or polygons then let the RTree indexer know (via layer_gtype) as it can implement certain optimizations based on this knowledge.
    4.2 With 10g you can set the RTree's spatial index data block use via sdo_pct_free. Consider setting this parameter to 0 if the table/column sdo_geometry data is read only.
    4.3 If a table/column is in high demand (eg it is the most commonly used table in all visualisations) you can consider loading (a part of) the RTree index into memory. Now, with the RTree indexing, the sdo_non_leaf_tbl=true parameter will split the RTree index into its leaf (contains actual rowid reference) and non-leaf (the tree built on the leaves) components. Most RTrees are built without this so only the MDRT*** secondary tables are built. But if sdo_non_leaf_tbl is set to true you will see the creation of an additional MDNT*** secondary table (for the non_leaf part of the rtree index). Now, if appropriate, the non_leaf table can be loaded into memory via the following:
    ALTER TABLE MDNT*** STORAGE(BUFFER_AREA KEEP);
    This is NOT a general panacea for all performance problems. One should investigate other options before embarking on this (cf Tom Kyte's books such as Expert Oracle Database Architecture, 9i and 10g Programming Techniques and Solutions.)
    4.4 Don't forget to check your spatial index data quality regularly. Because many sites use GIS package GUI tools to create tables, load data and index them, there is a real tendency to not check what they have done or regularly monitor the objects. Check the SDO_RTREE_QUALITY column in USER_SDO_INDEX_METADATA and look for indexes with an SDO_RTREE_QUALITY setting that is > 2. If > 2 consider rebuilding or recreating the index.
    5. The rendering engine.
    Whatever rendering engine one uses make sure you try and understand fully what it can and cannot do. AutoDesk's MapGuide is an excellent product but I have seen it simply cache table/column data and never dynamically access it. Also, I have been at one site which was running Deegree and MapViewer and MapViewer was so fast in comparison to Deegree that I was called in to find out why. I discovered that Deegree was using SDO_RELATE(... ANYINTERACT ...) for all MBR queries while MapViewer was using SDO_FILTER. Just this difference was causing some queries to perform at < 10% of the speed of MapViewer!!!!
    6. Consider "denormalising" data
    There is an old adage in databases that is "normalise for edit, denormalise for performance". When we load spatial data we often get it from suppliers in a fairly flat or normalised form. In consort with spatial sorting, consider denormalising the data via aggregations based on a rendering attribute and some sort of spatial unit. For example, if you have 1 million points stored as single points in SDO_GEOMETRY.SDO_POINT which you want to render by a single attribute containing 20 values, consider aggregating the data using this attribute AND some sort of spatial BUCKET or BIN. So, consider using SDO_AGGR_UNION coupled with Spatial Analysis and Mining package functions to GROUP the data BY <<column_name>> and a set of spatial extents.
    6. Tablespace use
    Finally, talk to your DBA in order to find out how the oracle database's physical and logical storage is organised. Is a SAN being used or SAME arranged disk arrays? Knowing this you can organise your spatial data and indexes using more effective and efficient methods that will ensure greater scalability.
    7. Network fetch
    If your rendering engine (app server) and database are on separate machines you need to investigate what sort of fetch sizes are being used when returning data from queries to the middle-tier. Fetch sizes for attribute only data rows and rows containing spatial data can be, and normally are, radically different. Accepting the default settings for these sizes could be killing you (as could the sort_area_size of the Oracle session the application server has created on the database). For example I have been informed that MapInfo Pro uses a fixed value of 25 records per fetch when communicating with Oracle. I have done some testing to show that this value can be too small for certain types of spatial data. SQL Developer's GeoRaptor uses 100 which is generally better (but this one can modify this). Most programmers accept defaults for network properties when programming in ADO/ODBC/OLEDB/JDBC: just be careful as to what is being set here. (This is one of the great strengths of ArcSDE: its TCP/IP network transport is well written, tuneable and very efficient.)
    8. Physical Format
    Finally, while Oracle's excellent MapViewer requires data its spatial data to be in Oracle, other commercial rendering engines do not. So, consider using alternate, physical file formats that are more optimal for your rendering engine. For example, Google Earth Enterprise "compiles" all the source data into an optimal format which the server then serves to Google Earth Enterprise clients. Similarly, a shapefile on local disk to the application server (with spatial indexing) may be faster that storing the data back in Oracle on a database server that is being shared with other business databases (eg Oracle financials). If you don't like this approach and want to use Oracle only consider using a dedicated Oracle XE on the application server for the data that is read only and used in most of your generated maps eg contour or drainage data.
    Just some things to think about.
    regards
    Simon

  • Arrange Array in ascending order by date

    Kindly help me sort out the order by problem.
    I have a date array which goes like;
    12/3/2012
    11/3/2012
    12/5/2012
    12/8/2012
    12/6/2012
    12/12/2012
    12/10/2012
    12/17/2012
    I need to arrange it in ascending order, like
    11/3/2012
    12/3/2012
    12/5/2012
    12/6/2012
    12/8/2012
    12/10/2012
    12/12/2012
    12/17/2012
    Please help.
    Thank you in advance.
    Regards
    Grugh Mike
    Success is Everything !!

    Grugh_Mike wrote:
    is'nt there any easier method to sort a time array ?
    It's a lot easier than trying to manipulate the strring into yyyy/dd/mm format and sorting alphabetically.
    Bill
    (Mid-Level minion.)
    My support system ensures that I don't look totally incompetent.
    Proud to say that I've progressed beyond knowing just enough to be dangerous. I now know enough to know that I have no clue about anything at all.

  • Please help me arrange my hard drive setup, testing out different Raid arrays.

    Hi folks! If I could bother you for your time to help me figure out what the best options are for my computer setup that would be much appreciated!! I'm editing mostly RED footage so 5K and 4K files.
    Here's what my computer build is right now:
    Asus Rampage IV Extreme
    i7-3930K CPU (OC'd to 4.4ghz)
    64GB ram
    GTX 680 video card (2GB model)
    Windows 7 Pro
    Mostly Premiere CS6 and After Effects
    Here's the fun part and the part that I'm still baffled by regardless of how many videos and searches I've done online, what to do with my hard drives!?
    Right now I have my Mobo setup in Raid mode with these plugged in to the motherboard;
    2 x 250gb Samsung pro SSD's on 6gb/s ports (Raid 0) (Windows 7 OS)
    2 x 300gb WD Velociraptors 3gb/s ports (Raid 0) (empty)
    3 Ware 9750-8i Raid controller +
    8 x 3TB Seagate Barracuda drives ready to rock and roll.
    Now based on everything I've read, I'm leaning towards setting up 4 x 3TB drives in Raid0 for my footage (making constant backups with synctoy onto an external Drobo)
    4 x 3TB drives in Raid0 for exporting footage. (with continuous backups)
    That leaves me wondering where's the best place to setup Media cache, cache files and project files and anything else. Also I've left the OS pagefile on the SSD's but wondering if I should set that up somewhere else?
    Using Crystal Disk mark, I'm getting these results so far:
    OS on Samsung Pro SSD's in Raid0
    The 4 x 3TB drives in various Raid setups:
    Raid0
    Raid5
    Raid10
    Velociraptors in Raid0
    All this is due to many months of recent work on a computer build that would get bogged down and editing became painfully slow. I'm trying out a proper dedicated Raid card instead of just 2 drives in Raid0 off the motherboard hoping this will make a big difference.
    Any expert advice on here would be greatly appreciated!!!!

    Let's start with the easy part:
    C: SSD for OS, programs & pagefile
    D: 2 x Veliciraptor in raid0 for media cache and previews
    With 8 disks available on the 3Ware controller you can go many different directions and they depend on your workflow. Let me give two extreme examples and then you may be pointed in the right correction for your editing practice.
    Workflow consists of quick and dirty editing, usually one day or less and multiple export formats each day (example Vimeo, YouTube, BDR, DVD and web), or
    Workflow consists of extensive editing, usually a week or longer and exports to a few formats at the end of the editing (example BDR and DVD only).
    If your typical workflow looks like 1, your idea of two 4x raid0 arrays can work, because the load is rather nicely distributed over the two arrays. Of course the drawback is that there is no redundancy so you depend very much on the backups to your Drobo and restoring data after data loss can be time consuming, coming from the Drobo.
    If your workflow looks more like 2, then you can consider one 7x raid5 array for projects and media and a single drive for exports. That means that your raid5 will be noticeably faster then either of the 4x raid0 arrays you considered and offer redundancy as well. As a rough rule of thumb, a 4x disk raid0 will be almost 4 times faster than a single disk, a 7x raid5 will be around 5 - 5.5 times faster than a single disk. You profit from the extra speed during the whole editing week or longer.
    The export to a single disk may be somewhat slower, but how long does it take to write say 25 GB to a single disk? Around 160 seconds. If you use a hot swappable drive cage, you can even use multiple export disks, say one for Client A, another one for Client B, etc. In your initial idea of a 4x raid0 that time may be 40 seconds, so you gain around 2 minutes on the export, but lose that in the whole editing week.
    Just my $ 0.02

  • How to make arrays or repeat objects in circle?

    Hello,
    1 - How to make arrays without copying and pasting? Fig-1
    2 - how to create objects repeated in circles? Fig-2
    Regards and Thanks

    1) Patterns
    2) One option is Scripting (or Actions).
    http://forums.adobe.com/message/3472806#3472806
    Edit: That was only for text layers, you could give this a try:
    // xonverts to smart object, copies and rotates a layer;
    // for photoshop cs5 on mac;
    // 2011; use it at your own risk;
    #target photoshop
    ////// filter for checking if entry is numeric and positive, thanks to xbytor //////
    posNumberKeystrokeFilter = function() {
              this.text = this.text.replace(",", ".");
              this.text = this.text.replace("-", "");
              if (this.text.match(/[^\-\.\d]/)) {
                        this.text = this.text.replace(/[^\-\.\d]/g, '');
    posNumberKeystrokeFilter2 = function() {
              this.text = this.text.replace(",", "");
              this.text = this.text.replace("-", "");
              this.text = this.text.replace(".", "");
              if (this.text.match(/[^\-\.\d]/)) {
                        this.text = this.text.replace(/[^\-\.\d]/g, '');
              if (this.text == "") {this.text = "2"}
              if (this.text == "1") {this.text = "2"}
    var theCheck = photoshopCheck();
    if (theCheck == true) {
    // do the operations;
    var myDocument = app.activeDocument;
    var myResolution = myDocument.resolution;
    var originalUnits = app.preferences.rulerUnits;
    app.preferences.rulerUnits = Units.PIXELS;
    var dlg = new Window('dialog', "set circle-radius for arrangement", [500,300,840,450]);
    // field for radius;
    dlg.radius = dlg.add('panel', [15,17,162,67], 'inner radius');
    dlg.radius.number = dlg.radius.add('edittext', [12,12,60,32], "30", {multiline:false});
    dlg.radius.numberText = dlg.radius.add('statictext', [65,14,320,32], "mm radius ", {multiline:false});
    dlg.radius.number.onChange = posNumberKeystrokeFilter;
    dlg.radius.number.active = true;
    // field for number;
    dlg.number = dlg.add('panel', [172,17,325,67], 'number of copies');
    dlg.number.value = dlg.number.add('edittext', [12,12,60,32], "30", {multiline:false});
    dlg.number.value.onChange = posNumberKeystrokeFilter2;
    dlg.number.value.text = "12";
    // buttons for ok, and cancel;
    dlg.buttons = dlg.add('panel', [15,80,325,130], '');
    dlg.buttons.buildBtn = dlg.buttons.add('button', [13,13,145,35], 'OK', {name:'ok'});
    dlg.buttons.cancelBtn = dlg.buttons.add('button', [155,13,290,35], 'Cancel', {name:'cancel'});
    // show the dialog;
    dlg.center();
    var myReturn = dlg.show ();
    if (myReturn == true) {
    // the layer;
              var theLayer = smartify(myDocument.activeLayer);
              app.togglePalettes();
    // get layer;
              var theName = myDocument.activeLayer.name;
              var theBounds = theLayer.bounds;
              var theWidth = theBounds[2] - theBounds[0];
              var theHeight = theBounds[3] - theBounds[1];
              var theOriginal = myDocument.activeLayer;
              var theHorCenter = (theBounds[0] + ((theBounds[2] - theBounds[0])/2));
              var theVerCenter = (theBounds[1] + ((theBounds[3] - theBounds[1])/2));
    // create layerset;
              var myLayerSet = myDocument.layerSets.add();
              theOriginal.visible = false;
              myLayerSet.name = theName + "_rotation";
    // create copies;
              var theNumber = dlg.number.value.text;
              var theLayers = new Array;
              for (var o = 0; o < theNumber; o++) {
                        var theCopy = theLayer.duplicate(myLayerSet, ElementPlacement.PLACEATBEGINNING);
                        theLayers.push(theCopy);
    // calculate the radius in pixels;
              var theRadius = Number(dlg.radius.number.text) / 10 * myResolution / 2.54;
              myDocument.selection.deselect();
    // get the angle;
              theAngle = 360 / theNumber;
    // work through the layers;
              for (var d = 0; d < theNumber; d++) {
                        var thisAngle = theAngle * d ;
                        var theLayer = theLayers[d];
    // determine the offset for outer or inner radius;
                        var theMeasure = theRadius + theHeight/2;
    //                    var theMeasure = theRadius + theWidth/2;
                        var theHorTarget = Math.cos(radiansOf(thisAngle)) * theMeasure;
                        var theVerTarget = Math.sin(radiansOf(thisAngle)) * theMeasure;
    // do the transformations;
                        rotateAndMove(myDocument, theLayer, thisAngle + 90, - theHorCenter + theHorTarget + (myDocument.width / 2), - theVerCenter + theVerTarget + (myDocument.height / 2));
    // reset;
    app.preferences.rulerUnits = originalUnits;
    app.togglePalettes()
    ////// function to determine if open document is eligible for operations //////
    function photoshopCheck () {
    var checksOut = true;
    if (app.documents.length == 0) {
              alert ("no open document");
              checksOut = false
    else {
              if (app.activeDocument.activeLayer.isBackgroundLayer == true) {
                        alert ("please select a non background layer");
                        checksOut = false
              else {}
    return checksOut
    ////// function to smartify if not //////
    function smartify (theLayer) {
    // make layers smart objects if they are not already;
              if (theLayer.kind != LayerKind.SMARTOBJECT) {
                        myDocument.activeLayer = theLayer;
                        var id557 = charIDToTypeID( "slct" );
                        var desc108 = new ActionDescriptor();
                        var id558 = charIDToTypeID( "null" );
                        var ref77 = new ActionReference();
                        var id559 = charIDToTypeID( "Mn  " );
                        var id560 = charIDToTypeID( "MnIt" );
                        var id561 = stringIDToTypeID( "newPlacedLayer" );
                        ref77.putEnumerated( id559, id560, id561 );
                        desc108.putReference( id558, ref77 );
                        executeAction( id557, desc108, DialogModes.NO );
                        return myDocument.activeLayer
              else {return theLayer}
    ////// radians //////
    function radiansOf (theAngle) {
              return theAngle * Math.PI / 180
    ////// rotate and move //////
    function rotateAndMove (myDocument, theLayer, thisAngle, horizontalOffset, verticalOffset) {
    // do the transformations;
    myDocument.activeLayer = theLayer;
    // =======================================================
    var idTrnf = charIDToTypeID( "Trnf" );
        var desc3 = new ActionDescriptor();
        var idFTcs = charIDToTypeID( "FTcs" );
        var idQCSt = charIDToTypeID( "QCSt" );
        var idQcsa = charIDToTypeID( "Qcsa" );
        desc3.putEnumerated( idFTcs, idQCSt, idQcsa );
        var idOfst = charIDToTypeID( "Ofst" );
            var desc4 = new ActionDescriptor();
            var idHrzn = charIDToTypeID( "Hrzn" );
            var idPxl = charIDToTypeID( "#Pxl" );
            desc4.putUnitDouble( idHrzn, idPxl, horizontalOffset );
            var idVrtc = charIDToTypeID( "Vrtc" );
            var idPxl = charIDToTypeID( "#Pxl" );
            desc4.putUnitDouble( idVrtc, idPxl, verticalOffset );
        var idOfst = charIDToTypeID( "Ofst" );
        desc3.putObject( idOfst, idOfst, desc4 );
        var idAngl = charIDToTypeID( "Angl" );
        var idAng = charIDToTypeID( "#Ang" );
        desc3.putUnitDouble( idAngl, idAng, Number(thisAngle) );
    executeAction( idTrnf, desc3, DialogModes.NO );

  • About combing two array into one

    Hi all,
      I post a questiona bout converting an array of integer into char (byte) array and I got a solution already http://forums.ni.com/t5/LabVIEW/how-to-display-char-code-properly/m-p/2596087#M780368
    However, I enouther another problem while dealing with an array of  U16 type. I would like to extract the high and low byte from numbers (U16) stored in array. I extract the high and low byte for each U16 number and convert them as char, concatenate them to a string. Repeat this process for each element in the array so to get a big string with each element is a char for high and low byte. My code is enclosed as follows
    It works fine but I am concerning the speed. Is that any other way to do it fast and don't use loop (in real case, I will deal with pretty big array many times, efficiency is a problem). Note that the high and low bytes array extracted from the original array with the module Split number.vi, but how can I combine these two array in one code with data arranged as high-low-high-low ... ? Thanks.
    Solved!
    Go to Solution.

    PKIM wrote:
    However, I enouther another problem while dealing with an array of  U16 type. I would like to extract the high and low byte from numbers (U16) stored in array. I extract the high and low byte for each U16 number and convert them as char, concatenate them to a string. Repeat this process for each element in the array so to get a big string with each element is a char for high and low byte. My code is enclosed as follows
    It works fine but I am concerning the speed. Is that any other way to do it fast and don't use loop (in real case, I will deal with pretty big array many times, efficiency is a problem). Note that the high and low bytes array extracted from the original array with the module Split number.vi, but how can I combine these two array in one code with data arranged as high-low-high-low ... ? Thanks.
    You need to be more clear.
    Looking at the code, you are dealing with I16, not U16. Also your index array primitives could be replaced by autoindexing. Your use of the feedback node only makes sense if you want to append strings forever with stale data, thus growing data structures without limits. If you only want to convert the current data, remove the feedback mode and use a "concatenate strings" with a single input. A for loop is one of the most efficient data structures and using it is not a problem. One way or another the code needs top oerate on all data.
    All that said, I agree with Tim that most likely all you need to do is insert a typecast after the "to I16" and eliminate all other code.
    LabVIEW Champion . Do more with less code and in less time .

  • Help creating an external array for a scoreboard

    I'm trying to create an array in an external file that will recieve and arrange scores sent from Quiz.fla upon clicking the submit score button.  I also want another fla file to be able to reference this external array and pull the top 15 scores from it, and then display those scores on a scrolling banner.  I want the banner to be able to update dynamically (I assume reloading the banner fla each time it reaches the end of its cycle, having the first frame load the external array on an onClipEvent action would accomplish this), that way it will update while remaining open.  The main reason I need two separate files for the quiz and the score banner is they will be displayed on two different monitors.  What would be the most efficient way of accomplishing this?  I know a little about actionscript but I don't have much experience with calling data and functions from external fla or as files (the array and the function designating how the data will be arranged within said array are going to be in a separate .as file).
    I'm currently working in AS2, since I've had almost no experience with AS3.

    So if I wanted to avoid using a server, I'd basically have to set up the
    array storing the high scores in an external .as or .swf file which would
    then be called into the quiz game to store the scores, and then called by
    the banner each time it hits frame 1 to refresh the numbers?  But then that
    would run into the problem of a shared object being used by two different
    clients I guess?  Servers setup and accessing confuses the hell out of me
    right now, so I'm trying not to make things to hellish for myself...
    Would there be a way to create 2 external database files within the folder
    holding the .swf files to somehow get around the issue of one sharedobject
    being accessed by two clients?

  • How to get same vales in a array continously

    Hii
       i  have attached one vi in that repeated value in a array have to arrange continously..how to do it ?
    Attachments:
    Array sorting.vi ‏7 KB

    You want the array to be sorted like this?
    Use the 'Sort 1D array' function in the array palette.
    Message Edited by Troy K on 03-07-2008 04:10 PM
    Troy
    CLDEach snowflake in an avalanche pleads not guilty. - Stanislaw J. Lec
    I haven't failed, I've found 10,000 ways that don't work - Thomas Edison
    Beware of the man who won't be bothered with details. - William Feather
    The greatest of faults is to be conscious of none. - Thomas Carlyle
    Attachments:
    arraysort.png ‏24 KB

  • What is the best way of dealing with an "implicit coercion" of an array to a sprite?

    Hello everyone!
         With continued help from this forum I am getting closer to having a working program. I look forward to being able to help others like myself once I finish learning the AS3 ropes.
         I will briefly explain what I am trying to achieve and then follow it up with my question.
    Background
         I have created a 12 x 9 random number grid that populates each cell with a corresponding image based on each cell's numeric value. I have also created a shuffle button that randomizes the numbers in the grid. The problem I am running into is getting my button-click event to clear the current images off the grid in order to assign new ones (i.e. deleting the display stack objects in order to place news ones in the same locations).
    Question
         My question is this: what is the best way to handle an implicit coercion from an array to a sprite? I have pasted my entire code below so that you can see how the functions are supposed to work together. My trouble apparently lies with not being able to use an array value with a sprite (the sprite represents the actual arrangement of the grid on the display stack while the array starts out as a number than gets assigned an image which should be passed to the sprite).
    ============================================================================
    package 
    import flash.display.MovieClip;
    import flash.display.DisplayObject;
    import flash.events.MouseEvent;
    import flash.display.Sprite;
    import flash.text.TextField;
    import flash.text.TextFormat;
    import flash.utils.getDefinitionByName;
    public class Blanko extends MovieClip
          // Holds 12*9 grid of cells.
          var grid:Sprite;
          // Holds the shuffle button.
          var shuffleButton:Sprite;
          // Equals 12 columns, 9 rows.
          var cols:int = 12;
          var rows:int = 9;
          // Equals number of cells in grid (108).
          var cells:int = cols * rows;
          // Sets cell width and height to 40 pixels.
          var cellW:int = 40;
          var cellH:int = 40;
          // Holds 108 cell images.
          var imageArray:Array = [];
          // Holds 108 numerical values for the cells in the grid.
          var cellNumbers:Array = [];
          // Constructor calls "generateGrid" and "makeShuffleButton" functions.
          public function Blanko()
               generateGrid();
               makeShuffleButton();
      // Creates and displays the 12*9 grid.
      private function generateGrid():void
           grid = new Sprite;
           var i:int = 0;
           for (i = 0; i < cells; i++)
                cellNumbers.push(i % 9 + 1);
           trace("Before shuffle: ", cellNumbers);
           shuffleCells(cellNumbers);
           trace("After shuffle: ", cellNumbers);
           var _cell:Sprite;
           for (i = 0; i < cells; i++)
                // This next line is where the implicit coercion occurs. "_cell" is a sprite that tries
                   to temporarily equal an array value.
                _cell = drawCells(cellNumbers[i]);
                _cell.x = (i % cols) * cellW;
                _cell.y = (i / cols) * cellH;
                grid.addChild(_cell);
      // Creates a "shuffle" button and adds an on-click mouse event.
      private function makeShuffleButton():void
           var _label:TextField = new TextField();
           _label.autoSize = "center";
           TextField(_label).multiline = TextField(_label).wordWrap = false;
           TextField(_label).defaultTextFormat = new TextFormat("Arial", 11, 0xFFFFFF, "bold");
           _label.text = "SHUFFLE";
           _label.x = 4;
           _label.y = 2;
           shuffleButton = new Sprite();
           shuffleButton.graphics.beginFill(0x484848);
           shuffleButton.graphics.drawRoundRect(0, 0, _label.width + _label.x * 2, _label.height +
                                                _label.y * 2, 10);
           shuffleButton.addChild(_label);
           shuffleButton.buttonMode = shuffleButton.useHandCursor = true;
           shuffleButton.mouseChildren = false;
           shuffleButton.x = grid.x + 30 + grid.width - shuffleButton.width;
           shuffleButton.y = grid.y + grid.height + 10;
           this.addChild(shuffleButton);
           shuffleButton.addEventListener(MouseEvent.CLICK, onShuffleButtonClick);
      // Clears cell images, shuffles their numbers and then assigns them new images.
      private function onShuffleButtonClick():void
       eraseCells();
       shuffleCells(cellNumbers);
       trace("After shuffle: ", cellNumbers);
       for (var i:int = 0; i < cells; i++)
        drawCells(cellNumbers[i]);
      // Removes any existing cell images from the display stack.
      private function eraseCells(): void
       while (imageArray.numChildren > 0)
        imageArray.removeChildAt(0);
      // Shuffles cell numbers (randomizes array).
      private function shuffleCells(_array:Array):void
       var _number:int = 0;
       var _a:int = 0;
       var _b:int = 0;
       var _rand:int = 0;
       for (var i:int = _array.length - 1; i > 0; i--)
        _rand = Math.random() * (i - 1);
        _a = _array[i];
        _b = _array[_rand];
        _array[i] = _b;
        _array[_rand] = _a;
      // Retrieves and assigns a custom image to a cell based on its numerical value.
      private function drawCells(_numeral:int):Array
       var _classRef:Class = Class(getDefinitionByName("skin" + _numeral));
       _classRef.x = 30;
       imageArray.push(_classRef);
       imageArray.addChild(_classRef);
       return imageArray;
    ===========================================================================
         Any help with this is greatly appreciated. Thanks!

    Rothrock,
         Thank you for the reply. Let me address a few things here in the hopes of allowing you (and others) to better understand my reasoning for doing things in this manner (admittedly, there is probably a much better/easier approach to what I am trying to accomplish which is one of the things I hope to learn/discover from these posts).
         The elements inside my "imageArray" are all individual graphics that I had imported, changed their type to movie clips using .Sprite as their base class (instead of .MovieClip) and then saved as classes. The reason I did this was because the classes could then be referenced via "getDefinitionByName" by each cell value that was being passed to it. In this grid every number from 1 to 9 appears randomly 12 times each (making the 108 cells which populate the grid). I did not, at the time (nor do I now), know of a better method to implement for making sure that each image appears in the cell that has the corresponding value (i.e. every time a cell has the value of 8 then the custom graphic/class "skin8" will be assigned to it so that the viewer will be able to see a more aesthetically pleasing numerical representation, that is to say a slightly more fancy looking number with a picture behind it). I was advised to store these images in an array so that I could destroy them when I reshuffle the grid in order to make room for the new images (but I probably messed up the instructions).
         If the "drawCell" function only returns a sprite rather than the image array itself, doesn't that mean that my "eraseCells" function won't be able to delete the array's children as their values weren't first returned to the global variable which my erasing function is accessing?
         As for the function name "drawCells," you have to keep in mind that a) my program has been redesigned in stages as I add new functionality/remove old functionality (such as removing text labels and formatting which were originally in this function) and b) that my program is called "Blanko."
         I will try and attach an Illustrator exported JPG file that contains the image I am using as the class "skin7" just to give you an example of what I'm trying to use as labels (although it won't let me insert it here in this post, so I will try it in the next post).
    Thank you for your help!

  • How to populate multi-cluster arrays using matlab code?

    Hi,
    I have an array of clusters containing two 'Double' elements in each cluster. I am looking for a method to populate this array using MATLAB code. I need around 1000 clusters in the array, so populating it using the front panel is not practical. There is also some calculation involved in deciding the value in each element. If there is an example or a method to do this, please point me in the right direction.
    Thanks

    altenbach wrote:
    Can you attach a typical file so we know that the structure is? It is easy to convert from any data structure to any other data structure. You could even read it as a 1D string array and parse each line into a cluster, for example. It all depends on how the fil is arranged. You could also read the file as a flat string and chop it up into the desired structure later.
    I have attached the .vi file. I need to convert the spreadsheet to an array of clusters, thats where I'm getting stuck. (The vi is an example from help libraries)
    That is the part where I need to change so that I can use a spreadsheet.
    Attachments:
    Buffered counter.vi ‏52 KB

  • Sort Array of References by Label-Name

    I am developing on an DSC application with shared variables and alarming and events with a hugh amount of variables. Each variable is displayed on the front panel within tab controls. To reduce time and effort when expanding the variables I would like to arrange my references from the front panel by the label name. I've attached a part of the intialization of the front panel. There I have to manually expand each variable in the shared variable library, where the name of the variable has to be in the same order as the definition in the cluster.
    My approach was to build an array of references of digital type and sort the references by the label name. Because the shared variables have the same name as the controls they would be in the same order and I also could dislaim the cluster of references.
    maybe somebody can give my an hint.
    Kind Regards,
    Joachim
    Solved!
    Go to Solution.
    Attachments:
    fp.jpg ‏982 KB

    Hi Joachim,
    use the standard "sort an array of cluster" approach!
    Put the control label and the reference (in this order!) in a cluster, make an array of such clusters and sort the array. It will sort by the label and you can unbundle the reference in sorted order...
    Best regards,
    GerdW
    CLAD, using 2009SP1 + LV2011SP1 + LV2014SP1 on WinXP+Win7+cRIO
    Kudos are welcome

Maybe you are looking for

  • How to get the duplicate rows in dynamically generate data table [list items collection] and send emails in sharepoint2010

    Hi, i have share point list like  below ID   name AdminEmail Useremail   URl   DueDate   UploadSatus 1    ppp     [email protected]  [email protected]    url  some date    uploaded 2    yyy       [email protected]   [email protected]   url somedate  

  • How to get rid of it?

    This software was installed without my permission when running the Linksys router setup when installing a new router. My network functioned perfectly fine before this awful software hacked into my system. Now it wants me to re-setup my system using t

  • Contracts in Classic Scenario

    In Classic Scenario SRM 5.0 with ECC 6.0, how can I create an ECC Contract with a requirement from the Purchaser's Worklist ? Do I use the Global Outline Agreement? If so, what are the config steps ? Full points assured. Thx. Raja

  • Exporting form with referenced objects

    Hi! Is there any way a (pdf-based) form can be exported with referenced resources (e.g images referenced via URL) included? For example when using Live Cycle Designer ES outside SAP a form can be exported to an LCA archive which contains all images a

  • Port Forwarding 0-65534 Myth or Defect?

    I have a WRT54GC Router Version 1, The router web administration form will not allow any ports above 32769 to become opened. What happends is if I attemp any port number 32769 and above "which is the half way point between 0 and 65534.  The router ki