明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 742|回复: 13

[讨论] DCL调用子函数

[复制链接]
发表于 2024-1-9 17:22 | 显示全部楼层 |阅读模式
请教下大神:
dcl按确定按钮后, 分别执行几个函数,其中一个子函数是选取坐标点(getpoint)+插入文字(command“text”。。。。),经过测试有两个地方解决不了,求教这是为什么。
1、子函数带(command“text”)的时候会蹦出“VEVAL-STR+ARX对话框,提示错误”
2、子函数注释掉(command“text”),只留下(getpoint)的时候,不提示错误,不提示选取点。
3、为测试是否调用函数,注释掉(getpoint)和(command“text”),增加 (alert "8888") 语句,可弹出alert 提示框。


  1. (defun dcl_jl   ()

  2.   (setq dcl_id (load_dialog "jl"))

  3.   (new_dialog "jl" dcl_id)

  4.   (def_jl)

  5.   (action_tile "jilu"  "(setq neirong $value)")

  6.   (action_tile "accept" "(done_dialog 1)(get_zigao)(xieru_cad)(xieru_txt)");关闭对话框,写到txt,写到cad

  7. (start_dialog)

  8.   )

  9. (defun xieru_txt ( )  

  10. ***

  11.     )



  12. (defun xieru_cad ( )

  13. (alert "8888")

  14. ;;; (setq pt1 (getpoint "记录插入点:"))

  15. ;;;

  16. ;;;      (command "text"

  17. ;;;       "m"

  18. ;;;       pt1

  19. ;;;       zigao

  20. ;;;       0

  21. ;;;       (strcat date-time neirong)

  22. ;;;       )

  23.   )


发表于 2024-1-10 10:40 | 显示全部楼层
输入多个数据时,DCL可视化一次多数据输入很方便,或者是多个按钮,单个按钮触发指定小程序,dcl代码有特定的结构组成,想实现你的功能,可以把文字直接用输入框,点击确认按钮后触发“拾取指定点”代码就可以,论坛有自动生成对话框的小程序,可以看一下。

[不死猫原创] 利用文字排列实现可视化DCL开发(开源)
http://bbs.mjtd.com/forum.php?mo ... &fromuid=363233
(出处: 明经CAD社区)
 楼主| 发表于 2024-1-10 16:39 | 显示全部楼层
hhh454 发表于 2024-1-10 10:40
输入多个数据时,DCL可视化一次多数据输入很方便,或者是多个按钮,单个按钮触发指定小程序,dcl代码有特定 ...

感谢,现在还有个问题解决不了。我这个程序平常输入命令用,并且我是做了个dwg反应器,在关闭dwg的时候弹出面板,输入文字插入到dwg。现在关闭dwg的时候能弹出面板,但是在插入的时候程序就执行关闭dwg了,没法插入。有什么好的办法吗?
 楼主| 发表于 2024-1-11 11:28 | 显示全部楼层
wzg356 发表于 2024-1-11 11:21
done_dialog表示结束对话框了,这类取点,command等需要退出来执行,如要获取对话框的数据或计算则放在done ...

感觉结束对话框跟执行其他函数,是并列的关系吧。如果不需要知道done_dialog的值,就无所谓前后了吧,先关闭对话框就先关闭呗。不知道我理解的对不对。
但是你说的是标准的写法,以后我改正。
发表于 2024-1-9 17:35 | 显示全部楼层
对话框使用时,是不能调用command命令的。这时你应该给他一个结束的值。done_dialog,然后通过调用对话框函数返回来才行。可以在论坛搜搜对话框的程序,看看它的组成结构。
 楼主| 发表于 2024-1-9 20:28 来自手机 | 显示全部楼层
tigcat 发表于 2024-1-9 17:35
对话框使用时,是不能调用command命令的。这时你应该给他一个结束的值。done_dialog,然后通过调用对话框函 ...

感谢,明早看看,再请教。
 楼主| 发表于 2024-1-10 16:40 | 显示全部楼层
tigcat 发表于 2024-1-9 17:35
对话框使用时,是不能调用command命令的。这时你应该给他一个结束的值。done_dialog,然后通过调用对话框函 ...

麻烦看看我给其他人留言的新问题,看看会不会解决
发表于 2024-1-10 21:50 | 显示全部楼层
liuxinkai 发表于 2024-1-10 16:39
感谢,现在还有个问题解决不了。我这个程序平常输入命令用,并且我是做了个dwg反应器,在关闭dwg的时候弹 ...

检查一下是不是把exit放到插入前面了
 楼主| 发表于 2024-1-11 08:51 | 显示全部楼层
hhh454 发表于 2024-1-10 21:50
检查一下是不是把exit放到插入前面了

本来就是监测到执行关闭动作才反应的,我们按了关闭按钮然后反应器动作,才进行写入。
做这个的本意就是在关闭dwg的时候提醒作图人员做记录。
有没有好的方法?
发表于 2024-1-11 09:17 来自手机 | 显示全部楼层
liuxinkai 发表于 2024-1-10 16:39
感谢,现在还有个问题解决不了。我这个程序平常输入命令用,并且我是做了个dwg反应器,在关闭dwg的时候弹 ...

大神,方便分享一下关闭dwg的反应器吗?谢谢
 楼主| 发表于 2024-1-11 10:24 | 显示全部楼层
努.力 发表于 2024-1-11 09:17
大神,方便分享一下关闭dwg的反应器吗?谢谢
  1. (vlr-dwg-reactor nil '((:vlr-beginClose . zdjl)));关闭的时候自动记录
  2. (defun zdjl(a b);必须带两个参数,可以不用,但是必须写进去
  3. (C:jl)
  4.   )
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-5-13 00:34 , Processed in 0.181835 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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