明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1455|回复: 8

请教几个autolisp方面的问题

[复制链接]
发表于 2005-5-10 00:52 | 显示全部楼层 |阅读模式
1。autolisp程序运行时,可有办法透明使用其它的autolisp程序?


2。如果autolisp无法这样使用,有什么办法可以实现?


3。如何在autolisp程序中获得当前运行程序名?


4。透明命令的前导符号“'”位于键盘右侧,输入时比较麻烦。如果想要将该前导符号换成其它符号,比如“~”。有什么办法可以实现?
"觉得好,就打赏"
还没有人打赏,支持一下
 楼主| 发表于 2005-5-10 01:00 | 显示全部楼层
做了一个快速选择的程序
 楼主| 发表于 2005-5-10 01:43 | 显示全部楼层
晕哪,按错了键 做了一个快速选择的程序
copy、move这样的命令可以透明使用
但是其它的程序就不中了
手头上的资料对透明命令介绍很少
想知道透明命令使用方面有哪些限制
透明使用的前导符号问题
虽然可以定义快捷键解决输入问题
但是zxcvsa这几个是不能不用的
这样可用且方便的就只有qwerdf几个
好几个程序已经或准备采用了快捷方式执行
再以后就不够用了啊 获得当前程序名的问题
如果我的能力不足以解决第一个问题
对于某些自定义autolisp程序
我可以修改程序段
把透明命令名
做为程序输入的关键字
再去调用外部程序
由于不同的程序要求不一样
可能透明命令的处理过程也有区别
所以需要知道当前程序名
目前只能通过cmdnames来获得cad命令名 望高手详细讲解
或者告诉一下哪里有详细的教程
不要给英文的看着会睡
 楼主| 发表于 2005-5-10 01:51 | 显示全部楼层
获得程序名的问题
可以设一个全局参数
这样来传递程序名
不过一个程序调好以前
程序名可能会变化
所以最好还是能自动获取
 楼主| 发表于 2005-5-10 21:04 | 显示全部楼层
没人回答呀
是问题太简单了不屑回答
还是太难了没人知道?
发表于 2005-5-11 08:19 | 显示全部楼层
你一下子写那么多东西,说实在的,看完后,真不知道你到底要问什么
 楼主| 发表于 2005-5-12 04:10 | 显示全部楼层
我要问的内容就在第一贴 另一贴只是详细说明为什么会有这些问题 以前看贴经常发现有人问题提的含糊不清 有心回答的人还得反问提问题的人到底想问什么 为了便于大家理解 所以自己提问题的的时候就说详细点 没想到还是没法让人明白
发表于 2005-5-12 08:01 | 显示全部楼层
帮助中......说.... 如果 AutoLISP 函数的名称是以 C:XXX 形式定义,它可以在「AutoCAD 指令」提示下,使用和内建 AutoCAD 指令相同的方法执行。无论您是在 VLISP 内或在 AutoCAD「指令」提示下定义及载入函数都是如此。您可以使用这项功能加入新的指令到 AutoCAD,或是重新定义既有的指令。 若要像 AutoCAD 指令一样地使用函数,请确定它们遵循下列规则: 函数名称的形式必须是 C:XXX(大小写皆可)。名称的 C: 部分一定要出现, XXX 部分则是您选择的指令名称。C:XXX 函数可以用来取代内建的 AutoCAD指令。(请参阅"重新定义 AutoCAD 指令。" 此函数必须定义为没有引数。不过,允许使用局部变数;使用局部变数是一种良好的程式设计习惯。 以这种方法定义的函数可以在任何内建的 AutoCAD 指令的任何提示内透通执行,只要被透通执行的函数不呼叫 command 函数。(这是您用来执行 AutoCAD 指令的 AutoLISP 函数;请查看 AutoLISP 参考手册上的 "command" 项目。 在AutoLISP 参考手册。) 当透通执行C:XXX 定义的指令时,您必须在XXX部分前面加上一个单引号(')。 您可以在 C:XXX 指令作用时,和执行其他透通指令一样,在指令前面加上一个单引号 ('),透通地执行内建的指令。然而,您无法在一个 C:XXX 指令作用时,透通地执行一个C:XXX指令。 注意当您从另一个 AutoLISP 函数程式码呼叫定义成指令的函数时,必须使用完整的名称,包括括号;例如 (C:HELLO)。在您从 VLISP「主控台」提示启动函数时,也必须使用完整的名称及括号。
 楼主| 发表于 2005-5-13 02:45 | 显示全部楼层
非常感谢
送你一朵
对透明命令的使用和限制条件
我已经明白了 再请教一下
1。
如何在autolisp程序中获得当前运行程序名?
编程时经常有这种需求
2。
如果未重定义*error*
R14里运行lsp出现错误时
错误报告里可以显示出现错误的语句
以及包含该语句的各级defun函数名
但是在R2002里不再这样报告
怎样设置*error*可以使它向r14一样报错?

R14里!*error*的结果是
((MSG) (PRINC MSG) (SETQ *ERROR* M:ERR M:ERR nil) (PRINC))
但R2002里!*error* = nil initget函数允许返回任意的键盘输入
但是我发现
如果输入中包含了单引号'
函数就拒绝接受
这样一来我原先的设想(前面贴子有述)
就无法实现了
首贴里提的第4个问题
提问题的时候就没抱希望
这样所有的美好构想没一个可以完美实现
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-6-15 18:50 , Processed in 1.408524 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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