几何尺寸与公差论坛------致力于产品几何量公差标准GD&T (GDT:ASME)|New GPS(ISO)研究/CAD设计/CAM加工/CMM测量

几何尺寸与公差论坛------致力于产品几何量公差标准GD&T (GDT:ASME)|New GPS(ISO)研究/CAD设计/CAM加工/CMM测量 (http://www.dimcax.com/hust/index.php)
-   数据库ObjectDBX (http://www.dimcax.com/hust/forumdisplay.php?f=177)
-   -   【转帖】帮忙看看自动做图框的lsp,能做图框,为什么不是块。 (http://www.dimcax.com/hust/showthread.php?t=13539)

yang686526 2009-04-28 01:17 PM

【转帖】帮忙看看自动做图框的lsp,能做图框,为什么不是块。
 
帮忙看看自动做图框的lsp,能做图框,为什么不是块。
www.dimcax.com
帮忙看看自动做图框的lsp,能做图框,为什么不是块。
想做成一个图框块。
;;; 此程序用于绘制图框.
;;;-------------------------------------------------------------------------
(setq i (getvar "dimscale")) ;获取比例
(setvar "regenmode" 1) ;保证autocad不询问是否重新生成
(setvar "cmdecho" 0) ;屏蔽command显示
(setq cl (getvar "clayer") osm (getvar "osmode"))
(command "limits" "off")
(setvar "osmode" 0)
(initget "0 1 2 3 4")
(princ "\nsmcad-lsp, 绘制图框 ...")
(setq tf (getkword "\n选择标准图幅(0-4)<4>:"))
(if (not tf) (setq tf 4) (setq tf (atoi tf)))
(if (= tf 4) (progn
(initget "hor ver")
(setq hv (getkword "\nstyle(ver/hor)<ver>:"))
(if (not hv) (setq hv "ver"))
(if (= hv "hor") (setq bb 210. ll 297.) (setq bb 297. ll 210.))) ;progn
) ;if
(cond ((= tf 0) (setq bb 841. ll 1188.)) ;841x1188
((= tf 1) (setq bb 594. ll 841.)) ;546x841
((= tf 2) (setq bb 420. ll 594.))
((= tf 3) (setq bb 297. ll 420.))
) ;cond
(setq aa 25 i ii)
(if (< tf 3) (setq cc 10) (setq cc 5))
(setq aa (* aa i) ll (* ll i) bb (* bb i) cc (* cc i))
(command "layer" "s" "0" "")
(command "pline" '(0 0) "w" (* i 0.5) (* i 0.5)
(polar '(0 0) 0 (- ll aa cc))
(polar (getvar "lastpoint") (/ pi 2) (- bb cc cc))
(polar '(0 0) (/ pi 2) (- bb cc cc)) "cl")
(command "layer" "s" "0" "")
(command "pline"
(setq pti (list (- aa) (- cc))) "w" 0 0
(polar (getvar "lastpoint") 0 ll)
(setq ptm (polar (getvar "lastpoint") (/ pi 2) bb))
(polar (list (- aa) (- cc)) (/ pi 2) bb) "cl")
(command "limits" (polar pti -2.356 i) (polar ptm 0.785 i)
"zoom" "e")
(setq fn (strcat " file name: " (strcase (getvar "dwgname")) ".dwg"))
(command "insert" "/block/sign.dwg" "0,0" i i 0
"text" (list (* -1.5 i) (* 105 i)) (* i 3) 90 fn)
(command "layer" "s" cl "")
(setvar "osmode" osm)
(princ)
(defun c:autostbk()
(princ "\nauto camd (ver.szp), automatic-set a block...")
(setq osmode_save (getvar "osmode"))
(setvar "osmode" 0)
(setq sss (ssget))
(if sss (progn
(setq cd (rtos (getvar "cdate") 2 6))
(setq cd (substr cd (- (strlen cd) 5)))
(command "block" (strcat "auto-set-" cd) (getvar "viewctr") sss "")
(command "insert" (strcat "auto-set-" cd) (getvar "viewctr") 1 1 0)
) ;progn
) ;if
(setvar "osmode" osmode_save)
(princ)
)
(c:autostbk)

应该是形成一个块,只是需人工选择作成块的元素范围


所有的时间均为北京时间。 现在的时间是 05:43 AM.