ericjlarson-met 发表于 2022-7-5 19:58:24

动态生成。DCL fil公司

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

BIGAL 发表于 2022-7-5 20:04:43

并没有看代码,但你们可以有一个列表框,它可以有很多行,你们喜欢,滚动上下。它可以通过读取文本文件来实现,即为您想要选择的内容放置一个简短的版本。
 

; very much thanks to Alan J T for original code

;; List Select Dialog (Temp DCL list box selection, based on provided list)
;; title - list box title
;; label - label for list box
;; height - height of box
;; width - width of box
;; multi - selection method ["true": multiple, "false": single]
;; lst - list of strings to place in list box
;; Alan J. Thompson, 09.23.08 / 05.17.10 (rewrite)
(defun AT:ListSelect (title label height width multi lst / fn fo d item f)
(setq fo (open (setq fn (vl-filename-mktemp "" "" ".dcl")) "w"))
(foreach x (list (strcat "list_select : dialog { label = \"" title "\"; spacer;")
                  (strcat ": list_box { label = \"" label "\";" "key = \"lst\";")
                  (strcat "allow_accept = true; height = " (vl-princ-to-string height) ";")
                  (strcat "width = " (vl-princ-to-string width) ";")
                  (strcat "multiple_select = " multi "; } spacer; ok_cancel; }")
            )
   (write-line x fo)
)
(close fo)
(new_dialog "list_select" (setq d (load_dialog fn)))
(start_list "lst")
(mapcar (function add_list) lst)
(end_list)
(setq item (set_tile "lst" "0"))
(action_tile "lst" "(setq item $value)")
(setq f (start_dialog))
(unload_dialog d)
(vl-file-delete fn)
(if (= f 1)
   ((lambda (s / i s l)
      (while (setq i (vl-string-search " " s))
      (setq l (cons (nth (atoi (substr s 1 i)) lst) l))
      (setq s (substr s (+ 2 i)))
      )
      (reverse (cons (nth (atoi s) lst) l))
    )
   item
   )
)
)

; basicly make a list LST of the lines to be displayed then call it

(setq surface (car (AT:ListSelect
                                 "Set new surface style"
                                 "Select style"
                                 10
                                 10
                                 "false"
                                 (vl-sort (mapcar (function car) lst) '<)
                                 ) )
    )   ; end setq


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

ericjlarson-met 发表于 2022-7-5 20:06:28

我认为这个想法是可行的,我已经准备好了代码来为每一份打印写关联列表。
 
在这种情况下,您是否想过如何修改列表的内容?这应该是通过另一个按钮打开的第二个对话框吗?

BIGAL 发表于 2022-7-5 20:09:49

我认为您可以在一个对话框中实现所有功能。底部显示的实际打印列表,顶部显示用于添加、删除和重新排列的按钮。

ericjlarson-met 发表于 2022-7-5 20:11:58

可能是这样的:

Lee Mac 发表于 2022-7-5 20:17:45

是的,我想我可以做到。非常感谢你的帮助!

ericjlarson-met 发表于 2022-7-5 20:21:00

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

LibertyOne 发表于 2022-7-5 20:22:24

ericjlarson-met 发表于 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?

LibertyOne 发表于 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.
页: [1] 2
查看完整版本: 动态生成。DCL fil公司