我们知道在CAD中,如果我们在命令前面加一个单引号,则为透明命令。透明命令就是一个命令还没结束,中间插入另一个命令,然后继续完成前一个命令。插入的命令即透明命令,插入透明命令是为了更方便的完成第一个命令。如"about"命令,可打开"关于对话",但如果我正在画线(还没有结束),突然想打开"关于对话",则输入"'about "命令即可。

我们在实际写代码的过程中,也可能用到透明命令,自定义透明命令最关键的是vlax-add-cmd函数。下面是一个示例程序:

我先定义了一个函数exam,其主要作用是输出一句话;然后调用vlax-add-cmd函数,将调用exam函数,并设置为透明命令。来看一下vlax-add-cmd函数的语法。

函数:vlax-add-cmd

语法:(vlax-add-cmd global-name func-sym [local-name cmd-flags])

功能:可以将函数定义为 AutoCAD 命令,而无需在函数名中使用 c: 前缀;也可以定义透明 AutoLISP 命令,而对于 c: 函数,不能使用此函数来定义。

参数

global-name必选,字符串,命令名;

func-sym必选,符号,函数名;

local-name 可选,字符串,命令别名,缺省值为 global-name;

cmd-flags 可选,整数型,命令标志码,确定了命令的一些特性缺省值为 ACRX_CMD_MODAL + ACRX_CMD_REDRAW;

主要标志有:

ACRX_CMD_MODAL (0) 在使用其他命令时不能调用该命令。

ACRX_CMD_TRANSPARENT (1) 在使用其他命令时可以调用该命令。

二级标志有:

ACRX_CMD_USEPICKSET (2) 检索选择优先集时,在 AutoCAD 中清除设置。命令能够获取优先集,但不能检索或设置夹点。

ACRX_CMD_REDRAW (4) 检索选择优先集或夹点集时,不将它们从 AutoCAD 中清除。命令可获取优先集和夹点集。

参考:http://help.autodesk.com/view/ACD/2015/ENU/?guid=GUID-42392DA4-4A2B-4D34-AA7B-A5ACAF727E54

http://www.mjtd.com/helpcenter/autolisp/ALR.default.321.htm

自定义Lisp透明命令的更多相关文章

  1. 自定义圆角透明的Dialog

    自定义圆角透明的Dialog 说明 系统默认的Dialog默认是背景不透明的,有时候项目需要Dialog为圆角透明,这个时候的解决方案就是---重写Dialog - 系统样式 - 自定义以后的样式 自 ...

  2. .net 自定义AOP,透明代理与真实代理

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.R ...

  3. Django编写自定义manage.py 命令

    官网文档地址:编写自定义 django-admin 命令 金句: 你所浪费的今天,正是昨天死的人所期待的明天. 开篇话: python manage.py <command> 的命令我们用 ...

  4. 同时运行多个scrapy爬虫的几种方法(自定义scrapy项目命令)

    试想一下,前面做的实验和例子都只有一个spider.然而,现实的开发的爬虫肯定不止一个.既然这样,那么就会有如下几个问题:1.在同一个项目中怎么创建多个爬虫的呢?2.多个爬虫的时候是怎么将他们运行起来 ...

  5. Hive基础之自定义封装hivefile命令

    存在的问题:当把hql写到shell中,不方便阅读:但把hql写到文件中,又传递不了参数:怎么办呢? 自定义hivefile 执行方式形如: 第一个参数为要执行的hql文件,后续的参数为要替换的key ...

  6. Laravel 5.1 中创建自定义 Artisan 控制台命令实例教程

    1.入门 Laravel通过Artisan提供了强大的控制台命令来处理非浏览器业务逻辑.要查看Laravel中所有的Artisan命令,可以通过在项目根目录运行: php artisan list 对 ...

  7. 【Django】如何自定义manage.py命令? 达到启动后台进程的目的?

    代码: #-*- coding:utf- -*- """ The handle active user mail send """ from ...

  8. Laravel创建自定义 Artisan 控制台命令实例教程

    来源:http://laravelacademy.org/post/1374.html 1.入门 Laravel通过Artisan提供了强大的控制台命令来处理非浏览器业务逻辑.要查看Laravel中所 ...

  9. 编写自定义的django-admin命令

    先写标题内容后续补充上 官方文档如下 :http://python.usyiyi.cn/documents/django_182/howto/custom-management-commands.ht ...

随机推荐

  1. hdu 1325 判断有向图是否为树

    题意:判断有向图是否为树 链接:点我 这题用并查集判断连通,连通后有且仅有1个入度为0,其余入度为1,就是树了 #include<cstdio> #include<iostream& ...

  2. JavaMail_测试编写

    @Test public void test1() throws Exception{ // import java.util.Properties; // import javax.mail.Add ...

  3. rpm管理环境包和代码包

    Author: JinDate: 20140610System: CentOS release 6.5 (Final) 06-09-2014c零:问题配置文件问题,不打包使用的配置文件参考配置文件后缀 ...

  4. js:深入prototype(上:内存分析)

    /**  * 下面演示了通过原型的创建方式,使用基于原型的创建能够将属性和方法  * 设置为Person专有的,不能通过window来调用.  * 原型是javascript中的一个特殊对象,当一个函 ...

  5. My simplified pickit2 clone

    http://simon.derr.free.fr/site/spip/spip.php?article11 This is a description of my very simplified h ...

  6. http://bbs.chinaunix.net/thread-169061-1-1.html

    http://bbs.chinaunix.net/thread-169061-1-1.html

  7. Centos6.5下Oracle 11g R2安装过程

    1准备 CentOS-6.5-x86_64-bin-DVD1 linux_11gR2_database_1of2 linux_11gR2_database_2of2 VMware Workstatio ...

  8. 使用 UITabBar 时,子画面虽然已经占满全屏幕,但在其底部,仍然有点击事件(可以响应UITabBar)

    使用 UITabBar 时,我们长长会遇到这样的问题. 问题:一个使用(或继承)了UITabBar的Aview,为其添加一个子画面Bview时,虽然 Bview的尺寸已经占满了整个手机屏幕,但是,Bv ...

  9. ExtJS GridPanel的ColumnModel 动态加载

    var colM = "company,id,flyline"; var colMArr = colM.split(","); var colLength = ...

  10. 【idea】idea重新打包依赖了父级项目的子级项目,父级项目代码改变,但是子级项目打包依旧是老的代码 问题解决

    最简单的方法: 就是单独打包父级项目,然后替换本地maven仓库中的父级项目的jar,然后重新打包子级项目,就可以了.