souvik 发表于 2022-7-6 07:46:03

按页面大小绘制矩形

我需要一个lisp将绘制一个矩形根据给定的页面大小(如ISO A4,A3,A1)在横向和纵向格式。请帮帮我。

MSasu 发表于 2022-7-6 07:55:43

您可以以此为起点:
; Draw an ISO Format (04-VII-2012)
(defun c:DISOF( / listSize size poz)
(if (and (not (initget "A4 A3"))
         (setq size (getkword "\nFormat : "))
         (not (initget "Portrait Landscape"))
         (setq poz(getkword "\nPozition : ")))
(progn
(setq listSize (nth (abs (- 4 (atoi (substr size 2))))
                      '((297.0 210.0) (420.0 297.0))))
(if (= poz "Portrait") (setq listSize (reverse listSize)))
(command "_RECTANGLE" "_non" '(0.0 0.0) "_non" listSize)
)
)
(princ)
)

Lee Mac 发表于 2022-7-6 07:59:16

以下程序将根据布局的当前打印设置绘制指定给当前布局的图纸:
 
(defun c:drawpaper ( / l h w )
   (setq l (vla-get-activelayout (vla-get-activedocument (vlax-get-acad-object))))
   (vla-getpapersize l 'w 'h)
   (command "_.rectang" "_non" '(0.0 0.0) "_non"
       (if (member (vla-get-plotrotation l) '(0 2))
         (list w h)
         (list h w)
       )
   )
   (princ)
)
(vl-load-com) (princ)

souvik 发表于 2022-7-6 08:03:09

 
谢谢,这就是我需要的。但如果你能加上A0和A1尺寸,这将非常有用。

MSasu 发表于 2022-7-6 08:09:34

我希望你能自己编辑它。提示,请注意需要按A2、A1和A0的顺序添加tem。

souvik 发表于 2022-7-6 08:12:21

O、 我正在试着编辑它。然后我会把它贴在这里。。

MSasu 发表于 2022-7-6 08:17:01

很高兴听到这个!这就是精神;祝你好运

souvik 发表于 2022-7-6 08:24:41

 
我试过了。请检查。。
 
(defun c:DISOF( / listSize size poz)
(if (and (not (initget "A4 A3 A2 A1"))
         (setq size (getkword "\nFormat : "))
         (not (initget "Portrait Landscape"))
         (setq poz(getkword "\nPozition : ")))
(progn
(setq listSize (nth (abs (- 4 (atoi (substr size 2))))
                      '((297.0 210.0) (420.0 297.0) (594.0 420.0) ( 841.0 594.0))))
(if (= poz "Portrait") (setq listSize (reverse listSize)))
(command "_RECTANGLE" "_non" '(0.0 0.0) "_non" listSize)
)
)
(princ)
)

MSasu 发表于 2022-7-6 08:28:03

确切地祝贺
 
(请编辑您的上一篇文章,并为代码添加所需的标签。谢谢)

eldon 发表于 2022-7-6 08:33:10

从纯粹的实际观察来看,这些是实际的板材尺寸,没有通常的15mm框架偏移裕度。如果您尝试将这些尺寸用于画框,则将永远无法使用按所需比例显示的画框绘制图形。
页: [1] 2
查看完整版本: 按页面大小绘制矩形