乐筑天下

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

[编程交流] 布局纸张区域?

[复制链接]

107

主题

615

帖子

575

银币

中流砥柱

Rank: 25

铜币
521
发表于 2022-7-5 19:44:03 | 显示全部楼层 |阅读模式
你好我想问一下,是否有人有lisp来计算布局打印纸的面积。
 
谢谢
回复

使用道具 举报

17

主题

1274

帖子

25

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
260
发表于 2022-7-5 19:51:13 | 显示全部楼层
这对我很有效:http://forums.autodesk.com/t5/visual-lisp-autolisp-and-general/how-to-get-real-printable-size-per-layout-via-lisp/td-p/5527568
回复

使用道具 举报

107

主题

615

帖子

575

银币

中流砥柱

Rank: 25

铜币
521
发表于 2022-7-5 19:54:54 | 显示全部楼层
嗨,汤姆布,谢谢你的回复。这个lisp给了我每个布局的尺寸,我想要一个lisp来计算当前布局的面积。
 
谢谢
回复

使用道具 举报

107

主题

615

帖子

575

银币

中流砥柱

Rank: 25

铜币
521
发表于 2022-7-5 19:57:12 | 显示全部楼层
还有其他想法吗?
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-5 20:05:27 | 显示全部楼层
extmin extmax
回复

使用道具 举报

107

主题

615

帖子

575

银币

中流砥柱

Rank: 25

铜币
521
发表于 2022-7-5 20:08:47 | 显示全部楼层
嗨,比格尔。我需要计算当前布局的打印成本。
第一个lisp代码为我提供了所有布局的尺寸。这个lisp计算最后一个布局的成本。有人可以更改它来计算当前布局的成本吗?
 
  1. (defun c:test (/ lo wdt lg plotarea)
  2. (vl-load-com)
  3. (vlax-for lo (vla-get-layouts (vla-get-activedocument (vlax-get-acad-object)))
  4.    (vla-getpapersize lo 'wdt 'lg)
  5.    (setq plotarea (list wdt lg))
  6.       (princ "\n")
  7.    (princ (vla-get-name lo))
  8.    (princ "\n\t\tPlot size - ")
  9. (princ
  10.      (if
  11.        (zerop (rem (vla-get-plotrotation lo) 2))
  12.        plotarea
  13.      )
  14.    )
  15. )
  16. (setq area (/( * wdt lg) 1000000))
  17. (setq pr (cond ((getreal  "\n The print cost €/sq.m (π.χ 2.30 €/sq.m monochrome  ή 3.50 €/sq.m color) : "))(2.30)))
  18. (setq cost (* pr area))
  19. (setq sx (cond ((getreal  "\n Give the number of copies (example 3) : "))(3)))
  20. (setq scost (* sx cost))
  21. (textscr)
  22. (princ (strcat
  23.                   "\n Calculations"
  24.                   "\n --------------------------------------------------------------------------"                    
  25.                    "\n dimension x = "
  26.                     (rtos wdt 2 2)
  27.                     " m"
  28.                     "\n dimension y = "
  29.                     (rtos lg 2 2)
  30.                     " m"
  31.                     "\n Area of the print paper = "
  32.                     (rtos area 2 2)
  33.                     " sq.m"
  34.                     "\n Cost per drawing = "
  35.                     (rtos cost 2 2)
  36.                     " €"
  37.                     "\n Total Cost of Printing = "
  38.                     (rtos scost 2 2)
  39.                     " €"
  40.             )
  41.      )
  42. (princ)
  43. )

 
 
谢谢
回复

使用道具 举报

107

主题

615

帖子

575

银币

中流砥柱

Rank: 25

铜币
521
发表于 2022-7-5 20:11:54 | 显示全部楼层
我更新了代码,但仍然有同样的问题。此lisp计算最后一个布局的成本
回复

使用道具 举报

1

主题

475

帖子

481

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-5 20:17:59 | 显示全部楼层
尝试此修订代码。。。
 
  1. (defun c:test (/ lo wdt lg plotarea)
  2. (vl-load-com)
  3. ;(vlax-for lo (vla-get-layouts (vla-get-activedocument (vlax-get-acad-object)))
  4. (setq lo (vla-item (vla-get-layouts (vla-get-activedocument (vlax-get-acad-object))) (getvar 'CTAB)))
  5.    (vla-getpapersize lo 'wdt 'lg)
  6.    (setq plotarea (list wdt lg))
  7.       (princ "\n")
  8.    (princ (vla-get-name lo))
  9.    (princ "\n\t\tPlot size - ")
  10. (princ
  11.      (if
  12.        (zerop (rem (vla-get-plotrotation lo) 2))
  13.        plotarea
  14.        (reverse plotarea); <<<<
  15.      )
  16.    )
  17. (setq area (/( * wdt lg) 1000000))
  18. (setq pr (cond ((getreal  "\n The print cost €/sq.m (p.? 2.30 €/sq.m monochrome  ? 3.50 €/sq.m color) : "))(2.30)))
  19. (setq cost (* pr area))
  20. (setq sx (cond ((getreal  "\n Give the number of copies (example 3) : "))(3)))
  21. (setq scost (* sx cost))
  22. (textscr)
  23. (princ (strcat
  24.                   "\n Calculations"
  25.                   "\n --------------------------------------------------------------------------"                    
  26.                    "\n dimension x = "
  27.                     (rtos wdt 2 2)
  28.                     " m"
  29.                     "\n dimension y = "
  30.                     (rtos lg 2 2)
  31.                     " m"
  32.                     "\n Area of the print paper = "
  33.                     (rtos area 2 2)
  34.                     " sq.m"
  35.                     "\n Cost per drawing = "
  36.                     (rtos cost 2 2)
  37.                     " €"
  38.                     "\n Total Cost of Printing = "
  39.                     (rtos scost 2 2)
  40.                     " €"
  41.             )
  42.      )
  43. (princ)
  44. )
可能成为:
  1. (setq lo (vla-item (vla-get-layouts (vla-get-activedocument (vlax-get-acad-object))) (getvar 'CTAB)))
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-5 20:18:57 | 显示全部楼层
谢谢大家的帮助
回复

使用道具 举报

107

主题

615

帖子

575

银币

中流砥柱

Rank: 25

铜币
521
发表于 2022-7-5 20:24:05 | 显示全部楼层
也许代码可以缩短为:
  1. (setq lo (vla-get-activelayout (vla-get-activedocument (vlax-get-acad-object))))
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-12 00:58 , Processed in 0.445825 second(s), 72 queries .

© 2020-2025 乐筑天下

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