From: Ashar Malik (asharjm_at_gmail.com)
Date: Tue Dec 20 2016 - 06:41:58 CST

since you are drawing a new thing every frame and don't need to see the
previous thing in the current selection - you should use

draw delete all

I think this should delete everything drawn and redraw at the new positions
you pass it - which I am guessing is coming from the loop.
(If you are drawing all this in a loop and deleting in the same iteration -
it might get drawn and deleted too fast -- ??? Not sure if that is what you
want ?? )
Hope this helps. Otherwise write back.

On Wed, Dec 21, 2016 at 1:28 AM, Amit Gupta <amit__at_outlook.in> wrote:

> Hi,
>
> Yes I realized it and added it later on. Now I can see all the arrows, but
> together! I mean they are not changing with frame, rather all arrows from
> all frames are visible all the time
> ------------------------------
> *From:* Ashar Malik <asharjm_at_gmail.com>
> *Sent:* Tuesday, December 20, 2016 5:49:33 PM
> *To:* Amit Gupta
> *Cc:* vmd-l_at_ks.uiuc.edu
> *Subject:* Re: Fw: vmd-l: Draw arrows in trajectory file
>
> Hi,
>
> I think this maybe because you are not updating your selections properly.
> to see the arrow move - I guess your selections for arrows need to be
> updated on a frame by frame basis.
> Try either "$sel update" after "$sel frame $i"
>
> or drop the use of $sel update and use make selections like ...
>
> set end [lindex [[atomselect top "index $n_atom" frame $i] get {x y z}] 0]
>
> notice "frame $i" in the command you used. This will force a selection in
> the frame controlled by the loop.
> I think this should fix it. Otherwise - write back.
>
> Best,
> /A
>
> On Tue, Dec 20, 2016 at 10:45 PM, Amit Gupta <amit__at_outlook.in> wrote:
>
>>
>> Sorry I sent the message below to the person who replied rather than to
>> mailing list:
>>
>>
>> Thank you for the reply. I modified the script as written at the bottom
>> of mail and it worked fine (did not crash). However now i notice that
>> arrows are drawn only once, in the first frame. After which I do not see
>> any movement in the arrows. Is there any way to draw arrows per frame?
>>
>>
>>
>> Modified lines that worked:
>>
>> set end_temp [atomselect top "index $n_atom"]
>> set end [lindex [ $end_temp get {x y z}] 0]
>>
>> set start_temp [atomselect top "index $current_c_atom_index"]
>> set start [lindex [$start_temp get {x y z}] 0]
>>
>> $end_temp delete
>> $start_temp delete
>>
>>
>>
>>
>>
>>
>> From: Norman Geist <norman.geist_at_uni-greifswald.de>
>> Sent: Tuesday, December 20, 2016 2:07:25 PM
>> To: 'Amit Gupta'
>> Subject: AW: vmd-l: Draw arrows in trajectory file
>>
>>
>> You produced a common memory leak with many atomselects which you never
>> clear.
>> After you no more need an atomselect object, you should call “delete” on
>> it to free memory.
>>
>> Eg.:
>>
>> set a [atomselect top all]
>> set list [$a get index]
>> $a delete; #<-------
>>
>> So whats happening is that vmd gets killed for eating up all the memory.
>>
>> Best of luck
>>
>> Norman Geist
>>
>>
>>
>>
>> Von: owner-vmd-l_at_ks.uiuc.edu [mailto:owner-vmd-l_at_ks.uiuc.edu] Im Auftrag
>> von Amit Gupta
>> Gesendet: Dienstag, 20. Dezember 2016 07:31
>> An: vmd-l_at_ks.uiuc.edu
>> Betreff: vmd-l: Draw arrows in trajectory file
>>
>>
>> I want to draw come arrows in a lammps trajectory file, indicating
>> movement of certain vectors.
>> I have written script below, it works fine for single frame, but for more
>> than one frame, VMD crashes without any message (even in console). Can
>> anyone suggest a reason?
>>
>>
>> draw color yellow
>>
>> ##-----------Draw arrow subroutine from VMD website----------
>>
>>
>>
>> proc vmd_draw_arrow {mol start end} {
>>
>> # an arrow is made of a cylinder and a cone
>>
>> set middle [vecadd $start [vecscale 0.75 [vecsub $end $start]]]
>>
>> graphics $mol cylinder $start $middle radius 0.1
>>
>> graphics $mol cone $middle $end radius 0.3
>>
>> }
>>
>>
>>
>> ##----------------------------------------------------------
>> ----------------------
>>
>>
>>
>> set n [molinfo top get numframes]
>>
>> set sel [atomselect top "all"]
>>
>> set n_list [atomselect top "type 6"] #get indexes of all nitrogens in
>> molecules
>>
>> set all_n_atoms [$n_list get index]
>>
>>
>>
>> for {set i 0} {$i < $n} {incr i} {
>>
>> $sel frame $i
>>
>> foreach n_atom $all_n_atoms {
>>
>> set current_c_atom_index [expr $n_atom - 1] # get index of C
>> attached to N
>>
>> set end [lindex [[atomselect top "index $n_atom"] get {x y z}] 0]
>>
>> set start [lindex [[atomselect top "index $current_c_atom_index"]
>> get {x y z}] 0]
>>
>> draw arrow $start $end
>>
>> }
>>
>> }
>>
>>
>> Sorry if certain logic seems slightly convoluted, still getting used to
>> TCL!
>>
>>
>>
>
>
> --
> Best,
> /A
>

-- 
Best,
/A