CAD-autolisp(四)——特殊函数及编译

本文介绍了CAD中LISP文件的编译过程,包括lsp转为fas/vlx文件,以及如何通过appload命令加载编译后的应用程序。同时提供了后续学习资源,指向英文官方LISP教程链接。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、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 界面操作

  • 编译启动页面
    在这里插入图片描述
  • 应用向导操作选项
    在这里插入图片描述

4.2 生成的应用程序(二选一)

在这里插入图片描述

五、后续学习


返回目录

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值