Agent 31 发表于 2022-7-6 10:52:01

AutoCAD Security Lisp

嘿,大家好,我是一个全新的创造线程,虽然我已经是一个论坛的球迷一段时间了,现在我已经收到了很多帮助。
 
这是我的第一个问题!Drumroll拜托?!
 
我对AutoLISP有点陌生,在过去的两周里,我每天都在深入学习AutoLISP将近8个小时。我决定没有更好的方法可以尝试,所以我想为我的AutoCAD创建一个安全宏。我可以开始,所有的好东西,所以我不关心帮助。我只需要知道代码和我做错了什么。
 
我想让它问用户一个问题。如果该点与某个坐标(0,0)匹配,则什么也不会发生。如果与点不匹配,AutoCAD将消亡。我会担心设置我想要的点和东西,我只需要知道我的代码发生了什么?!更有经验的用户可能更快地了解正在发生的事情。现在,不管我输入什么坐标,它都会死,*叹气*
 

(defun C:security()
(setq pass (getpoint "\nGet to the point already!"))

(if (= pass '(0,0))(alert "Welcome Agent 31!")(command "quit" "y")
)
)

MSasu 发表于 2022-7-6 11:02:42

您应该使用等于比较列表:
 
但是我不确定你用它能得到什么。。。你知道一个简单的会跳过你的安全检查吗?!?
 
当做

Tharwat 发表于 2022-7-6 11:06:44

欢迎来到论坛
 
一切都很顺利,但由于
quit命令
 
当做
塔瓦特

MSasu 发表于 2022-7-6 11:09:32

 
我很惊讶这不是真的-想法是如果通过测试,用户将收到欢迎消息,否则AutoCAD将关闭。
即使发出两条语句,AutoCAD也不会退出,直到警报框未关闭。
 
当做

Tharwat 发表于 2022-7-6 11:15:01

 
对不起,我第一次不同意你的意见。。。。
尝试调用Lisp,您会发现不会有任何警报,因此只有一条消息来保存更改。。。。
 
当做
 
塔瓦特

MSasu 发表于 2022-7-6 11:20:05

 
没错,但这是因为OP的代码是错误的;这个测试永远不会通过——请看第2篇文章。
 
当做

alanjt 发表于 2022-7-6 11:27:23

你错了。上述方法不起作用的原因是他的比较检查错误。
在警报调用完成之前,不会执行警报调用之后的任何操作。
 
如。
(progn (alert "See") (command "_.quit"))

Agent 31 发表于 2022-7-6 11:34:01

这真的帮了我的忙,谢谢。我知道它有几个缺点,但老实说,我只是想玩一些东西。这教会了我一件关键的事情,就是IF函数的错误以及如何输入坐标。我感谢你们俩。
 
请注意,“Y”不允许它要求您保存更改,
 
我真的非常感谢你们两位在这方面的帮助,我感谢你们这么快的回复时间。
 
当做
 
3

Tharwat 发表于 2022-7-6 11:37:14

如果有人复制lisp文件并将其粘贴到Autocad的命令行中
并调用该程序,因此将被要求“已经切入要点”
如果键入0,则Autocad程序将顺利退出。。
 
试试看
当做
 
塔瓦特

alanjt 发表于 2022-7-6 11:43:13

只是因为最初的评估是完全错误的,无论你做了什么,它永远不会做任何事情,但退出。
页: [1] 2
查看完整版本: AutoCAD Security Lisp