帮助创建新功能
我有一些名为ccv,hhj,ffk的lisp defun函数,这些函数在一起没有任何关系,但我想定义一个新函数,它一个接一个地顺序运行,我怎么做??(我试图在一个文件中找到它们,但当我在运行第一个函数后运行它时,它被停止)??!!!! 如果它们是命令函数,则将(c:ccv)(c:hhj)(c:ffk)放入新函数中。 但问题是,在运行ccv EXECTE和interupt以及autocad get控制鼠标指针并不运行其他功能hhj和ffk后运行它:cry: 您的函数如下所示:1.(定义ccv(arg/var…);其中arg是参数,var是变量。
或
2.(定义C:ccv(/变量…);无异议地
用C:前缀,我们可以调用这个函数
如果你想放一个,可以试试这个,例如,C:TEST
(defun C:Test ( / ccv hhj ffk) ; localize
;copy & paste your code
(defun ccv .....)
(defun hhj ....)
(defun ffk ....)
;then if function with argument
;call this way by supplying the valid arguments
(princ
(list
(ccv arg1 arg2 etc..) ;**
(hhj arg1 arg2 etc..) ;**
(ffk arg1 arg2 etc..) ;**
)
)
(princ)
); end defun
我不太确定我是否理解你,我只是假设。
命令:测试
;(0.0“ABC”(1 2 3));输出**
**这取决于函数ccv hhj ffk中需要多少个参数
我们也不知道函数的输出是什么:字符串?数字列表思维方式等 不幸地
我尝试了建议方法,但在运行第一个函数后中断。
简化的函数类似于以下无(其中arg是参数,var是变量)
(defun c:ccv()
(COMMAND ".ERASE" PAUSE )
)
(defun c:hhj()
(if
(setq p1 (cadr (ssgetfirst)))
(progn (sssetfirst) (command "chprop" p1 "" "C" 1 ""))
)
)
由于您处理擦除过程的方式,无法到达CCV调用后的代码,即AutoLISP解释器没有恢复控制。
请检查以下示例:
(defun c:ccv()
(command "_.ERASE" pause)
(prompt "\nDone!") ;this statement isn't reached
(princ)
)
(defun c:ccv()
(command "_.ERASE")
(while (> (getvar "CMDACTIVE") 0)
(command pause)
)
(prompt "\nDone!") ;this statement is reached
(princ)
) 不幸地
我尝试了建议方式,但在运行ccv后中断,我不知道我能做什么?? 您可以尝试使用(ssget“_:L”)函数在屏幕上抓取实体,然后迭代选定实体的选择集。。。如果(entget ent)返回的值不是nil,则使用(entdel ent)函数删除实体。。。这只是一种方法,但我肯定会避免使用(命令“_u.erase”暂停)行。。。 您可能需要一个脚本而不是3个defun。在一个defun完成后,脚本将继续运行。
(defun c:cccc ()
(Command "script" ccvhhjkkk)
)
脚本CCVHHJKK
(c:ccv)
(c:hhj)
(c:ffk)
嗨BIGAL
我昨天用这个脚本尝试了你的建议,不幸的是在运行和完成ccv后中断了,我不知道我能做什么??
我真的不知道我怎么能把跑步联系起来??
页:
[1]
2