iCAx开思网

标题: AUTO CAD的长度尺寸驱动 程序 [打印本页]

作者: corlor    时间: 2010-4-21 22:43
标题: AUTO CAD的长度尺寸驱动 程序
网上有很多关于AUTO CAD的长度驱动程序,但都是有一点小问题,今天我把改后的程序发给大家,该程序只能驱动长度尺寸。希望有高手能够编出能驱动角度尺寸、圆直径尺寸等的程序来跟大家分享。
下面的程序使用方法:将下面的程序复制到txt文档中,保存为“xxx.lsp”格式的文件。然后打开AUTO CAD软件,在“工具”中选“加载应用程序”找到保存好的“xxx.lsp”文件,确定即可加载成功。使用时,在命令行中输入“tt”即可,选择长度尺寸标准,更改数值,线的长度自动就会更改。
(defun c:tt(/ BLB EP ESPL N-EP N-SP NEW-T SD SD-DXF SEA SEB SP SS1 SS2 SS3)
(setq SD (entsel "\n选择驱动尺寸:"))
(if SD
  (PROGN
    (SETQ SD-DXF (ENTGET (CAR SD)))
    (WHILE (NOT (wcmatch (CDR (ASSOC 0 SD-DXF)) "*DIM*"))
(setq SD (entsel "\n选择驱动尺寸:"))
(SETQ SD-DXF (ENTGET (CAR SD))))
    (SETQ SP (CDR (ASSOC 13 SD-DXF))
  EP (CDR (ASSOC 14 SD-DXF))
  ESPL (DISTANCE SP EP)
  SEA (ANGLE SP EP)
  SEB (ANGLE EP SP)
  NEW-T (getdist "\n新的长度:"))
    (while (eq nil NEW-T)
(setq NEW-T (getdist "\n新的长度:")))
    (if NEW-T
(progn
    (setq BLB (* 1 (abs (- NEW-T ESPL))))
    (if (> ESPL NEW-T )
(setq N-SP (POLAR SP SEA BLB)
    N-EP (POLAR EP (+ PI SEA) BLB))
(setq N-SP (POLAR SP SEB BLB)
    N-EP (POLAR EP (+ PI SEB) BLB))
)
    (setvar "osmode" (logior (getvar "osmode") 16384))
    (setvar "cmdecho" 0)
    (vl-cmdf "_.undo" "_group")
    (SETQ SS1 (SSGET "C" (POLAR SP (+ PI (* 0.25 PI)) 0.4)(POLAR SP (* 0.25 PI) 0.4))
  SS2 (SSGET "C" (POLAR EP (+ PI (* 0.25 PI)) 0.4)(POLAR EP (* 0.25 PI) 0.4))
  )
    (IF SS1
(COMMAND "STRETCH" (SSGET "C" (POLAR SP (+ PI (* 0.25 PI)) 0.4)(POLAR SP (* 0.25 PI) 0.4))
  ""SP N-SP))
    (IF SS3
(COMMAND "STRETCH" (SSGET "C" (POLAR EP (+ PI (* 0.25 PI)) 0.4)(POLAR EP (* 0.25 PI) 0.4))
  ""EP N-EP))
    (vl-cmdf "_.undo" "_end")
    (setvar "osmode" (logand (getvar "osmode") 49151))
    (PRINC"\n尊重原创, 更改:DEWEY\n尺寸驱动程序运行完毕, 能编出角度等驱动程序的请发贴与大家分享.谢谢!")))
    )
  )
(princ)
)

本帖最后由 corlor 于 2010-4-21 22:47 编辑
作者: gxjh    时间: 2010-4-22 16:38
学习学习
作者: hhxxttxs    时间: 2010-4-27 15:42
谢谢楼主,程序能用,请问能控制方向吗?




欢迎光临 iCAx开思网 (https://www.icax.org/) Powered by Discuz! X3.3