forked from SAP-archive/fedem-mdb
-
Notifications
You must be signed in to change notification settings - Fork 0
/
FmAssemblyBase.H
55 lines (42 loc) · 1.59 KB
/
FmAssemblyBase.H
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
// SPDX-FileCopyrightText: 2023 SAP SE
//
// SPDX-License-Identifier: Apache-2.0
//
// This file is part of FEDEM - https://openfedem.org
////////////////////////////////////////////////////////////////////////////////
#ifndef FM_ASSEMBLY_BASE_H
#define FM_ASSEMBLY_BASE_H
#include "vpmDB/FmSubAssembly.H"
#include "FFaLib/FFaAlgebra/FFaMat34.H"
#include "FFaLib/FFaAlgebra/FFa3DLocation.H"
class FmAssemblyBase : public FmSubAssembly
{
protected:
FmAssemblyBase(bool isDummy = false);
virtual ~FmAssemblyBase() {}
public:
FmAssemblyBase* getPositionedParent() const;
void setLocalCS(const FaMat34& cs, bool updateLoc = true);
void setGlobalCS(const FaMat34& cs, bool updateLoc = true);
FaMat34 toGlobal(const FaMat34& m) const;
FaMat34 toLocal(const FaMat34& m) const;
FaMat33 toGlobal(const FaMat33& m) const;
FaMat33 toLocal(const FaMat33& m) const;
FaVec3 toGlobal(const FaVec3& v, bool directionOnly = false) const;
FaVec3 toLocal(const FaVec3& v, bool directionOnly = false) const;
void setLocation(const FFa3DLocation& loc);
const FFa3DLocation& getLocation() const { return myLocation.getValue(); }
virtual void updateLocation(char updateWhat = 'A');
virtual double getMass(FaVec3& CoG, bool includeSubAss = true) const;
virtual FmBase* duplicate() const;
using FmSubAssembly::duplicate;
bool isMovable() const;
double getTotalLength() const;
double getTotalMass(double* pLength = NULL) const;
FaVec3 getGlobalCoG(bool includeSubAss = true) const;
FaVec3 getExtents() const;
protected:
FFaField<FaMat34> myCS;
FFaField<FFa3DLocation> myLocation;
};
#endif