乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 35|回复: 12

[编程交流] 对话框导致锁定

[复制链接]

4

主题

12

帖子

8

银币

初来乍到

Rank: 1

铜币
20
发表于 2022-7-6 08:07:03 | 显示全部楼层 |阅读模式
新的对话框。一直在尝试一个惯例,但失败了。不知道为什么。
该例程打开对话框,该对话框应允许我从3个块中选择1个进行插入,并定义块的比例、要输入的文本和要使用的文本样式。计划首先为对话框定义默认值。打开对话框后,我可以更改或删除默认值。然后插入选定的块并打印文本。如果再次执行lisp文件,则应使用最后使用的值作为默认值。到目前为止,我所能做的就是调出对话框,更改输入或将其保留为默认值,但一旦选择“确定”,autocad就会锁定。
 
以下是文件:
树dcl
树lsp
 
注意,树。c中的lsp文件:/program files/autocad/lispfile文件夹,在autocad中调用。它是我的所有lisp文件存储和自动加载的地方。还有那棵树。dcl文件位于Express文件夹中。我最初将其保存在Lispfile文件夹中,但由于某种原因,它不会从那里加载,但在我将其保存到Express文件夹后确实加载了。但现在它一直在崩溃。我甚至试着放树。lsp文件在Express文件夹中,但没有更改结果。仍然崩溃。
回复

使用道具 举报

35

主题

2471

帖子

2447

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
174
发表于 2022-7-6 08:14:08 | 显示全部楼层
您应该将命令调用移到对话框操作(setvals函数)之外-打开对话框时不允许执行这些操作:
 
关于DCL文件的访问,您应该硬编码他的路径(参见下面的示例),或者使用自定义文件夹进行例程,并将其添加到AutoCAD搜索路径。我强烈推荐第二种解决方案,因为它非常灵活。尽量避免将例程放在Express或其他系统文件夹中,如果需要重新安装,它们可能会丢失。
 
  1. (setq dcl_id (load_dialog "[color=red]C:\\MyLispTools\\[/color]tree.dcl"))

当做
米尔恰
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 08:19:32 | 显示全部楼层
米尔恰,
 
“DIASTAT”由start\u对话框函数返回,并且已经定义了cancel tile的action\u tile表达式
 
  1. (action_tile "accept" "(setvals) (done_dialog [color=red]1[/color])")
  2. [color=red](if (= [/color](start_dialog) [color=red]1)
  3.    (command "_.-insert" tree "_s" tscl pause "" "_.text" "_s" tts pause "" ttxt)
  4. )[/color]
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 08:26:20 | 显示全部楼层
robbt,
 
我重写了您的代码,以演示如何完成任务,希望您可以从我的代码中学习。
 
  1. (defun c:tree ( / blk id scl ts )
  2.    (cond
  3.        (   (or
  4.                (<= (setq id (load_dialog "tree.dcl")) 0)
  5.                (not (new_dialog "tree" id))
  6.            )
  7.            (princ "\nDialog could not be Loaded.")
  8.        )
  9.        (   t
  10.            (set_tile (cond (*tree*) ((setq *tree* "pine"))) "1")
  11.            (set_tile "scl" (cond (*scale*) ((setq *scale* "12.0"))))
  12.            (set_tile "txt" (cond (*text* ) ((setq *text*  "12""))))
  13.            (set_tile "ts"  (cond (*style*) ((setq *style* "Standard"))))
  14.            (foreach tile '("pine" "oak" "juniper")
  15.                (action_tile tile "(setq *tree* $key)")
  16.            )
  17.            (action_tile "scl" "(setq *scale* $value)")
  18.            (action_tile "txt" "(setq *text*  $value)")
  19.            (action_tile "ts"  "(setq *style* $value)")
  20.            (action_tile "accept"
  21.                (vl-prin1-to-string
  22.                   '(cond
  23.                        (   (null (setq scl (distof *scale*)))
  24.                            (alert "Scale must be numerical!")
  25.                            (mode_tile "scl" 2)
  26.                        )
  27.                        (   (null (tblsearch "STYLE" *style*))
  28.                            (alert "TextStyle not found!")
  29.                            (mode_tile "ts" 2)
  30.                        )
  31.                        (   (done_dialog 1))
  32.                    )
  33.                )
  34.            )
  35.            (if (= 1 (start_dialog))
  36.                (if
  37.                    (or
  38.                        (tblsearch "BLOCK" (setq blk *tree*))
  39.                        (setq blk (findfile (strcat *tree* ".dwg")))
  40.                    )
  41.                    (command
  42.                        "_.-insert" blk "_S" scl "_R" 0.0 pause
  43.                        "_.text" "_S" ts pause "" *text*
  44.                    )
  45.                    (princ (strcat "\n" *tree* ".dwg not found."))
  46.                )
  47.            )
  48.        )
  49.    )
  50.    (if (< 0 id) (unload_dialog id))
  51.    (princ)
  52. )
回复

使用道具 举报

4

主题

12

帖子

8

银币

初来乍到

Rank: 1

铜币
20
发表于 2022-7-6 08:31:13 | 显示全部楼层

 
只是想让你知道,当我尝试执行lisp命令时,你的想法给了我“畸形列表”错误。
 
返回测试板
回复

使用道具 举报

4

主题

12

帖子

8

银币

初来乍到

Rank: 1

铜币
20
发表于 2022-7-6 08:36:57 | 显示全部楼层
 
你指的是哪个职位?
 
“格式错误的列表”错误表示您缺少一个或多个右括号”)“,我认为我发布的代码没有问题。
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 08:39:18 | 显示全部楼层
我发现了问题。当我复制文件时,我错过了最后一个“)”。但它仍然不起作用。没有错误,只是什么都不做。必须仔细观察。至于现在,我必须在某个地方,所以我将在几个小时后回来测试并检查这个网站。
回复

使用道具 举报

4

主题

12

帖子

8

银币

初来乍到

Rank: 1

铜币
20
发表于 2022-7-6 08:42:22 | 显示全部楼层
 
李说得好,谢谢!但是你知道,旧习惯很难改掉。
 
当做
米尔恰
回复

使用道具 举报

35

主题

2471

帖子

2447

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
174
发表于 2022-7-6 08:47:46 | 显示全部楼层
 
........
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 08:56:39 | 显示全部楼层
我看到在lisp例程中提到使用“vl”和“vla”调用。我正在取消Acad2006,我不知道这个版本是否知道vl标注。我对他们一无所知。我的书是用Acad14印回来的。是的,我已经过时了。有人能帮我做这些标注吗。
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-3-9 09:03 , Processed in 0.467915 second(s), 72 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表