学习.创作深入理解CAD命令行工具癖

CAD命令行深入理解——python乱入CAD

2017-06-26  本文已影响179人  圣_狒司机

从这节开始我们丢掉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命令行中即可看见电脑自动画图,出图速度看你的计算机配置了。

转载请说明出处,欢迎向我索取源代码文件。

赛博坦星球表面 赛博坦之心 混乱都市 混乱都市俯视 回宫格
上一篇下一篇

猜你喜欢

热点阅读