乐筑天下

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

[编程交流] DCL盒放置

[复制链接]

6

主题

47

帖子

36

银币

初来乍到

Rank: 1

铜币
36
发表于 2022-7-5 18:24:27 | 显示全部楼层 |阅读模式
你好
 
我需要把DCL盒从屏幕中间移开,有什么办法吗?
 
谢谢你的帮助。
肖恩多
回复

使用道具 举报

8

主题

159

帖子

153

银币

初来乍到

Rank: 1

铜币
40
发表于 2022-7-5 18:39:10 | 显示全部楼层
关闭后是否保存对话框位置?
看看这个代码:
http://www.cadtutor.net/forum/showthread.php?55038-创建动态DCL quot问题任何人都可以测试它

http://www.cadtutor.net/forum/showthread.php?54734-如何记住DCL窗口位置
 
克鲁格
回复

使用道具 举报

6

主题

47

帖子

36

银币

初来乍到

Rank: 1

铜币
36
发表于 2022-7-5 18:45:13 | 显示全部楼层
你好
 
真的很感谢你。
 
祝你过得愉快。
肖恩多
回复

使用道具 举报

4

主题

194

帖子

192

银币

初来乍到

Rank: 1

铜币
25
发表于 2022-7-5 18:52:28 | 显示全部楼层
我已经看了这个线程和来自kruuger的文件,但是我仍然在dcl盒放置上迷失了方向。当对话框打开时,是否有方法指示对话框在屏幕上的位置?任何愿意分享的人。。。。
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-5 18:58:55 | 显示全部楼层
您可以在屏幕坐标中指定初始位置,然后对话框的位置将由done\u dialog函数返回,您可以将其存储到下一次。
 
如果你愿意,我会贴一个例子
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-5 19:06:48 | 显示全部楼层
好吧,我忍不住举个例子
 
  1. (defun c:test ( / *error* dcl dch )
  2. ;; Example by Lee Mac 2011  -  www.lee-mac.com
  3. ;; Demonstrates how to remember a dialog screen
  4. ;; position for next use.
  5. ;; Requires accompanying file: test.dcl to be
  6. ;; in AutoCAD Support Path.
  7. (defun *error* ( msg )
  8.    (if dch (unload_dialog dch))
  9.    (or (wcmatch (strcase msg) "*BREAK,*CANCEL*,*EXIT*")
  10.        (princ (strcat "\n** Error: " msg " **")))
  11.    (princ)
  12. )
  13. (cond
  14.    (
  15.      (not
  16.        (and
  17.          (setq dcl (findfile "test.dcl"))
  18.          (< 0 (setq dch (load_dialog dcl)))
  19.        )
  20.      )
  21.      (princ "\n** DCL File not found **")
  22.    )
  23.    (
  24.      (not (new_dialog "test" dch "" (cond ( *screenpoint* ) ( '(-1 -1) ))))
  25.                                             
  26.      (setq dch (unload_dialog dch))
  27.      (princ "\n** Dialog could not be Loaded **")
  28.    )
  29.    (t
  30.      (action_tile "accept" "(setq *screenpoint* (done_dialog 1))")
  31.      (start_dialog)
  32.      (setq dch (unload_dialog dch))
  33.    )
  34. )
  35. (princ)
  36. )

 
将以下内容另存为“测试”。支持路径中的dcl:
 
  1. test : dialog { label = "Test Dialog";
  2. spacer;
  3. : text { label = "Move me"; alignment = centered; }
  4. spacer;
  5. : button { key = "accept"; is_default = true; label = "I'm Done"; }
  6. }

 
在这种情况下,位置存储为全局变量,但可以更改代码以将屏幕位置转换为字符串,并在绘图会话之间将其存储在注册表中。
 
享受
 
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-5 19:12:24 | 显示全部楼层
事实上,我刚刚决定在我的网站上添加这个主题:
 
http://lee-mac.com/dialogposition.html
回复

使用道具 举报

3

主题

11

帖子

8

银币

初来乍到

Rank: 1

铜币
15
发表于 2022-7-5 19:23:31 | 显示全部楼层
是否可以将此合并到*的例程中。dcl采用lisp语言。
 
我试图做的是调整此代码:http://www.lee-mac.com/filtlistbox.html使用dialogposition。
但不幸的是没有成功。
回复

使用道具 举报

0

主题

301

帖子

301

银币

初来乍到

Rank: 1

铜币
0
发表于 2022-7-5 19:31:33 | 显示全部楼层
雪果,
 
您需要将*dlgpos*设置为2个整数的列表,定义DCL左上角的位置。
 
因此,您需要(getvar的屏幕大小)并了解dcl的像素大小。
 
(setq*dlgpos*'(0 0))将其放置在Autocad屏幕的左上角,
重叠功能区。在这种情况下,不需要知道盒子的尺寸。
 
ymg公司
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-12 19:27 , Processed in 0.791464 second(s), 81 queries .

© 2020-2025 乐筑天下

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