-
Notifications
You must be signed in to change notification settings - Fork 0
/
Neper_apdlgeom.py
95 lines (62 loc) · 2.53 KB
/
Neper_apdlgeom.py
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
"""
At the time of uploading this file, python3.8 is the version used.
when running this code, .geo file from neper should be in the same directory of this file.
P.S: output can take time depending on the number of tessellations and hardware utilised.
ex: generation of output text file takes less than 50 secs for 1,20,000 3D tessellations.
"""
import re
f1 = open ("example.geo",'r') # insert your .geo file name here
f2 = open ("output.txt",'w') # output filename -- prints all the apdl commands in the text file after runnning this script
st = f1.read()
pattern1 =re.compile(r'Point\s\((\d*)\)\s\=\s\{(-?\d*\.\d*\,-?\d*\.\d*\,-?\d*\.\d*)')
matches1 = pattern1.finditer(st)
count = 0
for match1 in matches1:
print("K,",match1.group(1),",",match1.group(2), file =f2)
count = count + 1
print ("C*** keypoint count = ",count, file = f2)
print ("C*** keypoint count = ",count)
count = 0
pattern2 = re.compile(r'Line\s\(\d*\)\s\=\s\{(\d*\,\d*)\}')
matches2 = pattern2.finditer(st)
for match2 in matches2:
count = count + 1
print("L,",match2.group(1)," ! ", count, file =f2)
print("C*** line count = ",count, file = f2)
print("C*** line count = ",count)
count = 0
pattern3 = re.compile(r'Line\sLoop.*\b')
matches3 = pattern3.finditer(st)
for match3 in matches3:
list3 = re.findall(r'-?(\d+)',match3.group(0))
list3.pop(0)
count = count + 1
if len(list3) > 10:
print("allsel",file=f2)
print ("lsel,r,line,,",list3[0],file=f2)
for i in range(1,len(list3)):
print("lsel,a,line,,",list3[i],file=f2)
print("AL,all ! ",count, file=f2)
print("allsel",file=f2)
else:
print ("AL,",','.join(list3), " ! ",count,file =f2)
print("C*** area count = ",count, file = f2)
print("C*** area count = ",count)
count = 0 # it is necessary to comment out from here, if you require only 2d tessellations.
pattern4 = re.compile(r'Surface\sLoop.*\b')
matches4 = pattern4.finditer(st)
for match4 in matches4:
list4 = re.findall(r'-?(\d+)',match4.group(0))
list4.pop(0)
if len(list4) > 10:
print("allsel",file=f2)
print ("asel,r,area,,",list4[0],file=f2)
for i in range(1,len(list4)):
print("asel,a,area,,",list4[i],file=f2)
print("VA,all",file=f2)
print("allsel",file=f2)
else:
print ("VA,",','.join(list4),file =f2)
count = count + 1
print("C*** volume count = ",count, file =f2)
print("C*** volume count = ",count)