乐筑天下

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

[编程交流] 动态生成。DCL fil公司

[复制链接]

1

主题

9

帖子

8

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-5 19:58:24 | 显示全部楼层 |阅读模式
大家好,
 
我已经在这里潜伏了一年多了,发现了很多有用的信息(谢谢!),但我终于做了一些以前似乎没有解决过的事情,而且可能没有简单的答案。
 
我们使用一个由图层状态、视图、冻结和解冻图层组成的复杂系统来设置不同的打印状态,以创建一个图形包。使用AutoCAD有点奇怪,但这是因为有必要在歌剧随着时间的推移而播放(第一幕、第二幕等)。我们的剧目中有数百部歌剧,这种情况短期内不会改变。
 
无论如何,就目前而言,有一个。txt文件,该文件与包含手动创建的布景的文件位于同一目录中,以便打印脚本可以工作。我正试图扭转这种局面。txt文件保存在对话框中,便于使用和清洁。数据将存储在块中的多行属性中。
 
我花了相当多的时间创建了一个对话框,该对话框可以动态更改大小,允许重新排序打印输出,并在同一打印输出上显示多个场景层。我唯一真正的问题(当然是一个大问题)是,如果添加太多行,对话框就会变得太大,无法在屏幕上显示。我想做的是让整个对话框(除了底部的按钮)上下滚动,这样对话框的高度就固定在我们这里使用的最小屏幕上(约800像素)。我在OpenDCL上花了一点时间,但发现它有点拜占庭风格,我一点也不知道。NET或VBA,所以这两种解决方案中的任何一种都需要我学习一些新的编程语言——不一定是交易破坏者,但也不理想。
 
我正在附加一个。带有属性块和的dwg。lsp文件供任何想要查看的人使用。命令c:met\u plot\u 2015将创建并打开对话框,然后可以对其进行操作。
 
我感谢所有读到这篇文章末尾的人,以及你能提供的任何帮助。
 
谢谢
埃里克
 
P、 打印功能实际上还不起作用;一旦我解决了这个问题,这就是下一个问题。
 
特殊块。图纸
 
