1 # -*- coding: iso-8859-1 -*-
3 # Copyright (C) 2007-2015 CEA/DEN, EDF R&D, OPEN CASCADE
5 # This library is free software; you can redistribute it and/or
6 # modify it under the terms of the GNU Lesser General Public
7 # License as published by the Free Software Foundation; either
8 # version 2.1 of the License, or (at your option) any later version.
10 # This library is distributed in the hope that it will be useful,
11 # but WITHOUT ANY WARRANTY; without even the implied warranty of
12 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 # Lesser General Public License for more details.
15 # You should have received a copy of the GNU Lesser General Public
16 # License along with this library; if not, write to the Free Software
17 # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
19 # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
22 ## \defgroup simplesketcher sketcher - Simplified sketcher API
25 # This module provides simplified access to the 2D sketcher functionality of Geometry module.
27 # \note This module is deprecated, refer to \ref gsketcher for more details
31 This module provides the user with a simple python API to realize
32 various sketches from the GEOM text user interface.
36 from salome.geom.sketcher import Sketcher
39 mysketcher = Sketcher()
40 mysketcher.startAtPoint(0,0)
41 mysketcher.translateToPoint(100,0)
42 mysketcher.translateWithAngleAndLength(30,100)
43 mysketcher.intersectYWithAngle(15,100)
47 wire = mysketcher.getGeomWire()
50 from salome.geom import geomBuilder
51 geompy = geomBuilder.New(salome.myStudy)
52 geompy.addToStudy( wire, 'mysketch' )
54 Additionnal examples can be found as unit tests in the source code.
59 from salome.kernel.deprecation import is_called_by_sphinx
60 if not is_called_by_sphinx():
64 from salome.geom import geomBuilder
65 geompy = geomBuilder.New(salome.myStudy)
73 # \ingroup simplesketcher
81 self.__sketch = "Sketcher:"
83 def startAtPoint(self,x=0,y=0):
84 self.__sketch = "Sketcher:F "+str(x)+" "+str(y)
85 # the data x and y are registered to process the ending closure.
89 def translateToPoint(self,x=10,y=0):
90 '''segment->point->absolute'''
91 self.__sketch = self.__sketch + ":TT "+str(x)+" "+str(y)
93 def translateWithVector(self,deltax=10,deltay=0):
94 '''segment->point->relative'''
95 self.__sketch = self.__sketch + ":T "+str(deltax)+" "+str(deltay)
97 #def translateToSelection(self,vertex):
98 # '''segment->point->selection'''
99 # self.__sketch = self.__sketch + ":T "+str(deltax)+" "+str(deltay)
101 def translateWithAngleAndLength(self,angle=30,length=100):
102 '''segment->direction->angle+length'''
103 self.__sketch = self.__sketch + ":R "+str(angle)+":L "+str(length)
105 def intersectXWithAngle(self,angle=30,x=100):
106 '''segment->direction->angle+length'''
107 self.__sketch = self.__sketch + ":R "+str(angle)+":IX "+str(x)
109 def intersectYWithAngle(self,angle=30,y=100):
110 '''segment->direction->angle+length'''
111 self.__sketch = self.__sketch + ":R "+str(angle)+":IY "+str(y)
115 add a segment to reach the starting point and get a closed wire.
117 self.__sketch = self.__sketch + ":WW"
122 def getGeomWire(self):
125 wire = geompy.MakeSketcher(self.__sketch, [0, 0, 0, 0, 0, 1, 1, 0, -0])
128 # ===============================================================
129 # Use cases and unit tests
130 # ===============================================================
133 mysketcher = Sketcher()
135 mysketcher.startAtPoint(1.234,4.321)
136 mysketcher.translateToPoint(2.234,5.321)
138 expectedResult = "Sketcher:F 1.234 4.321:TT 2.234 5.321"
139 result = mysketcher.toString()
140 print "sketcher=",mysketcher.toString()
141 if result == expectedResult:
146 def TEST_usingGeom():
147 mysketcher = Sketcher()
148 mysketcher.startAtPoint(0,0)
149 mysketcher.translateToPoint(100,0)
150 mysketcher.translateWithAngleAndLength(30,100)
151 mysketcher.intersectYWithAngle(15,100)
153 wire = mysketcher.getGeomWire()
155 geompy.addToStudy( wire, "Sketch" )
158 if __name__ == "__main__":