一、grread函数
- 参数说明
; 打印grread返回的值,这几个够用了 (while T (print (grread 1 7 0)))
- 输出效果
- 实现圆心吸附在鼠标(图中画个圆,选中)
(defun c:demo () (setq ent (entget (car (entsel)))) (setq st T) (while (and st (setq res (grread 1 7 0))) (cond ((= 25 (car res)) (print "右键被按下,退出") (setq st nil) ) ((= 5 (car res)) (print (list "鼠标当前坐标:" (cadr res))) (entmod (subst (cons 10 (cadr res)) (assoc 10 ent) ent)) ) ((= 2 (car res)) (print (list "键盘被按下" (chr (cadr res)))) ) ((= 3 (car res)) (print (list "左键被按下坐标:" (cadr res))) ) ) ) )
- 返回值
二、注册表操作
2.1 读操作
- 读取某项下变量的值
命令: (vl-registry-read "HKEY_CURRENT_USER\\Software\\Autodesk\\AutoCAD\\R19.1" "CurVer") "ACAD-D001:804"
- 读取某项下的所有子项
命令: (vl-registry-descendents "HKEY_CURRENT_USER\\Software\\Autodesk\\AutoCAD\\R19.1" ) ; 此处共有两项,没有的话返回nil ("ACAD-D001:804" "ACAD-D001")
2.2 写操作
- 已有项下新建变量并赋值
命令: (vl-registry-write "HKEY_CURRENT_USER\\Software\\Autodesk\\AutoCAD\\R19.1" "new" "123") "123"
- 新建项
命令: (vl-registry-write "HKEY_CURRENT_USER\\Software\\Autodesk\\AutoCAD\\R19.1\\TEST" ) T
2.3 删操作
- 删除项下变量
命令: (vl-registry-delete "HKEY_CURRENT_USER\\Software\\Autodesk\\AutoCAD\\R19.1\\TEST" "new") T
失败返回nil
- 删除项
命令: (vl-registry-delete "HKEY_CURRENT_USER\\Software\\Autodesk\\AutoCAD\\R19.1\\TEST") T
失败返回nil
三、扩展数据
3.1 给图元新增隐藏附加信息
- 代码示例
(defun C:demo () ;;;运行完此程序,输入(setq ent (entget (car (entsel)) '("*")))看结果 (setq ent (entget (car (entsel)) '("*"))) (regapp "typename1") (regapp "typename2") (regapp "typename3") (entmod (append ent (list (list -3 (list "typename1" (cons 1000 "附加内容1") (cons 1040 1)) (list "typename2" (cons 1000 "附加内容2") (cons 1040 2)) (list "typename3" (cons 1000 "附加内容3") (cons 1040 3)) ) ) ) ) (princ) )
- 效果(左侧新增附加信息,右侧没增)
四、编译
- 编译:lsp后缀名为原文件,后缀名为fas、vlx为编译后文件,其会把sld、dcl、lsp等文件都编译进一个应用程序文件中
- 加载:cad命令行输入
appload 应用程序名
,或者在cad菜单—》工具—》加载应用程序
4.1 界面操作
- 编译启动页面
- 应用向导操作选项