对话框导致锁定
新的对话框。一直在尝试一个惯例,但失败了。不知道为什么。该例程打开对话框,该对话框应允许我从3个块中选择1个进行插入,并定义块的比例、要输入的文本和要使用的文本样式。计划首先为对话框定义默认值。打开对话框后,我可以更改或删除默认值。然后插入选定的块并打印文本。如果再次执行lisp文件,则应使用最后使用的值作为默认值。到目前为止,我所能做的就是调出对话框,更改输入或将其保留为默认值,但一旦选择“确定”,autocad就会锁定。
以下是文件:
树dcl
树lsp
注意,树。c中的lsp文件:/program files/autocad/lispfile文件夹,在autocad中调用。它是我的所有lisp文件存储和自动加载的地方。还有那棵树。dcl文件位于Express文件夹中。我最初将其保存在Lispfile文件夹中,但由于某种原因,它不会从那里加载,但在我将其保存到Express文件夹后确实加载了。但现在它一直在崩溃。我甚至试着放树。lsp文件在Express文件夹中,但没有更改结果。仍然崩溃。 您应该将命令调用移到对话框操作(setvals函数)之外-打开对话框时不允许执行这些操作:
关于DCL文件的访问,您应该硬编码他的路径(参见下面的示例),或者使用自定义文件夹进行例程,并将其添加到AutoCAD搜索路径。我强烈推荐第二种解决方案,因为它非常灵活。尽量避免将例程放在Express或其他系统文件夹中,如果需要重新安装,它们可能会丢失。
(setq dcl_id (load_dialog "C:\\MyLispTools\\tree.dcl"))
当做
米尔恰 米尔恰,
“DIASTAT”由start\u对话框函数返回,并且已经定义了cancel tile的action\u tile表达式
(action_tile "accept" "(setvals) (done_dialog 1)")
(if (= (start_dialog) 1)
(command "_.-insert" tree "_s" tscl pause "" "_.text" "_s" tts pause "" ttxt)
) robbt,
我重写了您的代码,以演示如何完成任务,希望您可以从我的代码中学习。
(defun c:tree ( / blk id scl ts )
(cond
( (or
(<= (setq id (load_dialog "tree.dcl")) 0)
(not (new_dialog "tree" id))
)
(princ "\nDialog could not be Loaded.")
)
( t
(set_tile (cond (*tree*) ((setq *tree* "pine"))) "1")
(set_tile "scl" (cond (*scale*) ((setq *scale* "12.0"))))
(set_tile "txt" (cond (*text* ) ((setq *text*"12\""))))
(set_tile "ts"(cond (*style*) ((setq *style* "Standard"))))
(foreach tile '("pine" "oak" "juniper")
(action_tile tile "(setq *tree* $key)")
)
(action_tile "scl" "(setq *scale* $value)")
(action_tile "txt" "(setq *text*$value)")
(action_tile "ts""(setq *style* $value)")
(action_tile "accept"
(vl-prin1-to-string
'(cond
( (null (setq scl (distof *scale*)))
(alert "Scale must be numerical!")
(mode_tile "scl" 2)
)
( (null (tblsearch "STYLE" *style*))
(alert "TextStyle not found!")
(mode_tile "ts" 2)
)
( (done_dialog 1))
)
)
)
(if (= 1 (start_dialog))
(if
(or
(tblsearch "BLOCK" (setq blk *tree*))
(setq blk (findfile (strcat *tree* ".dwg")))
)
(command
"_.-insert" blk "_S" scl "_R" 0.0 pause
"_.text" "_S" ts pause "" *text*
)
(princ (strcat "\n" *tree* ".dwg not found."))
)
)
)
)
(if (< 0 id) (unload_dialog id))
(princ)
)
李
只是想让你知道,当我尝试执行lisp命令时,你的想法给了我“畸形列表”错误。
返回测试板
你指的是哪个职位?
“格式错误的列表”错误表示您缺少一个或多个右括号”)“,我认为我发布的代码没有问题。 我发现了问题。当我复制文件时,我错过了最后一个“)”。但它仍然不起作用。没有错误,只是什么都不做。必须仔细观察。至于现在,我必须在某个地方,所以我将在几个小时后回来测试并检查这个网站。
李说得好,谢谢!但是你知道,旧习惯很难改掉。
当做
米尔恰
........ 我看到在lisp例程中提到使用“vl”和“vla”调用。我正在取消Acad2006,我不知道这个版本是否知道vl标注。我对他们一无所知。我的书是用Acad14印回来的。是的,我已经过时了。有人能帮我做这些标注吗。
页:
[1]
2