The Origin Forum
File Exchange
Try Origin for Free
The Origin Forum
Home | Profile | Register | Active Topics | Members | Search | FAQ | Send File to Tech support
 All Forums
 Origin Forum for Programming
 LabTalk Forum
 From many wks to just one

Note: You must be registered in order to post a reply.
To register, click here. Registration is FREE!

Screensize:
UserName:
Password:
Anti-Spam Code:
Format Mode:
Format: BoldItalicizedUnderlineStrikethrough Align LeftCenteredAlign Right Horizontal Rule Insert HyperlinkUpload FileInsert Image Insert CodeInsert QuoteInsert List
   
Message:

* HTML is OFF
* Forum Code is ON
Smilies
Smile [:)] Big Smile [:D] Cool [8D] Blush [:I]
Tongue [:P] Evil [):] Wink [;)] Clown [:o)]
Black Eye [B)] Eight Ball [8] Frown [:(] Shy [8)]
Shocked [:0] Angry [:(!] Dead [xx(] Sleepy [|)]
Kisses [:X] Approve [^] Disapprove [V] Question [?]

 
Check here to subscribe to this topic.
   

T O P I C    R E V I E W
senigalliese Posted - 11/19/2005 : 07:47:06 AM
Origin Version (Select Help-->About Origin): 7.5
Operating System: XP

Dear members of the forum, here I am again for a piece of information/help. I have many worksheets with three columns of the type XYZ. My final target is to plot a contour plot put of a matrix obtained from a single worksheet that generate manually (so far) simply copying and pasting the three XYZ columns of each worksheet to the single one that I will convert in matrix. The reason is that every single woksheet has a different value of Z.
How can I perform this action with labtalk?
6   L A T E S T    R E P L I E S    (Newest First)
senigalliese Posted - 11/22/2005 : 10:35:29 AM
It does indeed!

Your help is most valuable, thanks Mike!
Mike Buess Posted - 11/22/2005 : 07:56:14 AM
This will work..

%F=NewFld; // new folder name
i1 = 1; // first i value
i2 = 100; // last i value
ii = 1; // i increment
j1 = 1; // first j value
j2 = 100; // last j value
jj = 1; // j increment
pe_mkdir %F
for(i=i1;i<=i2;i+=ii) {
for(j=j1;j<=j2;j+=jj) {
%A=Loop$(i)$(j);
pe_move %A %F;
};
};
pe_cd %F;

Mike Buess
Origin WebRing Member
senigalliese Posted - 11/22/2005 : 06:04:23 AM
Thanks Mike, your help is really appreciated. I am trying to use the pe_move command in a llop in order to move all my Loop$(i)$(j) wks inot another folder but when I use pe_move Loop$(i)$(j) fldname I always get an error message that says Error!!! Can't move Loop$(i)$(j) to fldname!
There must be a way to pass the name of the numbered wks to the pe_move command, but I am confused and do not know how to solve this problem.

Thanks Mike again.
Mike Buess Posted - 11/20/2005 : 10:31:47 AM
Well, you can use the Extended LabTalk commands...

pe_mkdir fldName; // create fldName folder
pe_move wksName fldName; // move wksName to fldName
pe_cd fldName; // go to fldName

Your wksNames are easy to generate so you can put the pe_move command in a loop. However, it's just as easy to combine the worksheets directly in a similar loop. (I suggested the folder method only to avoid the naming issue.)

i1 = 1; // first i value
i2 = 100; // last i value
ii = 1; // i increment
j1 = 1; // first j value
j2 = 100; // last j value
jj = 1; // j increment
win -t D; // create new wks
wks.addCol(); // add column
wks.col3.type=6; // set type to Z
for(i=i1;i<=i2;i+=ii) {
for(j=j1;j<=j2;j+=jj) {
%A=Loop$(i)$(j);
loop (k,1,3) {copy -a %(%A,k) %(%H,k)};
};
};

...If the row order in the combined wks is important the next script sorts the entire wks using col A and B as primary and secondary sequences.

sort.wksName$=%H;
sort.c1=0; // all columns
sort.r1=1; // start row 1
sort.r2=wks.maxrows; // stop last row
sort.cName1$=A: A; // primary sort: ascending order in col A
sort.cName2$=A: B; // secondary sort: ascending order in col B
sort.wks();

Mike Buess
Origin WebRing Member

Edited by - Mike Buess on 11/20/2005 10:50:00 AM

Edited by - Mike Buess on 11/20/2005 11:05:57 AM
senigalliese Posted - 11/20/2005 : 08:47:22 AM
Thank you very much Mike, once again.
Your routine works well, and as matter of fact I had to add as new rows. I wonder if I can automate my Lab Talk routine even further creating folders and then moving wks named "Loop$(i)$(j)" to this new folder and make it active as well.

Many thanks for your time, have a nice week end.
Mike Buess Posted - 11/19/2005 : 11:46:40 AM
I'm not sure if you want to paste as new columns or new rows so here are both methods.

1. Select View > Windows > Windows in Active Folder.
2. Move all worksheets that you want to combine to a new project folder.
3. Select the new folder in Project Explorer or from the Window > Folders submenu.
4. Run one of these scripts...

# Paste as new rows
win -t D; // create new wks
%W=%H; // save name
wks.addCol(); // add column
wks.col3.type=6; // set type to Z
# operate on all worksheets in active folder
doc -ef W {
if("%W"!="%H") {
loop (ii,1,3) {copy -a %(%H,ii) %(%W,ii)}; // append columns
};
};

# Paste as new columns
%I=%H;
work -d;
%W=%H;
doc -ef W {
if("%W"!="%H" && "%I"!="%H") {
%W!wks.addCol();
%W!wks.col$(%W!wks.ncols).type = 4;
%(%W,%W!wks.ncols) = %(%H,1);
%W!wks.addCol();
%(%W,%W!wks.ncols) = %(%H,2);
%W!wks.addCol();
%W!wks.col$(%W!wks.ncols).type = 6;
%(%W,%W!wks.ncols) = %(%H,3);
};
};

Mike Buess
Origin WebRing Member

Edited by - Mike Buess on 11/19/2005 12:19:19 PM

The Origin Forum © 2020 Originlab Corporation Go To Top Of Page
Snitz Forums 2000