明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2558|回复: 8

[讨论]在Lisp中调用PGP文件中用户自定义的命令

[复制链接]
发表于 2005-3-7 17:11:00 | 显示全部楼层 |阅读模式
大家知道,在Lisp中是不能直接调用PGP文件中用户自定义的命令,只能调用CAD中的原始完整命令,这对于编程很不方便,特别是Express中的命令,如flatten在CAD中根本就没有原始命令,如何调用呢?用函数 (VLAX-Add-Cmd)。 大家讨论一下用法或者更好的办法

本帖被以下淘专辑推荐:

发表于 2005-3-7 17:18:00 | 显示全部楼层
(c:flatten)
发表于 2005-3-7 20:33:00 | 显示全部楼层
vlax-add-cmd 函数
语法:(vlax-add-cmd global-name func-sym [local-name cmd-flags])
功能:将命令添加到 AutoCAD 内置命令集中
说明:
1)使用 vlax-add-cmd 可以将函数定义为 AutoCAD 命令,而无需在函数名中使用 c: 前缀。
2)使用 vlax-add-cmd 可以定义透明 AutoLISP 命令,而 c: 函数,是不可能实现的。
3)vlax-add-cmd 函数使某个 AutoLISP 函数在当前 AutoCAD 任务中作为 ObjectARX 类型的命令,在 AutoCAD 命令行提示中使用。
4)vlax-add-cmd 函数提供了对 ObjectARX acedRegCmds 宏的访问,从而提供了一个到 ObjectARX 系统 AcEdCommandStack 对象的指针。
5)vlax-add-cmd 函数自动将命令指定到命令组。当文档名称空间发出命令时,vlax-add-cmd 将命令添加到组 doc-ID。doc-ID 是标识文档的十六进制值。当独立名称空间 VLX 发出命令时,vlax-add-cmd 将命令添加到组 VLC-Ddoc-ID:VLX-name。这里 VLX-name 是发出 vlax-add-cmd.的应用程序名。
6)不能使用 vlax-add-cmd 显露创建反应器对象的函数,也不能用它来显露反应器的回调函数。
7)参数 global-name 为字符串。
8)参数 func-sym 为符号,指定不带参数的 AutoLISP 函数。
9)参数 local-name 为字符串(默认值为 global-name)。
10)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 中清除。命令可获取优先集和夹点集。
11)若同时设置了 ACRX_CMD_USEPICKSET 和 ACRX_CMD_REDRAW,那么效果和仅设置 ACRX_CMD_REDRAW 一样。
12)关于标志的详细信息,请参见 ObjectARX Reference 手册中的“Command Stack”。
返回值:如果成功则返回 global-name 参数。如果 acedRegCmds->addCommand(...) 返回错误条件,则函数返回 nil。
 楼主| 发表于 2005-3-8 13:08:00 | 显示全部楼层
8)参数 func-sym 为符号,指定不带参数的 AutoLISP 函数。
能说一下这个参数的格式吗? 举个简单例子
 楼主| 发表于 2005-3-10 17:21:00 | 显示全部楼层
有人回答一下吗?
发表于 2005-3-10 21:36:00 | 显示全部楼层
参考:
  1. ;;;加载汉字-宋体                                             
  2. (defun jzhz ()
  3.    (if (null (tblsearch "style" "汉字"))
  4.        (command "_style" "汉字" "宋体" "0" "1" "0" "" "")
  5.    )
  6.    (setvar "textstyle" "汉字")
  7. )
  8. (vlax-add-cmd "jzhz" 'jzhz)
用(jzhz)或直接用jzhz均可。
发表于 2013-11-21 18:12:19 | 显示全部楼层
xyp1964 发表于 2005-3-7 20:33
vlax-add-cmd 函数语法:(vlax-add-cmd global-name func-sym [local-name cmd-flags])功能:将命令添加到  ...

好函数,收藏了,谢谢
发表于 2013-12-7 22:10:36 | 显示全部楼层
xyp老师的讲解很详细!
发表于 2014-5-3 18:45:19 | 显示全部楼层
讲解很详细,顶起
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2025-5-24 20:26 , Processed in 0.206803 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表