布局纸张区域?
你好我想问一下,是否有人有lisp来计算布局打印纸的面积。谢谢 这对我很有效:http://forums.autodesk.com/t5/visual-lisp-autolisp-and-general/how-to-get-real-printable-size-per-layout-via-lisp/td-p/5527568 嗨,汤姆布,谢谢你的回复。这个lisp给了我每个布局的尺寸,我想要一个lisp来计算当前布局的面积。
谢谢 还有其他想法吗? extmin extmax 嗨,比格尔。我需要计算当前布局的打印成本。
第一个lisp代码为我提供了所有布局的尺寸。这个lisp计算最后一个布局的成本。有人可以更改它来计算当前布局的成本吗?
(defun c:test (/ lo wdt lg plotarea)
(vl-load-com)
(vlax-for lo (vla-get-layouts (vla-get-activedocument (vlax-get-acad-object)))
(vla-getpapersize lo 'wdt 'lg)
(setq plotarea (list wdt lg))
(princ "\n")
(princ (vla-get-name lo))
(princ "\n\t\tPlot size - ")
(princ
(if
(zerop (rem (vla-get-plotrotation lo) 2))
plotarea
)
)
)
(setq area (/( * wdt lg) 1000000))
(setq pr (cond ((getreal"\n The print cost €/sq.m (π.χ 2.30 €/sq.m monochromeή 3.50 €/sq.m color) : "))(2.30)))
(setq cost (* pr area))
(setq sx (cond ((getreal"\n Give the number of copies (example 3) : "))(3)))
(setq scost (* sx cost))
(textscr)
(princ (strcat
"\n Calculations"
"\n --------------------------------------------------------------------------"
"\n dimension x = "
(rtos wdt 2 2)
" m"
"\n dimension y = "
(rtos lg 2 2)
" m"
"\n Area of the print paper = "
(rtos area 2 2)
" sq.m"
"\n Cost per drawing = "
(rtos cost 2 2)
" €"
"\n Total Cost of Printing = "
(rtos scost 2 2)
" €"
)
)
(princ)
)
谢谢 我更新了代码,但仍然有同样的问题。此lisp计算最后一个布局的成本 尝试此修订代码。。。
(defun c:test (/ lo wdt lg plotarea)
(vl-load-com)
;(vlax-for lo (vla-get-layouts (vla-get-activedocument (vlax-get-acad-object)))
(setq lo (vla-item (vla-get-layouts (vla-get-activedocument (vlax-get-acad-object))) (getvar 'CTAB)))
(vla-getpapersize lo 'wdt 'lg)
(setq plotarea (list wdt lg))
(princ "\n")
(princ (vla-get-name lo))
(princ "\n\t\tPlot size - ")
(princ
(if
(zerop (rem (vla-get-plotrotation lo) 2))
plotarea
(reverse plotarea); <<<<
)
)
(setq area (/( * wdt lg) 1000000))
(setq pr (cond ((getreal"\n The print cost €/sq.m (p.? 2.30 €/sq.m monochrome? 3.50 €/sq.m color) : "))(2.30)))
(setq cost (* pr area))
(setq sx (cond ((getreal"\n Give the number of copies (example 3) : "))(3)))
(setq scost (* sx cost))
(textscr)
(princ (strcat
"\n Calculations"
"\n --------------------------------------------------------------------------"
"\n dimension x = "
(rtos wdt 2 2)
" m"
"\n dimension y = "
(rtos lg 2 2)
" m"
"\n Area of the print paper = "
(rtos area 2 2)
" sq.m"
"\n Cost per drawing = "
(rtos cost 2 2)
" €"
"\n Total Cost of Printing = "
(rtos scost 2 2)
" €"
)
)
(princ)
)
可能成为:
(setq lo (vla-item (vla-get-layouts (vla-get-activedocument (vlax-get-acad-object))) (getvar 'CTAB))) 谢谢大家的帮助 也许代码可以缩短为:
(setq lo (vla-get-activelayout (vla-get-activedocument (vlax-get-acad-object))))
页:
[1]
2