常用方法
日志打印
插件底部中心的内置控制台显示日志条目
typescript
plugin.log.info('This info will appear in the Mol* console');
typescript
plugin.log.warn('This warn will appear in the Mol* console');
typescript
plugin.log.message('This message will appear in the Mol* console');
typescript
plugin.log.error('This error will appear in the Mol* console');
显示 toast 消息
Toast 消息将出现在插件的右下角,并在消失之前停留有限的时间。
typescript
import { PluginCommands } from 'molstar/lib/mol-plugin/commands';
PluginCommands.Toast.Show(plugin, {
title: 'Custom Message',
message: 'A custom toast message that will disappear after 2 seconds.',
key: 'toast-custom',
timeoutMs: 2000
});
相机聚焦
typescript
plugin.managers.camera.focusLoci(loci);
重置聚焦
typescript
plugin.managers.camera.reset();
Structure 聚焦
typescript
plugin.managers.structure.focus.setFromLoci(loci);
聚焦扩展
typescript
plugin.managers.structure.focus.addFromLoci(loci);
重置聚焦
typescript
plugin.managers.structure.focus.clear();
高亮
typescript
plugin.managers.interactivity.lociHighlights.highlightOnly({ loci });
typescript
plugin.managers.interactivity.lociHighlights.isHighlighted({ loci });
typescript
plugin.managers.interactivity.lociHighlights.highlightOnly({ loci });
typescript
plugin.managers.interactivity.clearHighlights();
查询
typescript
import { Script } from 'molstar/lib/mol-script/script';
import { StructureSelection } from 'molstar/lib/mol-model/structure/query';
const data = plugin.managers.structure.hierarchy.current.structures[0]?.cell.obj?.data;
if (!data) return;
const selection = Script.getStructureSelection(Q => Q.struct.generator.atomGroups({
'chain-test': Q.core.rel.eq(['B', Q.ammp('label_asym_id')])
}), data);
const loci = StructureSelection.toLociWithSourceUnits(selection);
设置基础属性
typescript
import { ColorNames } from 'molstar/lib/mol-util/color/names';
import { PluginCommands } from 'molstar/lib/mol-plugin/commands';
const renderer = plugin.canvas3d!.props.renderer;
PluginCommands.Canvas3D.SetSettings(plugin, { settings: { renderer: { ...renderer, backgroundColor: ColorNames.red /* or: 0xff0000 as Color */ } } });