コード例 #1
0
ファイル: grid.cpp プロジェクト: alinelena/aten
// Set visibility of grid data
bool Commands::function_GridVisible(CommandNode* c, Bundle& obj, ReturnValue& rv)
{
	if (obj.notifyNull(Bundle::GridPointer)) return false;
	if (c->hasArg(0)) obj.g->setVisible(c->argb(0));
	rv.set(obj.g->isVisible());
	return true;
}
コード例 #2
0
ファイル: grid.cpp プロジェクト: alinelena/aten
// Add next gridpoint in sequence
bool Commands::function_AddNextGridPoint(CommandNode* c, Bundle& obj, ReturnValue& rv)
{
	if (obj.notifyNull(Bundle::GridPointer)) return false;
	obj.g->setNextData(c->argd(0));
	rv.reset();
	return true;
}
コード例 #3
0
ファイル: grid.cpp プロジェクト: alinelena/aten
// Set whether 2D grid uses data value as height component
bool Commands::function_GridUseZ(CommandNode* c, Bundle& obj, ReturnValue& rv)
{
	if (obj.notifyNull(Bundle::GridPointer)) return false;
	if (c->hasArg(0)) obj.g->setUseDataForZ(c->argb(0));
	rv.set(obj.g->useDataForZ());
	return true;
}
コード例 #4
0
ファイル: grid.cpp プロジェクト: alinelena/aten
// Set view percentage for secondary surface
bool Commands::function_GridViewPercentageSecondary(CommandNode* c, Bundle& obj, ReturnValue& rv)
{
	if (obj.notifyNull(Bundle::GridPointer)) return false;
	if (c->hasArg(0)) obj.g->setSecondaryCutoffAsViewPercentage(c->argd(0), c->hasArg(1) ? c->argb(1) : false);
	rv.set((obj.g->partialSecondarySum() / obj.g->totalAbsoluteSum())*100.0);
	return true;
}
コード例 #5
0
ファイル: grid.cpp プロジェクト: alinelena/aten
// Set whether grid is periodic
bool Commands::function_GridPeriodic(CommandNode* c, Bundle& obj, ReturnValue& rv)
{
	if (obj.notifyNull(Bundle::GridPointer)) return false;
	obj.g->setPeriodic(c->argb(0));
	rv.reset();
	return true;
}
コード例 #6
0
ファイル: grid.cpp プロジェクト: alinelena/aten
// Set secondary grid cutoff
bool Commands::function_GridCutoffSecondary(CommandNode* c, Bundle& obj, ReturnValue& rv)
{
	if (obj.notifyNull(Bundle::GridPointer)) return false;
	obj.g->setLowerSecondaryCutoff(c->argd(0));
	if (c->hasArg(1)) obj.g->setUpperSecondaryCutoff(c->argd(1));
	rv.reset();
	return true;
}
コード例 #7
0
ファイル: grid.cpp プロジェクト: alinelena/aten
// Set negative colour for grid
bool Commands::function_GridColourSecondary(CommandNode* c, Bundle& obj, ReturnValue& rv)
{
	if (obj.notifyNull(Bundle::GridPointer)) return false;
	if (c->hasArg(3)) obj.g->setSecondaryColour(c->argd(0), c->argd(1), c->argd(2), c->argd(3));
	else obj.g->setSecondaryColour(c->argd(0), c->argd(1), c->argd(2));
	rv.reset();
	return true;
}
コード例 #8
0
ファイル: grid.cpp プロジェクト: alinelena/aten
// Set transparency of primary and secondary grid surfaces
bool Commands::function_GridAlpha(CommandNode* c, Bundle& obj, ReturnValue& rv)
{
	if (obj.notifyNull(Bundle::GridPointer)) return false;
	obj.g->setPrimaryAlpha(c->argGLf(0));
	obj.g->setSecondaryAlpha(c->argGLf(0));
	rv.reset();
	return true;
}
コード例 #9
0
ファイル: charge.cpp プロジェクト: alinelena/aten
// Clears charge in current model ('clearcharges')
bool Commands::function_ClearCharges(CommandNode* c, Bundle& obj, ReturnValue& rv)
{
	if (obj.notifyNull(Bundle::ModelPointer)) return false;
	obj.rs()->beginUndoState("Remove charges");
	obj.rs()->clearCharges();
	obj.rs()->endUndoState();
	return true;
}
コード例 #10
0
ファイル: charge.cpp プロジェクト: alinelena/aten
// Assign charge to a pattern atom, propagated over the model ('chargepatom <id> <q>')
bool Commands::function_ChargePAtom(CommandNode* c, Bundle& obj, ReturnValue& rv)
{
	if (obj.notifyNull(Bundle::ModelPointer)) return false;
	obj.rs()->beginUndoState("Charge single pattern atom");
	obj.rs()->chargePatternAtom(obj.p,c->argi(0),c->argd(1));
	obj.rs()->endUndoState();
	return true;
}
コード例 #11
0
ファイル: charge.cpp プロジェクト: alinelena/aten
// Assign charges from forcefield atom types ('chargeff')
bool Commands::function_ChargeFF(CommandNode* c, Bundle& obj, ReturnValue& rv)
{
	if (obj.notifyNull(Bundle::ModelPointer)) return false;
	obj.rs()->beginUndoState("Assign forcefield charges");
	bool result = obj.rs()->assignForcefieldCharges();
	obj.rs()->endUndoState();
	return (result);
}
コード例 #12
0
ファイル: grid.cpp プロジェクト: alinelena/aten
// Add grid point data at specified indices
bool Commands::function_AddGridPoint(CommandNode* c, Bundle& obj, ReturnValue& rv)
{
	if (obj.notifyNull(Bundle::GridPointer)) return false;
	Vec3<int> veci = c->arg3i(0);
	obj.g->setData(veci.x-1, veci.y-1, veci.z-1, c->argd(3));
	rv.reset();
	return true;
}
コード例 #13
0
ファイル: grid.cpp プロジェクト: alinelena/aten
// Create new grid in the current model
bool Commands::function_NewGrid(CommandNode* c, Bundle& obj, ReturnValue& rv)
{
	if (obj.notifyNull(Bundle::ModelPointer)) return false;
	obj.g = aten_.currentModel()->addGrid();
	obj.g->setName(c->argc(0).trimmed());
	rv.set(VTypes::GridData, obj.g);
	return true;
}
コード例 #14
0
ファイル: grid.cpp プロジェクト: alinelena/aten
// Initialise grid, setting extent of grid (number of points in each direction)
bool Commands::function_InitialiseGrid(CommandNode* c, Bundle& obj, ReturnValue& rv)
{
	if (obj.notifyNull(Bundle::GridPointer)) return false;
	Grid::GridType gt = Grid::gridType(c->argc(0), true);
	if (gt == Grid::nGridTypes) return false;
	rv.set(obj.g->initialise(gt, c->arg3i(1)));
	return true;
}
コード例 #15
0
ファイル: grid.cpp プロジェクト: alinelena/aten
// Set drawing style of secondary surface
bool Commands::function_GridStyleSecondary(CommandNode* c, Bundle& obj, ReturnValue& rv)
{
	if (obj.notifyNull(Bundle::GridPointer)) return false;
	Grid::SurfaceStyle ss = Grid::surfaceStyle(c->argc(0));
	if (ss == Grid::nSurfaceStyles) return false;
	obj.g->setSecondaryStyle(ss);
	rv.reset();
	return true;
}
コード例 #16
0
ファイル: grid.cpp プロジェクト: alinelena/aten
ATEN_USING_NAMESPACE