更好的打印5。LSP
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-5 20:04:43 | 显示全部楼层
并没有看代码,但你们可以有一个列表框,它可以有很多行,你们喜欢,滚动上下。它可以通过读取文本文件来实现,即为您想要选择的内容放置一个简短的版本。
 
  1. ; very much thanks to Alan J T for original code
  2. ;; List Select Dialog (Temp DCL list box selection, based on provided list)
  3. ;; title - list box title
  4. ;; label - label for list box
  5. ;; height - height of box
  6. ;; width - width of box
  7. ;; multi - selection method ["true": multiple, "false": single]
  8. ;; lst - list of strings to place in list box
  9. ;; Alan J. Thompson, 09.23.08 / 05.17.10 (rewrite)
  10. (defun AT:ListSelect (title label height width multi lst / fn fo d item f)
  11. (setq fo (open (setq fn (vl-filename-mktemp "" "" ".dcl")) "w"))
  12. (foreach x (list (strcat "list_select : dialog { label = "" title ""; spacer;")
  13.                   (strcat ": list_box { label = "" label "";" "key = "lst";")
  14.                   (strcat "allow_accept = true; height = " (vl-princ-to-string height) ";")
  15.                   (strcat "width = " (vl-princ-to-string width) ";")
  16.                   (strcat "multiple_select = " multi "; } spacer; ok_cancel; }")
  17.             )
  18.    (write-line x fo)
  19. )
  20. (close fo)
  21. (new_dialog "list_select" (setq d (load_dialog fn)))
  22. (start_list "lst")
  23. (mapcar (function add_list) lst)
  24. (end_list)
  25. (setq item (set_tile "lst" "0"))
  26. (action_tile "lst" "(setq item $value)")
  27. (setq f (start_dialog))
  28. (unload_dialog d)
  29. (vl-file-delete fn)
  30. (if (= f 1)
  31.    ((lambda (s / i s l)
  32.       (while (setq i (vl-string-search " " s))
  33.         (setq l (cons (nth (atoi (substr s 1 i)) lst) l))
  34.         (setq s (substr s (+ 2 i)))
  35.       )
  36.       (reverse (cons (nth (atoi s) lst) l))
  37.     )
  38.      item
  39.    )
  40. )
  41. )
  42. ; basicly make a list LST of the lines to be displayed then call it
  43. (setq surface (car (AT:ListSelect
  44.                                    "Set new surface style"
  45.                                    "Select style"
  46.                                    10
  47.                                    10
  48.                                    "false"
  49.                                    (vl-sort (mapcar (function car) lst) '<)
  50.                                  ) )
  51.     )   ; end setq

PRINT-LIST是打印列表的名称。(您可以为其命名其他名称)
PRINT-SCENE是表示主打印页的原子。
附加场景是场景的附加层列表。此列表可以为空(NIL)或包含所需的任意多个附加层。
INT-PRINT-STATUS是打印类型的原子。平面图或剖面图。此处输入的数据为0或1,不能为零。
 
就对话框而言,我将显示一个文本框,显示打印列表的当前状态。像现在一样,可以使用对话框上的按钮添加、删除或重新排列图纸。关联列表应该是用于显示和打印表单的一条信息。用户与对话框的交互应相应地重写列表。有了这个列表,你可以很容易地提取信息。
回复

使用道具 举报

1

主题

9

帖子

8

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-5 20:06:28 | 显示全部楼层
我认为这个想法是可行的,我已经准备好了代码来为每一份打印写关联列表。
 
在这种情况下,您是否想过如何修改列表的内容?这应该是通过另一个按钮打开的第二个对话框吗?
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-5 20:09:49 | 显示全部楼层
我认为您可以在一个对话框中实现所有功能。底部显示的实际打印列表,顶部显示用于添加、删除和重新排列的按钮。
回复

使用道具 举报

1

主题

9

帖子

8

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-5 20:11:58 | 显示全部楼层
可能是这样的:
205829zpx8nnpl55g6fptu.jpg
205831oeg1rpzgd2ejdred.jpg
205833fucl2nxl16hudlpz.jpg
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-5 20:17:45 | 显示全部楼层
是的,我想我可以做到。非常感谢你的帮助!
回复

使用道具 举报

1

主题

9

帖子

8

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-5 20:21:00 | 显示全部楼层
很乐意帮忙。在进行对话时,你必须始终考虑使用它的人,以及它是否有意义。此外,你不想把自己规划成一条死胡同。我觉得对数据使用关联列表可以为您重用信息提供很多可能性。您可以编写一些小工具来填充列表或提取信息并将其重新格式化为文本以创建报告。无尽的可能性。。。
回复

使用道具 举报

7

主题

143

帖子

136

银币

初来乍到

Rank: 1

铜币
36
发表于 2022-7-5 20:22:24 | 显示全部楼层
回复

使用道具 举报

1

主题

9

帖子

8

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-5 20:25:45 | 显示全部楼层
A vertical slider is exactly what I'm looking for, but I don't know how to implement it.  Can you give me some more information?
回复

使用道具 举报

7

主题

143

帖子

136

银币

初来乍到

Rank: 1

铜币
36
发表于 2022-7-5 20:29:09 | 显示全部楼层
I'm not really that good with DCL, but I've looked in on it thoroughly. The only problem I have is testing a few things out. Some of my questions are:
Can you use a slider to move all those tiles up and down together?
I would test moving some sets of radio row tiles first just to see if that works.
Can you set a slider on a frame to move contents within that frame?
That would be interesting to know.
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-12 01:01 , Processed in 0.441402 second(s), 74 queries .

© 2020-2025 乐筑天下

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