Skip to content

Commit 0e3ae3c

Browse files
Add files via upload
1 parent 1eb176f commit 0e3ae3c

File tree

3 files changed

+92
-37
lines changed

3 files changed

+92
-37
lines changed

GrasshopperSyntax/Grasshopper.py

Lines changed: 78 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
1-
# Grasshopper Module Version 0.0.1.5
1+
# Grasshopper Module Version 0.0.1.7
2+
# Developed by Mahmoud Abdelrahman
23

34
"""
45
This Module is part of GH_CPython
@@ -16,12 +17,6 @@
1617
version = sys.version_info[0]
1718

1819

19-
class Doc:
20-
def __init__(self):
21-
self.DisplayName = "gCPy.Doc(DocDisplayName)"
22-
self.FilePath = "gCPy.Doc(DocFilePath)"
23-
24-
2520
class Line:
2621
def __init__(self, *args):
2722
"""Adds new line using two input points, or two input lists or 6 input doubles
@@ -30,29 +25,19 @@ def __init__(self, *args):
3025
"""
3126
if len(args) == 2:
3227
if isinstance(args[0], Point) and isinstance(args[1], Point):
33-
print "2 Point Instances"
3428
self.X1 = args[0].X
3529
self.Y1 = args[0].Y
36-
self.Z1 = args[0].Z
37-
self.X2 = args[1].X
30+
self.Z1 = args[0].X
31+
self.X2 = args[1].Z
3832
self.Y2 = args[1].Y
3933
self.Z2 = args[1].Z
40-
elif isinstance(args[0], list) and isinstance(args[1], list) and args[0][0] != '<Point>' and args[1][0] != '<Point>':
41-
print "2 List Instances"
34+
elif isinstance(args[0], list) and isinstance(args[1], list):
4235
self.X1 = args[0][0]
4336
self.Y1 = args[0][1]
4437
self.Z1 = args[0][2]
4538
self.X2 = args[1][0]
4639
self.Y2 = args[1][1]
4740
self.Z2 = args[1][2]
48-
elif isinstance(args[0], list) and isinstance(args[1], list) and args[0][0] == '<Point>' and args[1][0] == '<Point>':
49-
print "2 List Instances of type 2"
50-
self.X1 = args[0][1]
51-
self.Y1 = args[0][2]
52-
self.Z1 = args[0][3]
53-
self.X2 = args[1][1]
54-
self.Y2 = args[1][2]
55-
self.Z2 = args[1][3]
5641
elif version == 2:
5742
if isinstance(args[0], basestring) and isinstance(args[1], basestring):
5843
pointa = Point(args[0])
@@ -81,8 +66,19 @@ def __init__(self, *args):
8166
self.Y2 = args[4]
8267
self.Z2 = args[5]
8368

69+
'''def addLine(self):
70+
return "gCPy.Line(" + str(self.X1) + ", " \
71+
+ str(self.Y1) + ", " \
72+
+ str(self.Z1) + ", " \
73+
+ str(self.X2) + ", " \
74+
+ str(self.Y2) + ", " \
75+
+ str(self.Z2) + ")"'''
76+
8477
def addLine(self):
85-
return ['<Line>',self.X1, self.Y1, self.Z1, self.X2, self.Y2, self.Z2, '<Line>']
78+
return ["<Line>", self.X1, self.Y1, self.Z1, self.X2, self.Y2, self.Z2]
79+
80+
def __repr__(self):
81+
return str(["<Line>",self.X1,self.Y1,self.Z1,self.X2,self.Y2,self.Z2,"</line>"])
8682

8783
def length(self):
8884
return ((self.X2 - self.X1) ** 2 + (self.Y2 - self.Y1) ** 2 + (self.Z2 - self.Z1) ** 2) ** 0.5
@@ -92,11 +88,15 @@ def pointOnLine(self, parameter=0.5):
9288
(self.Y2 - self.Y1) * parameter + self.Y1, \
9389
(self.Z2 - self.Z1) * parameter + self.Z1)
9490

95-
def __repr__(self):
96-
return ['<Line>',self.X1, self.Y1, self.Z1, self.X2, self.Y2, self.Z2, '</Line>']
97-
9891
def __str__(self):
99-
return str(['<Line>',self.X1, self.Y1, self.Z1, self.X2, self.Y2, self.Z2, '</Line>'])
92+
return str(["<Line>", self.X1, self.Y1, self.Z1, self.X2, self.Y2, self.Z2, "</Line>"])
93+
94+
allLines = []
95+
for i in range(200):
96+
l = Line(i, i+1, i+2, i-1, i-2, i-5)
97+
allLines.append(l)
98+
99+
print allLines[5]
100100

101101

102102
class Point:
@@ -120,6 +120,15 @@ def __init__(self, x=0., y=0., z=0.):
120120
self.X = x[0]
121121
self.Y = x[1]
122122
self.Z = x[2]
123+
elif isinstance(x, basestring):
124+
new_vars = []
125+
x = x.replace("gCPy.Point(", "").replace(")", "").lstrip().rstrip()
126+
variables = x.split(",")
127+
for i in variables:
128+
new_vars.append(float(i))
129+
self.X = new_vars[0]
130+
self.Y = new_vars[1]
131+
self.Z = new_vars[2]
123132
else:
124133
self.X = x
125134
self.Y = y
@@ -129,17 +138,54 @@ def __init__(self, x=0., y=0., z=0.):
129138
self.X = x[0]
130139
self.Y = x[1]
131140
self.Z = x[2]
141+
elif isinstance(x, str):
142+
new_vars = []
143+
x = x.replace("gCPy.Point(", "").replace(")", "").lstrip().rstrip()
144+
variables = x.split(",")
145+
for i in variables:
146+
new_vars.append(float(i))
147+
self.X = new_vars[0]
148+
self.Y = new_vars[1]
149+
self.Z = new_vars[2]
132150
else:
133151
self.X = x
134152
self.Y = y
135153
self.Z = z
136-
self.addPoint = ['<Point>', x, y, z, '</Point>']
154+
self.addPoint = "gCPy.Point(" + str(x) + "," + str(y) + "," + str(z) + ")"
137155

138156
def __repr__(self):
139-
return ['<Point>', self.X, self.Y, self.Z, '</Point>']
157+
return "gCPy.Point(" + str(self.X) + "," + str(self.Y) + "," + str(self.Z) + ")"
140158

141159
def __str__(self):
142-
return str(['<Point>', self.X, self.Y, self.Z, '</Point>'])
160+
return "gCPy.Point(" + str(self.X) + "," + str(self.Y) + "," + str(self.Z) + ")"
161+
162+
163+
class Surface:
164+
def __init__(self, *args):
165+
if len(args) == 4:
166+
if isinstance(args[0], Point) and isinstance(args[1], Point) and isinstance(args[2], Point) and isinstance(args[3], Point):
167+
self.P1 = args[0]
168+
self.P2 = args[1]
169+
self.P3 = args[2]
170+
self.P4 = args[3]
171+
self.addSurface = "gCPy.Surface("+ str(args[0].X) + "," \
172+
+ str(args[0].Y) + "," \
173+
+ str(args[0].Z) + "," \
174+
+ str(args[1].X) + "," \
175+
+ str(args[1].Y) + "," \
176+
+ str(args[1].Z) + "," \
177+
+ str(args[2].X) + "," \
178+
+ str(args[2].Y) + "," \
179+
+ str(args[2].Z) + "," \
180+
+ str(args[3].X) + "," \
181+
+ str(args[3].Y) + "," \
182+
+ str(args[3].Z) + "," \
183+
+ ")"
184+
elif len(args) == 2:
185+
if isinstance(args[0],Line) and isinstance(args[1], Line):
186+
pass
187+
else:
188+
print("you have to create surface from 4 points")
143189

144190

145191
########################### DEFINE METHODS ################################
@@ -160,19 +206,18 @@ def addLine(*args):
160206

161207
def addPoint(*args):
162208
"""
163-
164209
:param args:
165210
:return:
166211
"""
167212
if len(args) == 1:
168213
return Point(args[0])
169214
elif len(args) == 3:
170-
return Point(args[0], args[1], args[2]).addPoint
215+
return Point(args[0], args[1], args[2])
171216

172217

173-
##################################vars#################################
218+
def addSurface(*args):
219+
return Surface(args[0], args[1], args[2], args[3]).addSurface
174220

175-
doc = Doc();
176221

177222
if __name__ == '__main__':
178-
print __name__
223+
print(__name__)

GrasshopperSyntax/Grasshopper02.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -173,8 +173,7 @@ def __init__(self, *args):
173173
elif args[1] == 'AddCurve': self.repr = ['<Curve>', 'AddCurve' , args[2], args[3], args[4]]
174174
elif args[1] == 'AddEllipse': self.repr = ['<Curve>', 'AddEllipse' , args[2], args[3], args[4], args[5]]
175175
elif args[1] == 'AddEllipse3Pt':self.repr = ['<Curve>', 'AddEllipse3Pt' , args[2], args[3], args[4], args[5]]
176-
elif args[1] == 'AddFilletCurve':
177-
pass
176+
elif args[1] == 'AddFilletCurve': self.repr=['<Curve>','AddFilletCurve' , args[2], args[3], args[4], args[5], args[6], args[7]]
178177
elif args[1] == 'AddInterpCrvOnSrf':
179178
pass
180179
elif args[1] == 'AddInterpCrvOnSrfUV':

GrasshopperSyntax/curve.py

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -201,8 +201,19 @@ def AddFilletCurve(curve0id, curve1id, radius=1.0, base_point0=None, base_point1
201201
Returns:
202202
id of the new curve object if successful
203203
"""
204-
205-
return rc
204+
if not isinstance(curve0id, gh.Curve) or not isinstance(curve1id, gh.Curve):
205+
raise Exception("curve0id and curve1id should be instances of gh.Curve")
206+
elif not isinstance(radius, float):
207+
raise Exception("radius should be a float number")
208+
elif base_point0 != None:
209+
if not isinstance(base_point0, gh.Point):
210+
raise Exception("base_point0 should be an instance of gh.Point or None")
211+
elif base_point1 != None:
212+
if not isinstance(base_point1, gh.Point):
213+
raise Exception("base_point1 shoule be an instance of gh.Point or None")
214+
else:
215+
rc = gh.Curve('<Curve>','AddFilletCurve', curve0id, curve1id, radius, base_point0, base_point1, '</Curve>')
216+
return rc
206217

207218

208219
def AddInterpCrvOnSrf(surface_id, points):

0 commit comments

Comments
 (0)