// Add free grid point data at specified coordinates
bool Commands::function_AddFreePoint(CommandNode* c, Bundle& obj, ReturnValue& rv)
{
	if (obj.notifyNull(Bundle::GridPointer)) return false;
	obj.g->addFreePoint(c->argd(0), c->argd(1), c->argd(2), c->argd(3));
	rv.reset();
	return true;
}
コード例 #17
0
ファイル: charge.cpp プロジェクト: alinelena/aten
// Copy atomic charges from model to model's current trajectory frame
bool Commands::function_ChargeFromModel(CommandNode* c, Bundle& obj, ReturnValue& rv)
{
	if (obj.notifyNull(Bundle::ModelPointer)) return false;
	if (obj.rs() == obj.m) 
	{
		Messenger::print("Error - 'chargefrommodel' requires an active trajectory frame in the current model.");
		return false;
	}
	else obj.rs()->copyAtomData(obj.m, Atom::ChargeData);
	return true;
}
コード例 #18
0
ファイル: grid.cpp プロジェクト: alinelena/aten
// Set grid axes (nine doubles)
bool Commands::function_GridAxes(CommandNode* c, Bundle& obj, ReturnValue& rv)
{
	if (obj.notifyNull(Bundle::GridPointer)) return false;
	Matrix mat;
	mat.setColumn(0, c->arg3d(0), 0.0);
	mat.setColumn(1, c->arg3d(3), 0.0);
	mat.setColumn(2, c->arg3d(6), 0.0);
	obj.g->setAxes(mat);
	rv.reset();
	return true;
}
コード例 #19
0
ファイル: grid.cpp プロジェクト: alinelena/aten
// Load grid ('loadgrid <filename>')
bool Commands::function_LoadGrid(CommandNode* c, Bundle& obj, ReturnValue& rv)
{
	if (obj.notifyNull(Bundle::ModelPointer)) return false;
	Grid* g = NULL;

	if (aten_.importGrid(obj.rs(), c->argc(0))) g = obj.g;
	else return false;

	// Set return value
	rv.set(VTypes::GridData, g);
	return true;
}
コード例 #20
0
ファイル: grid.cpp プロジェクト: alinelena/aten
// Set colour scale for grid
bool Commands::function_GridColourscale(CommandNode* c, Bundle& obj, ReturnValue& rv)
{
	if (obj.notifyNull(Bundle::GridPointer)) return false;
	int cs = c->argi(0);
	if ((cs < 0) || (cs > 10))
	{
		Messenger::print("ColourScale %i is out of range (1-10, or 0 to use object's internal colour).",cs);
		return false;
	}
	obj.g->setColourScale(cs-1);
	rv.reset();
	return true;
}
コード例 #21
0
ファイル: grid.cpp プロジェクト: alinelena/aten
// Set loop order to use in 'gridnextpoint'
bool Commands::function_GridLoopOrder(CommandNode* c, Bundle& obj, ReturnValue& rv)
{
	if (obj.notifyNull(Bundle::GridPointer)) return false;
	if (c->argc(0).length() != 3)
	{
		Messenger::print("A string of three characters must be passed to 'gridLoopOrder' (got '%s').", qPrintable(c->argc(0)));
		return false;
	}

	obj.g->setLoopOrder(c->argc(0));

	rv.reset();
	return true;
}
コード例 #22
0
ファイル: grid.cpp プロジェクト: alinelena/aten
// Return nth grid of model
bool Commands::function_GetGrid(CommandNode* c, Bundle& obj, ReturnValue& rv)
{
	if (obj.notifyNull(Bundle::ModelPointer)) return false;
	Grid* g = NULL;
	switch (c->argType(0))
	{
		case (VTypes::IntegerData):
			g = obj.rs()->grid(c->argi(0)-1);
			break;
		case (VTypes::GridData):
			g = (Grid*) c->argp(0, VTypes::GridData);
			break;
		default:
			Messenger::print("Can't convert a variable of type '%s' to a Grid.", VTypes::dataType(c->argType(0)));
			break;
	}
	if (g == NULL) return false;
	rv.set(VTypes::GridData, g);
	return true;
}
コード例 #23
0
ファイル: charge.cpp プロジェクト: alinelena/aten
ATEN_USING_NAMESPACE

// Assign charge to selected atoms in model ('charge <q>'), or get charge of current selection
bool Commands::function_Charge(CommandNode* c, Bundle& obj, ReturnValue& rv)
{
	if (obj.notifyNull(Bundle::ModelPointer)) return false;
	double q = 0.0;
	if (c->hasArg(0))
	{
		obj.rs()->beginUndoState("Charge selected atoms");
		for (RefListItem<Atom,int>* ri = obj.rs()->selection(); ri != NULL; ri = ri->next) obj.rs()->atomSetCharge(ri->item, c->argd(0));
		obj.rs()->endUndoState();
	}
	else
	{
		q = 0.0;
		for (RefListItem<Atom,int>* ri = obj.rs()->selection(); ri != NULL; ri = ri->next) q += ri->item->charge();
	}
	rv.set(q);
	return true;
}