CAD命令行深入理解——python乱入CAD
从这节开始我们丢掉EXCEL,因为EXCEL还是太繁琐,一般人记不住=A2&","&B2,=CONCATENATE("@",A6,"<",C6)或者=CONCATENATE("box"," ",A15,",",B15," ","l"," ",D15," ",E15," ",F15)这样怪异的语法,这还不是最让人恼火的,更坏的是如果很多命令行的话用EXCEL做命令行还是需要一个个手工拖动出来,前面做过一万步的随机漫步图,在EXCEL里你就需要一万行命令!
python 号称面向未来的语言,它具有最智能化的语法,看起来很像英语,但是结构又很严谨,他有极大的库,方便各个领域使用,详见官网python.org,我准备用他重写之前的图像代码。
思路
将全部CAD命令行写入一个文本文档里,通过全部复制粘贴命令到CAD的命令行中,其实就是把CAD命令行 prompt当成了一个微型API ,一次生成所需要的图像。
方法
需要数学和随机库,最好做一个点的类,
1.基本构图函数:点、线、面、体,作为最基本的函数
2.构建构图细胞函数
3.构建由细胞组成的图像函数
源代码:
import random
import math
class p:
def __init__(self,x,y):
self.x = x
self.y = y
def line(step=0,direct=0):
s = '@%s<%s'%(step,direct)
return s
def line2(p1,p2):
s = '%s,%s %s,%s '%(p1.x,p1.y,p2.x,p2.y)
return s
def box(p,a,b,c):
s = 'box %s,%s l %s %s %s '%(p[0],p[1],a,b,c)
return s
def saibotancell(step = 4,direct = 60):
step1 = random.randint(5,8)
direct1 = random.randint(0,5) *60
s =''
s += line(step=step1,direct=direct1)
return s
def sai(seed = 10000):
sai_text = 'L 0,0\n'
n = 0
while n < seed:
sai_text += str(saibotancell())+'\n'
n += 1
return sai_text
def saistarcell():
p1_rand = random.randint(5,8)
p2_rand = random.randint(8,20)
p_sita = math.pi*2*random.random()
x1 = p1_rand*math.cos(p_sita)
y1 = p1_rand*math.sin(p_sita)
x2 = p2_rand*math.cos(p_sita)
y2 = p2_rand*math.sin(p_sita)
p1 = p(x1,y1)
p2 = p(x2,y2)
s =''
s += line2(p1,p2)
return s
def saistar(seed = 1000):
n = 0
saistar_text = 'L '
for i in range(seed):
saistar_text += str(saistarcell())+'\n'
return saistar_text
def chaoscitycell():
x = position_rand = random.randint(0,1000)
y = position_rand = random.randint(0,1000)
p1 = p(x,y)
a = random.randint(0,30)+30
b = a*random.randint(10,22)/10
c = random.randint(15,300)
s = ''
s += str(box([p1.x,p1.y],a,b,c))
return s
def chaoscity(seed = 100):
n = 0
chaoscity_text = 'box '
for i in range(seed):
chaoscity_text += chaoscitycell()+'\n'
return chaoscity_text
def circle_line(seed = 100):
step = 0
direct = 0
s = 'l 0,0 '
for i in range(seed):
if i %2 ==0:
step += 1
if direct >=270:
direct = 0
s += line(step=step,direct=direct)+' '
direct += 90
return s
f = open(r'C:\Users\Administrator\Desktop\cad.txt',mode = 'w')
#赛博坦星球表面
#f.write(sai())
#赛博坦之心
#f.write(saistar())
#混乱都市
#f.write(chaoscity())
#回宫格
#f.write(circle_line())
f.close()
运行后会在桌面创建一个CAD.txt文件,全部复制粘贴到CAD命令行中即可看见电脑自动画图,出图速度看你的计算机配置了。
转载请说明出处,欢迎向我索取源代码文件。
赛博坦星球表面 赛博坦之心 混乱都市 混乱都市俯视 回宫格