大家好,
我和一位同事一直在尝试增强打印autocad块的批处理打印程序。目前,我们有一个lisp例程,要求用户手动选择一个块(边框),并从中获取其位置和比例设置,以设置图形的其他变量,包括基于边框插入点位置的限制。我们使用批处理图中的限制来知道要打印的窗口,这样即使在某个边界之外有几何体,也只会打印其中的几何体。
我们试图做的是让batch plot程序(用VB6编写)在打开图形进行打印时拾取边框。因此,起草者不必记住手动读取边界。
我们的问题是:我们可以发现图形中存在边界块。我们已经找到了允许我们删除该块、分解它等的代码,但没有任何代码可以简单地让我们通过编程“选择”它。
如果可能的话,有人举过这样的例子吗。或者你还有其他想法吗?
如果有帮助,下面是我们用来手动获取边界信息的lisp:
- (Defun Setx (/ os a b c d e l)
- (Setvar "Cmdecho" 0)
- (Setq os (Getvar "Osmode"))
- (Setvar "Osmode" 0)
- (Setq a (Entsel "\nSelect Block:"))
- (While (Not a)
- (Prompt "\nYou Missed... Try Again")
- (Setq a (Entsel "\n Select Block:"))
- )
- (Setq b (Entget (Car a)))
- (Setq c (Cdr (Assoc 42 b)))
- (Setq d (Cdr (Assoc 10 b)))
- (Setq e (Mapcar '+ (Mapcar '(Lambda (x) (* x c)) '(32 20)) d))
- (Setvar "Dimscale" c)
- (Setvar "Textsize" (* 0.125 c))
- (Setvar "Ltscale" (/ c 4))
- (Command ".Setvar" "Limmin" d)
- (Command ".Setvar" "Limmax" e)
- (Setvar "Cmdecho" 1)
- (Command ".Line" d e "")
- (Command "Delay" "5")
- (Setq l (Ssget "X" (List (Cons 0 "Line") (Cons 10 d))))
- (Command ".Erase" l "")
- (Setvar "Osmode" os)
- (Prompt "\n ")
- (Print (Getvar "Dimscale"))
- (Prompt " is now the Current Dimscale.")
- (Prompt "\nLimits were Set as Shown.")
- (Princ)
- )(PRINC)
感谢您的反馈!
MBS公司 |