File size: 5,615 Bytes
985c397
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
/***************************************************************************
 *   Copyright (c) 2019 WandererFan <wandererfan@gmail.com>                *
 *                                                                         *
 *   This file is part of the FreeCAD CAx development system.              *
 *                                                                         *
 *   This library is free software; you can redistribute it and/or         *
 *   modify it under the terms of the GNU Library General Public           *
 *   License as published by the Free Software Foundation; either          *
 *   version 2 of the License, or (at your option) any later version.      *
 *                                                                         *
 *   This library  is distributed in the hope that it will be useful,      *
 *   but WITHOUT ANY WARRANTY; without even the implied warranty of        *
 *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *
 *   GNU Library General Public License for more details.                  *
 *                                                                         *
 *   You should have received a copy of the GNU Library General Public     *
 *   License along with this library; see the file COPYING.LIB. If not,    *
 *   write to the Free Software Foundation, Inc., 59 Temple Place,         *
 *   Suite 330, Boston, MA  02111-1307, USA                                *
 *                                                                         *
 ***************************************************************************/

#ifndef TECHDRAW_COSMETICEXTENSION_H
#define TECHDRAW_COSMETICEXTENSION_H

#include <App/DocumentObjectExtension.h>
#include <App/ExtensionPython.h>
#include <Base/Vector3D.h>
#include <Mod/TechDraw/TechDrawGlobal.h>

#include "Geometry.h"
#include "PropertyCenterLineList.h"
#include "PropertyCosmeticEdgeList.h"
#include "PropertyCosmeticVertexList.h"
#include "PropertyGeomFormatList.h"


namespace TechDraw {
class DrawViewPart;
class GeometryObject;

class TechDrawExport CosmeticExtension : public App::DocumentObjectExtension {
    EXTENSION_PROPERTY_HEADER_WITH_OVERRIDE(TechDraw::CosmeticObject);

public:
    CosmeticExtension();
    ~CosmeticExtension() override;

    TechDraw::PropertyCosmeticVertexList CosmeticVertexes;
    TechDraw::PropertyCosmeticEdgeList   CosmeticEdges;
    TechDraw::PropertyCenterLineList     CenterLines;
    TechDraw::PropertyGeomFormatList     GeomFormats;          //formats for geometric edges

    virtual CosmeticVertex* getCosmeticVertexBySelection(const int i) const;
    virtual CosmeticVertex* getCosmeticVertexBySelection(const std::string& name) const;
    virtual CosmeticVertex* getCosmeticVertex(const std::string& tag) const;
    virtual int             add1CVToGV(const std::string& tag);
    virtual int             getCVIndex(const std::string& tag);
    virtual std::string     addCosmeticVertex(const Base::Vector3d& pos, bool invert = true);
    virtual void            addCosmeticVertexesToGeom();
    virtual void            clearCosmeticVertexes();
    virtual void            refreshCVGeoms();
    virtual void            removeCosmeticVertex(const std::string& tag);
    virtual void            removeCosmeticVertex(const std::vector<std::string>& tags);

    virtual std::string     addCosmeticEdge(Base::Vector3d start, Base::Vector3d end);
    virtual std::string     addCosmeticEdge(TechDraw::BaseGeomPtr bg);
    virtual CosmeticEdge*   getCosmeticEdgeBySelection(const std::string& name) const;
    virtual CosmeticEdge*   getCosmeticEdgeBySelection(int i) const;
    virtual CosmeticEdge*   getCosmeticEdge(const std::string& id) const;
    virtual void            removeCosmeticEdge(const std::string& tag);
    virtual void            removeCosmeticEdge(const std::vector<std::string>& delTags);
    virtual void            clearCosmeticEdges();
    virtual int             add1CEToGE(const std::string& tag);
    virtual void            addCosmeticEdgesToGeom();
    virtual void            refreshCEGeoms();

    virtual void refreshCLGeoms();
    virtual void addCenterLinesToGeom();
    virtual int add1CLToGE(const std::string &tag);
    virtual std::string     addCenterLine(Base::Vector3d start, Base::Vector3d end);
    virtual std::string     addCenterLine(TechDraw::CenterLine* cl);
    virtual std::string     addCenterLine(TechDraw::BaseGeomPtr bg);
    virtual CenterLine*     getCenterLineBySelection(const std::string& name) const;
    virtual CenterLine*     getCenterLineBySelection(int i) const;
    virtual CenterLine*     getCenterLine(const std::string& tag) const;
    virtual void            removeCenterLine(const std::string& tag);
    virtual void            removeCenterLine(const std::vector<std::string>& delTags);
    virtual void            clearCenterLines();

    virtual std::string     addGeomFormat(TechDraw::GeomFormat* gf);
    virtual GeomFormat*     getGeomFormatBySelection(const std::string& name) const;
    virtual GeomFormat*     getGeomFormatBySelection(int i) const;
    virtual GeomFormat*     getGeomFormat(const std::string& id) const;
    virtual void            removeGeomFormat(const std::string& tag);
    virtual void            clearGeomFormats();

    void deleteCosmeticElements(std::vector<std::string> removables);

    TechDraw::DrawViewPart* getOwner();

    PyObject* getExtensionPyObject() override;

private:

};

using CosmeticExtensionPython = App::ExtensionPythonT<CosmeticExtension>;

} //end namespace TechDraw

#endif //TECHDRAW_COSMETICEXTENSION_H