如何在绘图中能够完美的避开全局变量的重叠
(defun c:c1(/ pt0 d3 p1 p2 p3 p4 p5 d4 p6 p7 d1s d2s)(vl-load-com)
(if (not ad1)
(setq ad1 548.5 ad2 3000)
)
这个是我第一个命令,我将ad1和ad2设定为全局变量,如果没有ad1,那么设定ad1和ad2的值,有的话就采用默认值,这样做的目的是做一些重复性的目的时,可以省去输入的时间
(defun c:c2(/ pt0 d3 p1 p2 p3 p4 p5 d4 p6 p7 d1s d2s)
(vl-load-com)
(if (not c2d1)
(setq c2d1 548.5 ad2 2500ad3 150)
)
这个时候第二个命令的ad2就会和第一个命令冲突了,我连续输入第一个和第二个两个命令后,下一次再输入第一个命令的时候这个时候ad2就会变成我用第二个命令输入的默认值了,而不是我用第一个命令输入的默认值
请问大佬们,有没有什么办法能够解决两个命令默认值冲突的情况,不要更改全局变量,因为我这两个命令只是示范一下,实际要输入的值有很多,命令也有很多,不可能把所有的命令默认值的全局变量名字都改个遍吧,能不能有啥好的解决方法啥的
import os;
import os.path
def reset():
i = 0
j = 0
path = r"E:/Users/administrator/Desktop/MECpg/"
filelist = os.listdir(path)# 该文件夹下所有的文件(包括文件夹)
for files in filelist:# 遍历所有文件
i = i + 1
Olddir = os.path.join(path, files);# 原来的文件路径
if os.path.isdir(Olddir):# 如果是文件夹则跳过
continue;
#print(os.path.splitext(files))
#filename = os.path.splitext(files);# 文件名
#filetype = os.path.splitext(files);# 文件扩展名
filename,filetype=os.path.splitext(files)
filePath=path+filename+filetype
if filetype.lower() == ".lsp" :
if alter(filePath,"(command " , "(cmds " ):
j +=1
if j==0:
print("没有需要替换的内容")
def alter(file,old_str,new_str):
"""
替换文件中的字符串
:param file:文件名
:param old_str:旧字符串
:param new_str:新字符串
:return:
"""
file_data = ""
with open(file, "r", encoding="ANSI") as f:
goset = False
for line in f:
if old_str in line:
print(file)
print("替换前:",line)
line = line.replace(old_str,new_str)
print("替换后:",line)
goset = True
file_data += line
if goset:
print("文件重写中...")
with open(file,"w",encoding="ANSI") as f:
f.write(file_data)
return True
else: return False
if __name__=='__main__':
reset()
=========================
可以尝试用Python改,上面是我拼凑的程序,把所有lsp文件里的"(command "改成 "(cmds "
alter(filePath,"(command " , "(cmds " ):
namedspace 如果已经有很多重复的了,应该没什么好办法,只能挨个去改,如果还没多少个代码这样搞,建议赶紧用复杂的命名规则习惯来定义一个全局变量,防止被其他覆盖,或者大佬说的,你每个程序一个文件搞成独立的空间,不过感觉也麻烦吧,想省事,好像没啥好招 可以将ad1和ad2命名为*ad1_220729和*ad2_220729。加*是为了容易知道是全局变量,后面加日期是为了与其它*ad1、*ad2区别开来。
页:
[1]