18 #ifndef _GAZEBO_GUI_MODEL_MODELCREATOR_HH_ 19 #define _GAZEBO_GUI_MODEL_MODELCREATOR_HH_ 25 #include <ignition/math/Pose3.hh> 26 #include <ignition/math/Vector3.hh> 48 class ModelPluginData;
49 class NestedModelData;
52 class ModelCreatorPrivate;
107 public:
void SetModelName(
const std::string &_modelName);
111 public: std::string ModelName()
const;
114 public:
void ModelChanged();
117 public:
void SaveModelFiles();
120 public:
void FinishModel();
128 public:
void AddCustomLink(
const EntityType _type,
129 const ignition::math::Vector3d &_size = ignition::math::Vector3d::One,
130 const ignition::math::Pose3d &_pose = ignition::math::Pose3d::Zero,
131 const std::string &_uri =
"",
const unsigned int _samples = 5);
141 const ignition::math::Vector3d &_size = ignition::math::Vector3d::One,
142 const ignition::math::Pose3d &_pose = ignition::math::Pose3d::Zero,
143 const std::string &_uri =
"",
const unsigned int _samples = 5);
152 public:
void AddJoint(
const std::string &_type);
156 public:
void RemoveEntity(
const std::string &_entityName);
160 public:
void RemoveModelPlugin(
const std::string &_pluginName);
164 public:
void SetStatic(
const bool _static);
168 public:
void SetAutoDisable(
const bool _auto);
171 public:
void Reset();
183 public:
void SetSelected(
const std::string &_name,
const bool selected);
189 const bool selected);
193 public:
enum SaveState CurrentSaveState()
const;
197 public:
void AddEntity(
const sdf::ElementPtr &_sdf);
207 public:
void OnAddModelPlugin(
const std::string &_name,
208 const std::string &_filename,
const std::string &_innerxml);
212 public:
void AddModelPlugin(
const sdf::ElementPtr &_pluginElem);
220 public:
void GenerateSDF();
224 public slots:
void ShowCollisions(
const bool _show);
228 public slots:
void ShowVisuals(
const bool _show);
232 public slots:
void ShowLinkFrames(
const bool _show);
237 private: sdf::ElementPtr GenerateLinkSDF(
LinkData *_link);
240 private:
void OnNew();
244 private:
bool OnSave();
248 private:
bool OnSaveAs();
253 private:
void OnNameChanged(
const std::string &_modelName);
258 private:
void OnPropertiesChanged(
const bool _static,
259 const bool _autoDisable);
262 private:
void OnExit();
265 private:
void Update();
270 private:
void RemoveNestedModelImpl(
const std::string &_nestedModelName);
275 private:
void RemoveLinkImpl(
const std::string &_linkName);
279 private slots:
void OnEdit(
const bool _checked);
283 private slots:
void OnEditModel(
const std::string &_modelName);
286 private slots:
void OnCopy();
289 private slots:
void OnPaste();
318 private:
void OnManipMode(
const std::string &_mode);
323 private:
void OnDeselectAll(
const std::string &_name,
324 const std::string &_mode);
330 private:
void OnSetSelectedEntity(
const std::string &_name,
331 const bool _selected);
337 private:
void OnSetSelectedModelPlugin(
const std::string &_name,
338 const bool _selected);
351 private:
NestedModelData *CloneNestedModel(
const std::string &_modelName);
356 private:
LinkData *CloneLink(
const std::string &_linkName);
363 private:
LinkData *CreateLinkFromSDF(
const sdf::ElementPtr &_linkElem,
368 private:
void OpenInspector(
const std::string &_name);
372 private:
void OpenModelPluginInspector(
const std::string &_name);
375 private:
virtual void CreateTheEntity();
378 private:
bool Init();
382 private: std::string CreateModel();
392 private:
NestedModelData *CreateModelFromSDF(
const sdf::ElementPtr &_sdf,
394 const bool _emit =
true);
403 private:
void OnAlignMode(
const std::string &_axis,
404 const std::string &_config,
const std::string &_target,
405 const bool _preview,
const bool _inverted =
false);
410 private:
void OnEntityScaleChanged(
const std::string &_name,
415 private:
void DeselectAll();
418 private:
void DeselectAllEntities();
421 private:
void DeselectAllModelPlugins();
427 private:
void SetModelVisible(
const std::string &_name,
428 const bool _visible);
435 const bool _visible);
439 private:
void ShowContextMenu(
const std::string &_link);
443 private:
void ShowModelPluginContextMenu(
const std::string &_name);
447 private:
void EmitNestedModelInsertedEvent(
452 private slots:
void OnDelete();
456 private slots:
void OnDelete(
const std::string &_name);
459 private slots:
void OnOpenInspector();
463 private slots:
void OnOpenModelPluginInspector(
const QString &_name);
467 private slots:
void OnRemoveModelPlugin(
const QString &_name);
470 Q_SIGNALS:
void LinkAdded();
474 private: std::unique_ptr<ModelCreatorPrivate> dataPtr;
Extruded polyline.
Definition: ModelCreator.hh:79
none
Definition: ModelCreator.hh:69
EntityType
Definition: ModelCreator.hh:66
Generic description of a mouse event.
Definition: MouseEvent.hh:35
Forward declarations for the common classes.
Definition: Animation.hh:33
The Vector3 class represents the generic vector containing 3 elements.
Definition: Vector3.hh:39
Generic description of a keyboard event.
Definition: KeyEvent.hh:32
Sphere.
Definition: ModelCreator.hh:73
Cylinder.
Definition: ModelCreator.hh:75
Helper class to store nested models data.
Definition: ModelData.hh:57
Create and manage 3D visuals of a model with links, nested models and joints.
Definition: ModelCreator.hh:60
Box.
Definition: ModelCreator.hh:71
Handles the creation of joints in the model editor.
Definition: JointMaker.hh:77
The model has never been saved.
Definition: ModelCreator.hh:89
SaveState
Save states for the model editor.
Definition: ModelCreator.hh:86
Helper class to store model plugin data.
Definition: ModelData.hh:277
Helper class to store link data.
Definition: ModelData.hh:90
Imported 3D mesh.
Definition: ModelCreator.hh:77
#define NULL
Definition: CommonTypes.hh:31
All changes have been saved.
Definition: ModelCreator.hh:92
std::shared_ptr< Visual > VisualPtr
Definition: RenderTypes.hh:112
GAZEBO_VISIBLE void Init(google::protobuf::Message &_message, const std::string &_id="")
Initialize a message.
A plugin with access to physics::Model.
Definition: Plugin.hh:245