18 #ifndef GAZEBO_GUI_MODEL_MODELCREATOR_HH_ 19 #define GAZEBO_GUI_MODEL_MODELCREATOR_HH_ 26 #include <ignition/math/Pose3.hh> 27 #include <ignition/math/Vector3.hh> 48 class ModelPluginData;
49 class NestedModelData;
52 class ModelCreatorPrivate;
106 public:
void EnableEventHandlers();
109 public:
void DisableEventHandlers();
113 public:
void SetModelName(
const std::string &_modelName);
117 public: std::string ModelName()
const;
120 public:
void ModelChanged();
124 public:
bool SaveModelFiles();
127 public:
void FinishModel();
135 public:
void AddCustomLink(
const EntityType _type,
136 const ignition::math::Vector3d &_size = ignition::math::Vector3d::One,
137 const ignition::math::Pose3d &_pose = ignition::math::Pose3d::Zero,
138 const std::string &_uri =
"",
const unsigned int _samples = 5);
148 const ignition::math::Vector3d &_size = ignition::math::Vector3d::One,
149 const ignition::math::Pose3d &_pose = ignition::math::Pose3d::Zero,
150 const std::string &_uri =
"",
const unsigned int _samples = 5);
159 public:
void AddJoint(
const std::string &_type);
163 public:
void RemoveEntity(
const std::string &_entityName);
169 public:
void RemoveModelPlugin(
const std::string &_pluginName,
170 const bool _newCmd =
true);
174 public:
void SetStatic(
const bool _static);
178 public:
void SetAutoDisable(
const bool _auto);
181 public:
void Reset();
193 public:
void SetSelected(
const std::string &_name,
const bool selected);
199 const bool selected);
203 public:
enum SaveState CurrentSaveState()
const;
207 public:
void AddEntity(
const sdf::ElementPtr &_sdf);
219 public:
void OnAddModelPlugin(
const std::string &_name,
220 const std::string &_filename,
const std::string &_innerxml,
221 const bool _newCmd =
true);
225 public:
void AddModelPlugin(
const sdf::ElementPtr &_pluginElem);
233 public:
void GenerateSDF();
237 public slots:
void ShowCollisions(
const bool _show);
241 public slots:
void ShowVisuals(
const bool _show);
245 public slots:
void ShowLinkFrames(
const bool _show);
251 public: ignition::math::Pose3d WorldToLocal(
252 const ignition::math::Pose3d &_world)
const;
257 private: sdf::ElementPtr GenerateLinkSDF(
LinkData *_link);
260 private:
void OnNew();
264 private:
bool OnSave();
268 private:
bool OnSaveAs();
273 private:
void OnNameChanged(
const std::string &_modelName);
278 private:
void OnPropertiesChanged(
const bool _static,
279 const bool _autoDisable);
282 private:
void OnExit();
287 private:
void RemoveNestedModelImpl(
const std::string &_nestedModelName);
292 private:
void RemoveLinkImpl(
const std::string &_linkName);
296 private slots:
void OnEdit(
const bool _checked);
300 private slots:
void OnEditModel(
const std::string &_modelName);
303 private slots:
void OnCopy();
306 private slots:
void OnPaste();
335 private:
void OnManipMode(
const std::string &_mode);
340 private:
void OnDeselectAll(
const std::string &_name,
341 const std::string &_mode);
347 private:
void OnSetSelectedEntity(
const std::string &_name,
348 const bool _selected);
354 private:
void OnSetSelectedModelPlugin(
const std::string &_name,
355 const bool _selected);
367 private:
void InsertLinkFromSDF(sdf::ElementPtr _sdf);
371 private:
void InsertNestedModelFromSDF(sdf::ElementPtr _sdf);
376 private:
NestedModelData *CloneNestedModel(
const std::string &_modelName);
381 private:
LinkData *CloneLink(
const std::string &_linkName);
388 private:
LinkData *CreateLinkFromSDF(
const sdf::ElementPtr &_linkElem,
393 private:
void OpenInspector(
const std::string &_name);
397 private:
void OpenModelPluginInspector(
const std::string &_name);
400 private:
virtual void CreateTheEntity();
403 private:
bool Init();
407 private: std::string CreateModel();
417 private:
NestedModelData *CreateModelFromSDF(
const sdf::ElementPtr &_sdf,
419 const bool _emit =
true);
428 private:
void OnAlignMode(
const std::string &_axis,
429 const std::string &_config,
const std::string &_target,
430 const bool _preview,
const bool _inverted =
false);
435 private:
void OnEntityScaleChanged(
const std::string &_name,
436 const ignition::math::Vector3d &_scale);
443 private:
void OnEntityMoved(
const std::string &_name,
444 const ignition::math::Pose3d &_pose,
const bool _isFinal);
448 private:
void DeselectAll();
451 private:
void DeselectAllEntities();
454 private:
void DeselectAllModelPlugins();
459 private:
void OnRequestLinkScale(
const std::string &_name,
460 const std::map<std::string, ignition::math::Vector3d> &_scales);
465 private:
void OnRequestLinkMove(
const std::string &_name,
466 const ignition::math::Pose3d &_pose);
471 private:
void OnRequestNestedModelMove(
const std::string &_name,
472 const ignition::math::Pose3d &_pose);
478 private:
void SetModelVisible(
const std::string &_name,
479 const bool _visible);
486 const bool _visible);
490 private:
void ShowContextMenu(
const std::string &_link);
494 private:
void ShowModelPluginContextMenu(
const std::string &_name);
498 private:
void EmitNestedModelInsertedEvent(
503 private slots:
void OnDelete();
507 private slots:
void OnDelete(
const std::string &_name);
510 private slots:
void OnOpenInspector();
514 private slots:
void OnOpenModelPluginInspector(
const QString &_name);
518 private slots:
void OnRemoveModelPlugin(
const QString &_name);
521 Q_SIGNALS:
void LinkAdded();
525 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:26
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:76
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:312
Helper class to store link data.
Definition: ModelData.hh:94
Imported 3D mesh.
Definition: ModelCreator.hh:77
gui
Definition: KeyEventHandler.hh:29
#define NULL
Definition: CommonTypes.hh:31
All changes have been saved.
Definition: ModelCreator.hh:92
std::shared_ptr< Visual > VisualPtr
Definition: RenderTypes.hh:114
GAZEBO_VISIBLE void Init(google::protobuf::Message &_message, const std::string &_id="")
Initialize a message.
common
Definition: FuelModelDatabase.hh:37
A plugin with access to physics::Model.
Definition: Plugin.hh:303