OpenLexocad  28.0
ProductImpl.h
Go to the documentation of this file.
1 #pragma once
2 
3 #include <App/Application.h>
4 #include <App/Product.h>
5 #include <Base/Exception.h>
6 #include <Core/Core_Interface.h>
12 #include <Draw/DrawStyle.h>
13 #include <Draw/Texture2.h>
14 #include <Draw/Texture2Transform.h>
15 #include <Geom/Ax1.h>
16 #include <Geom/Ax2.h>
17 #include <Geom/Bnd_Box.h>
18 #include <Geom/Dir.h>
19 #include <Geom/Trsf.h>
20 #include <Geom/Vec.h>
21 #include <OpenLxApp/Geometry.h>
22 #include <OpenLxApp/Object.h>
23 #include <OpenLxApp/Property.h>
24 #include <OpenLxApp/PropertySet.h>
25 #include <OpenLxApp/Value.h>
26 #include <iostream>
27 #include <QFileInfo>
28 #include <memory>
29 
30 
31 namespace OpenLxApp
32 {
33 class Geometry;
34 
41 {
42 public:
43  ProductImpl(App::Product* aProduct);
44  ~ProductImpl(void);
45 
46  std::shared_ptr<Document> getDocument() const;
47 
48  virtual bool setGeometry(std::shared_ptr<Geometry> geo);
49  std::shared_ptr<Geometry> getGeometry() const;
52 
54  void setLocalPlacement(const Geom::Ax2& pos);
57  void setTransform(const Geom::Trsf& t);
58  void translate(const Geom::Vec& aVec, Geom::CoordSpace aCoordSpace = Geom::CoordSpace::WCS);
59  void rotate(const Geom::Ax1& axis, double angle, Geom::CoordSpace aCoordSpace = Geom::CoordSpace::WCS);
60  bool getLocalAxes(Geom::Ax2& localAxes);
61  void setLocalAxes(const Geom::Dir& zHeight, const Geom::Dir& xLength);
62 
65 
66  void setOglMaterial(const Draw::OglMaterial& mat, int faceIndex = -1);
67  Draw::OglMaterial getOglMaterial() const;
68 
69  void setAmbientColor(const Base::Color& aCol);
70  void setDiffuseColor(const Base::Color& aCol);
71  void setSpecularColor(const Base::Color& aCol);
72  void setEmissiveColor(const Base::Color& aCol);
73  void setReflectiveColor(const Base::Color& aCol);
74  void setShininess(int aVal);
75  void setTransparency(int aVal);
76 
77  void setDrawStyle(const Draw::DrawStyle& ds);
78  Draw::DrawStyle getDrawStyle() const;
79  void setLineWidth(float width);
80  void setTexture(const Draw::Texture2& tex, int faceIndex = -1);
81  void setLengthAndCrossTexture(const Draw::Texture2& lengthTexture,
82  const Draw::Texture2& crossTexture,
83  const Draw::Texture2Transform& lengthTextureTrsf = Draw::Texture2Transform(),
84  const Draw::Texture2Transform& crossTextureTrsf = Draw::Texture2Transform());
85 
86  void setPositionNb(long value);
87  long getPositionNb() const;
88 
89  bool isVisible() const;
90  void setVisible(bool onoff);
91 
92  std::shared_ptr<PropertyInteger> registerPropertyInteger(const std::string& aName,
93  int aDefaultValue,
96  int aTranslationId = -1);
97  std::shared_ptr<PropertyEnum> registerPropertyEnum(const std::string& aName,
98  int aDefaultValue,
101  int aTranslationId = -1);
102 
103  std::shared_ptr<PropertyDouble> registerPropertyDouble(const std::string& aName,
104  double aDefaultValue,
107  int aTranslationId = -1);
108 
109  std::shared_ptr<PropertyButton> registerPropertyButton(const std::string& aName,
112  int aTranslationId = -1);
113 
114  std::shared_ptr<PropertyBool> registerPropertyBool(const std::string& aName,
115  bool aDefaultValue,
118  int aTranslationId = -1);
119 
120  std::shared_ptr<PropertyString> registerPropertyString(const std::string& aName,
121  const Base::String& aDefaultValue,
124  int aTranslationId = -1);
125 
126  std::shared_ptr<PropertyColor> registerPropertyColor(const std::string& aName,
127  const Base::Color& aDefaultValue,
130  int aTranslationId = -1);
131 
132  std::shared_ptr<OpenLxApp::Property> getProperty(const std::string& aName) const;
133  std::map<std::string, std::shared_ptr<Property>> getPropertyMap() const;
134  std::shared_ptr<PropertyInteger> getPropertyInteger(const std::string& aName) const;
135  std::shared_ptr<PropertyEnum> getPropertyEnum(const std::string& aName) const;
136  std::shared_ptr<PropertyDouble> getPropertyDouble(const std::string& aName) const;
137  std::shared_ptr<PropertyButton> getPropertyButton(const std::string& aName) const;
138  std::shared_ptr<PropertyBool> getPropertyBool(const std::string& aName) const;
139  std::shared_ptr<PropertyString> getPropertyString(const std::string& aName) const;
140  std::shared_ptr<PropertyColor> getPropertyColor(const std::string& aName) const;
141  bool isRegisteredProperty(const std::string& aName) const;
142 
144  void setPythonProductVersion(int pythonProductVersion) const;
145 
146  void translateAfterScaled(const Geom::Vec& aVec, const Geom::Pnt& aScaleBasePnt);
148  void setPropertyHeader(const Base::String& aDefaultName, int aTranslationId);
149  void setPropertyGroupName(const Base::String& aDefaultName, int aTranslationId);
152 
153  // User defined properties
154  std::shared_ptr<PropertyUser> getPropertyUser(const std::string& aName) const;
155  std::vector<std::shared_ptr<PropertyUser>> getPropertyUser() const;
156  std::vector<Base::String> getPropertySetNames() const;
157  std::shared_ptr<PropertySet> getPropertySetByName(const Base::String& aName) const;
158 
172  template <typename T>
173  bool registerPythonClass(std::shared_ptr<T> aObject, const std::string& aClassName, const std::string& aParentClassName)
174  {
175  if (aClassName == "" || aParentClassName == "")
176  return false;
177 
178  auto pco = mProduct->getPythonClassObject();
179  if (pco)
180  {
181  std::cout << "Already registered!" << std::endl;
182 
183  int pythonProductVersion = getPythonProductVersion();
184  if (pythonProductVersion < aObject->getScriptVersion())
185  {
186  aObject->convertFromOldVersion(pythonProductVersion);
187  }
188 
189  return true; // Class is already registered.
190  }
191  else
192  {
193  auto fileName = Core::getCurrentScriptFilePath();
194 
195  // Get Script
197  if (scriptId.isNull())
198  {
199  Base::Message().showMessageBoxError(App::GetApplication().getQApplicationName(),
200  QString("Cannot register Python Script. \nGlobalId = %1\nDid you forget to "
201  "add\n\ndoc.registerPythonScript(Base.GlobalId(\"{<aGloballyUniqueId>}\") \n\nto your "
202  "Lexocad Python Script?\nSee https://www.guidgenerator.com to generate a GlobalId.")
203  .arg(QString::fromStdWString(scriptId.toString().c_str())));
204  return false;
205  }
206 
208  if (!pythonScriptObject)
209  {
211  App::GetApplication().getQApplicationName(),
212  QString("Cannot get the registered Script.\nGlobalId = %1").arg(QString::fromStdWString(scriptId.toString().c_str())));
213  return false;
214  }
215 
216  // Check if class is already registered...
217  auto classId = aObject->getGlobalClassId();
218  if (classId.isNull())
219  {
220  Base::Message().showMessageBoxError(App::GetApplication().getQApplicationName(),
221  QString("Cannot register Python class. \nGlobalId = %1\nDid you forget to add\n\ndef "
222  "getGlobalClassId(self):\n return Base.GlobalId(\"{<aGloballyUniqueId>}\") \n\nto "
223  "your Lexocad Python class?\nSee https://www.guidgenerator.com to generate a GlobalId.")
224  .arg(QString::fromStdWString(classId.toString().c_str())));
225  return false;
226  }
227 
228  // Check if the file base name contains whitespaces.
229  // This is not allowed because it will later cause
230  // problems when trying to import the module.
231  // eg: 'import My module name' will cause an error.
232  QFileInfo fi(QString::fromStdWString(fileName.c_str()));
233  QString baseName = fi.completeBaseName();
234  if (baseName.contains(' '))
235  {
236  Base::Message().showMessageBoxError(QString::fromStdWString(Core::CoreApplication::instance()->getApplicationName().c_str()),
237  QString("Cannot import '%1'.\nWhitespaces in names are not allowed.").arg(baseName));
238  return false;
239  }
240 
241  Base::String thisClassName = Base::StringTool::toString(aClassName);
242  Base::String superClassName = Base::StringTool::toString(aParentClassName);
243 
244  if (auto regClass = Core::PythonClassObject::getRegisteredClass(classId))
245  {
246  if (regClass->className.getValue() != thisClassName)
247  {
249  App::GetApplication().getQApplicationName(),
250  QString("Cannot register Python class. \nThe GlobalId is already registered with a different class (%1)")
251  .arg(QString::fromStdWString(regClass->className.getValue().c_str())));
252  return false;
253  }
254  mProduct->setPythonClassObject(regClass);
255 
256  // Save the version of the script that first created *this* Product
257  const int pythonProductVersion = aObject->getScriptVersion();
258  setPythonProductVersion(pythonProductVersion);
259 
260  return true; // Class is already registered.
261  }
262  else
263  {
264  std::cout << "First register" << std::endl;
265  Core::CoreDocument* doc = mProduct->getDocument();
266  auto pythonClassObject = doc->createObject<Core::PythonClassObject>();
267  mProduct->setPythonClassObject(pythonClassObject);
268  pythonClassObject->className.setValue(thisClassName);
269  pythonClassObject->classId.setValue(classId);
270  pythonClassObject->superClassName.setValue(superClassName);
271  Core::PythonClassObject::registerClass(pythonClassObject);
272 
273  pythonClassObject->pythonScriptObject.setValue(pythonScriptObject);
274  pythonClassObject->standardManipulatorPolicy.setValue(
279 
280  // Save the version of the script that first created *this* Product
281  const int pythonProductVersion = aObject->getScriptVersion();
282  setPythonProductVersion(pythonProductVersion);
283 
284  return true; // Class is registered successfully.
285  }
286  }
287  }
288 
289  template <typename T>
290  void onChange(std::shared_ptr<T> aObject, Core::DocObject* aCaller, const Core::DocObjectObserverMsg& aReason)
291  {
292  if (getDocument()->isEditing())
293  return;
294 
295  switch (aReason.msgId)
296  {
298  aObject->onPropertyChanged(Base::StringTool::toStlString(aReason.value1.toString()));
299  break;
301  {
302  const auto& vec = aReason.value1.toVector();
303  const auto& pnt = aReason.value2.toPoint();
304 
305  if (vec.magnitude() > Geom::Precision::linear_Resolution())
306  {
307  aObject->onScaling(vec, pnt);
308  }
309  break;
310  }
311  default:
312  break;
313  }
314  }
315 
316 private:
317  App::Product* mProduct = nullptr;
318 };
319 
320 } // namespace OpenLxApp
OpenLxApp
Definition: ActiveScript.h:10
OpenLxApp::ProductImpl::setOglMaterial
void setOglMaterial(const Draw::OglMaterial &mat, int faceIndex=-1)
OpenLxApp::ProductImpl::setTransform
void setTransform(const Geom::Trsf &t)
OpenLxApp::ProductImpl::setLocalAxes
void setLocalAxes(const Geom::Dir &zHeight, const Geom::Dir &xLength)
OpenLxApp::ProductImpl::registerPropertyInteger
std::shared_ptr< PropertyInteger > registerPropertyInteger(const std::string &aName, int aDefaultValue, Property::Visible aVisible=Property::VISIBLE, Property::Editable aEditable=Property::EDITABLE, int aTranslationId=-1)
Geom::Bnd_Box
Definition: Bnd_Box.h:67
Vec.h
Base::Color
Definition: Color.h:39
PropertyScriptParam.h
OpenLxApp::ProductImpl::setPythonProductVersion
void setPythonProductVersion(int pythonProductVersion) const
Core::PythonClassObject
Keeps the information about a Python class like class name, the super class etc. Also keeps the infor...
Definition: PythonClassObject.h:25
Value.h
OpenLxApp::ProductImpl::registerPythonClass
bool registerPythonClass(std::shared_ptr< T > aObject, const std::string &aClassName, const std::string &aParentClassName)
Definition: ProductImpl.h:173
Trsf.h
Base::GlobalId::toString
Base::String toString() const
OpenLxApp::ProductImpl::getPropertyUser
std::shared_ptr< PropertyUser > getPropertyUser(const std::string &aName) const
Base::MessageBase::showMessageBoxError
virtual void showMessageBoxError(const QString &title, const QString &text, QWidget *parent=nullptr, bool silent=false)
Core::StandardManipulatorPolicy::TRANSLATEZENABLEDW
@ TRANSLATEZENABLEDW
Definition: StandardManipulatorPolicy.h:23
Core::CoreDocument
Definition: CoreDocument.h:269
OpenLxApp::ProductImpl::getPropertyHeader
Base::String getPropertyHeader() const
Core::StandardManipulatorPolicy::TRANSLATEYENABLED
@ TRANSLATEYENABLED
Definition: StandardManipulatorPolicy.h:21
OpenLxApp::ProductImpl::setLocalPlacement
void setLocalPlacement(const Geom::Ax2 &pos)
OpenLxApp::ProductImpl::setEmissiveColor
void setEmissiveColor(const Base::Color &aCol)
OpenLxApp::ProductImpl::getPropertyGroupName
Base::String getPropertyGroupName() const
OpenLxApp::ProductImpl::getPropertySetNames
std::vector< Base::String > getPropertySetNames() const
OpenLxApp::ProductImpl::rotate
void rotate(const Geom::Ax1 &axis, double angle, Geom::CoordSpace aCoordSpace=Geom::CoordSpace::WCS)
OpenLxApp::ProductImpl::getShape
pConstShape getShape() const
OpenLxApp::ProductImpl::getPropertySetByName
std::shared_ptr< PropertySet > getPropertySetByName(const Base::String &aName) const
Base::String::c_str
const wchar_t * c_str() const
Returns wchar_t array.
Definition: String.h:62
Base::GlobalId::isNull
bool isNull() const
OpenLxApp::ProductImpl::getPythonProductVersion
int getPythonProductVersion() const
Ax1.h
Geom::CoordSpace::WCS
@ WCS
OpenLxApp::ProductImpl::isRegisteredProperty
bool isRegisteredProperty(const std::string &aName) const
Product.h
OpenLxApp::ProductImpl::getPropertyEnum
std::shared_ptr< PropertyEnum > getPropertyEnum(const std::string &aName) const
OpenLxApp::ProductImpl::getPropertyString
std::shared_ptr< PropertyString > getPropertyString(const std::string &aName) const
OpenLxApp::ProductImpl::setReflectiveColor
void setReflectiveColor(const Base::Color &aCol)
OpenLxApp::ProductImpl::setVisible
void setVisible(bool onoff)
Core::DocObjectObserverMsg
Definition: DocObjectObserver.h:9
Geom::Vec
Defines a non-persistent vector in 3D space.
Definition: Vec.h:41
Base::GlobalId
Definition: GlobalId.h:28
OpenLxApp::ProductImpl::translateAfterScaled
void translateAfterScaled(const Geom::Vec &aVec, const Geom::Pnt &aScaleBasePnt)
Core::StandardManipulatorPolicy::HIGHLIGHT
@ HIGHLIGHT
Definition: StandardManipulatorPolicy.h:25
Core::Variant::toString
Base::String toString(bool *ok=0) const
Core::getCurrentScriptFilePath
LX_CORE_EXPORT Base::String getCurrentScriptFilePath()
OpenLxApp::ProductImpl::getBoundingBox
Geom::Bnd_Box getBoundingBox() const
OpenLxApp::ProductImpl::getPropertyBool
std::shared_ptr< PropertyBool > getPropertyBool(const std::string &aName) const
Core::StandardManipulatorPolicy::TRANSLATEZENABLEDH
@ TRANSLATEZENABLEDH
Definition: StandardManipulatorPolicy.h:24
OpenLxApp::ProductImpl::getProperty
std::shared_ptr< OpenLxApp::Property > getProperty(const std::string &aName) const
OpenLxApp::ProductImpl::setStandardManipulatorPolicy
void setStandardManipulatorPolicy(const Core::StandardManipulatorPolicy &aPolicy)
Core::DocObjectObserverMsg::msgId
MessageId msgId
Definition: DocObjectObserver.h:17
Base::StringTool::toString
static Base::String toString(const T &t)
Definition: StringTool.h:58
OpenLxApp::ProductImpl::getGeometryToWorldTransform
Geom::Trsf getGeometryToWorldTransform() const
Core::StandardManipulatorPolicy
Definition: StandardManipulatorPolicy.h:8
OpenLxApp::ProductImpl::translate
void translate(const Geom::Vec &aVec, Geom::CoordSpace aCoordSpace=Geom::CoordSpace::WCS)
OpenLxApp::Property::Editable
Editable
Definition: Property.h:36
OpenLxApp::ProductImpl::getPropertyInteger
std::shared_ptr< PropertyInteger > getPropertyInteger(const std::string &aName) const
OpenLxApp::ProductImpl::onChange
void onChange(std::shared_ptr< T > aObject, Core::DocObject *aCaller, const Core::DocObjectObserverMsg &aReason)
Definition: ProductImpl.h:290
Geom::Ax1
Definition: Ax1.h:50
PropertyDescriptor.h
pConstShape
std::shared_ptr< Topo::Shape const > pConstShape
Definition: Variant.h:65
DocObjectObserver.h
Core::DocObjectObserverMsg::MessageId::Scaling
@ Scaling
OpenLxApp::ProductImpl::setDrawStyle
void setDrawStyle(const Draw::DrawStyle &ds)
Geom::Dir
Definition: Dir.h:45
Core::StandardManipulatorPolicy::TRANSLATEXENABLED
@ TRANSLATEXENABLED
Definition: StandardManipulatorPolicy.h:20
Core::Variant::toVector
Geom::Vec toVector(bool *ok=0) const
Core::PythonClassObject::registerClass
static bool registerClass(PythonClassObject *aClassObject)
Core::DocObjectObserverMsg::value2
Core::Variant value2
Definition: DocObjectObserver.h:19
OpenLxApp::ProductImpl::setShininess
void setShininess(int aVal)
Core::DocObject
Definition: DocObject.h:54
OpenLxApp::ProductImpl::setDiffuseColor
void setDiffuseColor(const Base::Color &aCol)
Core::PythonClassObject::getRegisteredClass
static PythonClassObject * getRegisteredClass(const Base::GlobalId &aClassId)
Property.h
OpenLxApp::ProductImpl::~ProductImpl
~ProductImpl(void)
OpenLxApp::ProductImpl::getGeometry
std::shared_ptr< Geometry > getGeometry() const
PythonScriptObject.h
Core::DocObjectObserverMsg::value1
Core::Variant value1
Definition: DocObjectObserver.h:18
OpenLxApp::ProductImpl::registerPropertyString
std::shared_ptr< PropertyString > registerPropertyString(const std::string &aName, const Base::String &aDefaultValue, Property::Visible aVisible=Property::VISIBLE, Property::Editable aEditable=Property::EDITABLE, int aTranslationId=-1)
OpenLxApp::ProductImpl::registerPropertyEnum
std::shared_ptr< PropertyEnum > registerPropertyEnum(const std::string &aName, int aDefaultValue, Property::Visible aVisible=Property::VISIBLE, Property::Editable aEditable=Property::EDITABLE, int aTranslationId=-1)
OpenLxApp::ProductImpl::setLengthAndCrossTexture
void setLengthAndCrossTexture(const Draw::Texture2 &lengthTexture, const Draw::Texture2 &crossTexture, const Draw::Texture2Transform &lengthTextureTrsf=Draw::Texture2Transform(), const Draw::Texture2Transform &crossTextureTrsf=Draw::Texture2Transform())
Geom::Pnt
Defines a non-persistent 3D Cartesian point.
Definition: Pnt.h:44
PropertySet.h
Geom::Ax2
Definition: Ax2.h:66
OpenLxApp::ProductImpl::getDrawStyle
Draw::DrawStyle getDrawStyle() const
OpenLxApp::ProductImpl::getLocalToWorldTransform
Geom::Trsf getLocalToWorldTransform() const
Geom::CoordSpace
CoordSpace
Definition: GeomEnums.h:6
Core::CoreApplication::instance
static CoreApplication * instance(void)
Returns the Singleton.
Core::getCurrentScriptId
LX_CORE_EXPORT Base::GlobalId getCurrentScriptId()
OpenLxApp::ProductImpl::getLocalShape
pConstShape getLocalShape() const
Core::PythonScriptObject::getRegisteredScript
static PythonScriptObject * getRegisteredScript(const Base::GlobalId &aScriptPath)
Application.h
OpenLxApp::ProductImpl::registerPropertyDouble
std::shared_ptr< PropertyDouble > registerPropertyDouble(const std::string &aName, double aDefaultValue, Property::Visible aVisible=Property::VISIBLE, Property::Editable aEditable=Property::EDITABLE, int aTranslationId=-1)
OpenLxApp::ProductImpl::setPropertyHeader
void setPropertyHeader(const Base::String &aDefaultName, int aTranslationId)
Core::StandardManipulatorPolicy::TRANSLATEZENABLEDL
@ TRANSLATEZENABLEDL
Definition: StandardManipulatorPolicy.h:22
OpenLxApp::ProductImpl::registerPropertyButton
std::shared_ptr< PropertyButton > registerPropertyButton(const std::string &aName, Property::Visible aVisible=Property::VISIBLE, Property::Editable aEditable=Property::EDITABLE, int aTranslationId=-1)
OpenLxApp::ProductImpl::setSpecularColor
void setSpecularColor(const Base::Color &aCol)
OpenLxApp::ProductImpl::setGeometry
virtual bool setGeometry(std::shared_ptr< Geometry > geo)
OpenLxApp::ProductImpl::getPositionNb
long getPositionNb() const
OpenLxApp::ProductImpl::getDocument
std::shared_ptr< Document > getDocument() const
Core::Variant::toPoint
Geom::Pnt toPoint(bool *ok=0) const
OpenLxApp::ProductImpl::setPropertyGroupName
void setPropertyGroupName(const Base::String &aDefaultName, int aTranslationId)
OpenLxApp::ProductImpl::getPropertyDouble
std::shared_ptr< PropertyDouble > getPropertyDouble(const std::string &aName) const
Core::StandardManipulatorPolicy::SHOWBBOX
@ SHOWBBOX
Definition: StandardManipulatorPolicy.h:11
OpenLxApp::ProductImpl::getPropertyUser
std::vector< std::shared_ptr< PropertyUser > > getPropertyUser() const
Bnd_Box.h
Base::StringTool::toStlString
static std::string toStlString(const T &t)
Definition: StringTool.h:16
OpenLxApp::Property::Visible
Visible
Definition: Property.h:30
Core::CoreDocument::createObject
T * createObject()
Definition: CoreDocument.h:538
OpenLxApp::ProductImpl::getLocalPlacement
Geom::Ax2 getLocalPlacement() const
OpenLxApp::ProductImpl::getOglMaterial
Draw::OglMaterial getOglMaterial() const
StandardManipulatorPolicy.h
OpenLxApp::ProductImpl::registerPropertyColor
std::shared_ptr< PropertyColor > registerPropertyColor(const std::string &aName, const Base::Color &aDefaultValue, Property::Visible aVisible=Property::VISIBLE, Property::Editable aEditable=Property::EDITABLE, int aTranslationId=-1)
OpenLxApp::ProductImpl
ProductImpl implements the Product behavior of an object. This is used in Product and SubElement.
Definition: ProductImpl.h:41
Core::DocObjectObserverMsg::MessageId::PropertyChanged
@ PropertyChanged
OpenLxApp::ProductImpl::getPropertyButton
std::shared_ptr< PropertyButton > getPropertyButton(const std::string &aName) const
Base::Message
LX_BASE_EXPORT Base::MessageBase & Message()
Definition: Message.h:153
Core::PythonScriptObject
Definition: PythonScriptObject.h:11
OpenLxApp::ProductImpl::getTransform
Geom::Trsf getTransform() const
OpenLxApp::ProductImpl::getPropertyMap
std::map< std::string, std::shared_ptr< Property > > getPropertyMap() const
OpenLxApp::ProductImpl::ProductImpl
ProductImpl(App::Product *aProduct)
OpenLxApp::ProductImpl::getPropertyColor
std::shared_ptr< PropertyColor > getPropertyColor(const std::string &aName) const
Geom::Trsf
Definition: Trsf.h:58
OpenLxApp::ProductImpl::setAmbientColor
void setAmbientColor(const Base::Color &aCol)
Base::String
A Utf-16 (windows) or ucs4 (unix) encoded string class.
Definition: String.h:18
Ax2.h
OpenLxApp::Property::VISIBLE
@ VISIBLE
Definition: Property.h:32
Exception.h
OpenLxApp::ProductImpl::getLocalAxes
bool getLocalAxes(Geom::Ax2 &localAxes)
OpenLxApp::Property::EDITABLE
@ EDITABLE
Definition: Property.h:38
OpenLxApp::ProductImpl::setPositionNb
void setPositionNb(long value)
Dir.h
Object.h
OpenLxApp::ProductImpl::registerPropertyBool
std::shared_ptr< PropertyBool > registerPropertyBool(const std::string &aName, bool aDefaultValue, Property::Visible aVisible=Property::VISIBLE, Property::Editable aEditable=Property::EDITABLE, int aTranslationId=-1)
Geometry.h
OpenLxApp::ProductImpl::setLineWidth
void setLineWidth(float width)
Geom::Precision::linear_Resolution
static constexpr double linear_Resolution()
Definition: Precision.h:23
OpenLxApp::ProductImpl::isVisible
bool isVisible() const
OpenLxApp::ProductImpl::setTransparency
void setTransparency(int aVal)
Core_Interface.h
OpenLxApp::ProductImpl::setTexture
void setTexture(const Draw::Texture2 &tex, int faceIndex=-1)