详细内容

draw

时间:2025-04-26     作者:邱新龙翻译【转载】   来自:vmd手册   阅读

VMD提供了一种方式来显示由图形原语(如点、线、圆柱体、锥体、球体、三角形和文本)构建的用户定义对象。因为这些都是在场景中显示的,就像所有其他图形一样,它们也可以导出到各种光线追踪格式,3d打印机等。

用户定义的图形可以用来在分子周围画一个框,在两个原子之间画一个箭头,在空间的某个地方放置一个文本标签,或者测试一种可视化分子的新方法。

draw命令是一个直接的Tcl函数,它旨在简化图形命令的接口,并为扩展标准图形原语提供基础。


draw command [arguments]

draw命令(在大多数情况下)等同于graphics top command [arguments],因为它只是将图形原语添加到顶部分子,从而省去了输入额外参数的麻烦。然而,draw以两种方式扩展图形。首先,如果没有分子存在,draw会自动为你创建一个。其次,draw可以通过用户定义的绘图命令进行扩展。这是通过定义vmd draw $command形式的函数来完成的。如果函数存在,则调用第一个参数作为分子索引,其余参数作为原始draw调用的参数。下面是一个扩展了draw命令以包含“arrow”原语的示例。


proc vmd_draw_arrow {mol start end} {

set middle [vecadd $start [vecscale 0.9 [vecsub $end $start]]]

graphics $mol cylinder $start $middle radius 0.15

graphics $mol cone $middle $end radius 0.25

}

# 箭头是由圆柱体和圆锥体组成的


在VMD中输入该命令后,可以使用draw arrow{0 0 0}  {1 11 1}等命令绘制箭头。除了定义新命令外,用户定义的绘图命令还可以用于覆盖现有命令。例如,如果您定义vmd绘制球体,那么绘制球体{0 0 0}将调用您的球体例程,而不是图形中的例程。


这里有一个快速的方法来添加你自己的标签原子选择。这个函数接受选择文本和给定字符串中原子(在最上面的分子中)的标签。如果选择了除一个原子以外的其他元素,则返回错误。

proc label_atom {selection_string label_string} {

set sel [atomselect top $selection_string]

if {[$sel num] != 1} {

error "label_atom: ’$selection_string’ must select 1 atom"

}

# get the coordinates of the atom

lassign [$sel get {x y z}] coord

# and draw the text

draw text $coord $label_string

}


上一篇exit下一篇display
最新评论
请先登录才能进行回复登录
技术支持: CLOUD | 管理登录
seo seo