中心线--支持CIRCLE、ARC、LINE、ELLIPSE
 - [FONT=courier new]
- (load "xyp_lib")
- ;|加载通用函数(可在签名栏直接下载)
- 如果已经下载xyp_lib并放到搜索路径下可以不再下载!
- 利用以下任何一种方式(首选第一种)即可加载和运行通用函数内的所有子程序:
- ★1·在acad.lsp中增加(load"xyp_lib")
- ■2·在每个程序内增加(load"xyp_lib")
- ■3·在command下,输入(load"xyp_lib")
- ■4·在菜单.mnl中增加(load"xyp_lib")
- ■5·将xyp_lib.vlx文件直接拽到cad屏幕
- [COLOR=red] ★通用函数下载地址:[/COLOR]
- [url]http://www.xdcad.net/forum/attachment.php?s=&postid=1606661[/url]
- |;
- ;;;中心线--支持CIRCLE、ARC、LINE、ELLIPSE
- (defun c:test ()
- (CMDLA0)
- (setq s1 (car (entsel "\n选择实体 : "))
- etype (xyp-get-Dxf 0 s1)
- )
- (mkla "ZXX" 1)
- (cond ((or (= etype "CIRCLE") (= etype "ARC"))
- (setq rad (xyp-get-Dxf 40 s1))
- (setvar "DIMCEN" rad)
- (command "dim1" "cen" (list s1 '(0 0)))
- )
- ((= etype "LINE")
- (setq s2 (car (entsel "\n选择LINE线 : "))
- etype2 (xyp-get-Dxf 0 s2)
- )
- (while (/= etype2 "LINE")
- (setq s2 (car (entsel "\n选择LINE线 : "))
- etype2 (xyp-get-Dxf 0 s2)
- )
- )
- (setq pt10 (xyp-get-MinMaxPoint s1 1)
- pt11 (xyp-get-MinMaxPoint s1 0)
- pt20 (xyp-get-MinMaxPoint s2 1)
- pt21 (xyp-get-MinMaxPoint s2 0)
- pt (inters pt10 pt11 pt20 pt21 nil)
- ang1 (angle pt10 pt11)
- ang2 (angle pt20 pt21)
- )
- (if (> ang1 ang2)
- (setq ang (+ (/ (- ang1 ang2) 2) ang2))
- (setq ang (+ (/ (- ang2 ang1) 2) ang1))
- )
- (setq pt1 (polar pt ang 1000)
- pta (inters pt10 pt20 pt pt1 nil)
- ptb (inters pt11 pt21 pt pt1 nil)
- )
- (command "line" pta ptb "")
- )
- ((= etype "ELLIPSE")
- (setq pt10 (xyp-get-Dxf 10 s1)
- l1 (abs (CAR (xyp-get-Dxf 11 s1)))
- l2 (* l1 (xyp-get-Dxf 40 s1))
- )
- (command "LINE" (polar pt10 pi l1) (polar pt10 0 l1) "")
- (command "LINE"
- (polar pt10 (* pi 0.5) l2)
- (polar pt10 (* pi 1.5) l2)
- ""
- )
- )
- ;;待续
- (t (princ "\暂不支持此类实体!"))
- )
- (CMDLA1)
- )
- [/FONT]
|