00001 #ifndef R_OpenChain_h 00002 #define R_OpenChain_h 1 00003 00004 #pragma warning( disable : 4786 ) 00005 00006 #include "robots\RobotBase.h" 00007 00008 class Frame; 00009 class LinkBase; 00010 00011 class R_OpenChain : public RobotBase //## Inherits: <unnamed>%3718ED9001AE 00012 { 00013 00014 public: 00015 R_OpenChain (const R_OpenChain& right); 00016 00017 R_OpenChain (FrameManager* frameManager); 00018 00019 virtual ~R_OpenChain(); 00020 00021 00022 // appends a link onto the very end of the robot 00023 // manipulator. This link should have been allocated 00024 // previously, but the robot now retains control of the 00025 // pointer. 00026 void AppendLink (const LinkBase* link); 00027 00028 // returns the number of degrees of freedom in a robot 00029 virtual unsigned int DOF () const; 00030 00031 // this operation allocates memory for a copy of this 00032 // object, and returns a pointer to this new instantiation. 00033 virtual Entity* Clone () const; 00034 00035 // Returns a list of pointers to all the links that compose 00036 // the robot. 00037 virtual std::list< LinkBase*> GetAllLinks () const; 00038 virtual std::list< int > GetAllToolFrames() const; 00039 virtual LinkBase* GetLink( const unsigned int i ); 00040 00041 // Adds a tool frame to a paritcular robot 00042 void AddToolFrame( const Frame& frame, const int baseFrameNum ); 00043 00044 virtual bool CanCheckInterference (const Entity* entity) const; 00045 00046 virtual bool IsInterfering (const Entity* entity) const; 00047 00048 virtual bool Deserialize( IfstreamWithComments& is ) ; 00049 00050 //Added by Zhenwang.Yao 2003.01 00051 int GetToolFrame(int index); 00052 00053 protected: 00054 std::vector< int > m_ToolFrames; 00055 std::vector< int > m_ToolFrameBases; 00056 std::vector< LinkBase* > links; 00057 }; 00058 00059 #endif