约束扩展

扩展约束类边界条件时(约束是指单点约束),对象类应从XConstraint继承,需按照下列代码重新实现基类的接口。

class XT_EXT_DOMAIN NewSPC : public XConstraint
{
	DECLARE_CITEM(NewSPC)
public:
	NewSPC (ulong id);
	~NewSPC ();
	const ConditionAttribute * getAttribute() const { return attribute(); }
	const NewSPC Attribute * attribute() const {return &m_Atb;}
	void setAttribute(const ConditionAttribute * atb) {m_Atb = *(NewSPC Attribute*)atb;}
	void instantiate(XConditionInstance * inst, ConditionContext * context) const;
	void clearMarker() { if(m_pMarkerArr) m_pMarkerArr->resize(0); }
	void buildMarker(ConditionContext * context);
	void updateMarker(float *lineVertex,float scale);
	const void * getMarker() const {return m_pMarkerArr;}
	int	 getMarkerVertexSize()  const;
	void write(XBinaryIO * io) const;
	ErrorCode read(XBinaryIO * io);
	int getDataDimension() const;
	void listProperty(std::vector<ObjPropertyEntry> * prpSheet) const;

private:
	NewSPCAttribute m_Atb;
	XArray<TetMarker> * m_pMarkerArr = 0;
};

REGISTER_CITEM(NewSPC, "CCNDNEWSPC", ConditionManager::ctype(), 0);
struct NewSPCAttribute: public ConstraintAttribute
{
	double dValue;
};
	const NewSPCAttribute * attribute() const {return &m_Atb;}
	XArray<TetMarker> * m_pMarkerArr = 0;