精度:误差值为总面积的万分之一
 - [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]
- |;
- (defun c:test ()
- (cmdla0)
- (mkla "界线" 1)
- (setvar "osmode" 0)
- (setq pt (getpoint "\n封闭域内一点 : ")
- i 0
- ll (* (getvar "viewsize") 0.05)
- )
- (command "bpoly" pt "")
- (setq en (entlast))
- (if (/= en nil)
- (progn
- (command "area" "o" en)
- ;;误差值为总面积的万分之一
- (setq a0 (* (getvar "area") 0.0001))
- )
- )
- (command "line" pt (polar pt (* pi 0.5) ll) "")
- (setq s1 (entlast)
- ptn (xyp-get-inters s1 en 1)
- pt1 (car ptn)
- pt2 (cadr ptn)
- ptdn (xyp-get-MidPointDN pt1 pt2 ll)
- ptup (xyp-get-MidPointup pt1 pt2 ll)
- )
- (entdel s1)
- (command "line" pt1 pt2 "")
- (setq s0 (entlast))
- (command "bpoly" ptdn "")
- (setq e1 (entlast))
- (command "area" "o" e1)
- (setq a1 (getvar "area"))
- (entdel e1)
- (command "bpoly" ptup "")
- (setq e2 (entlast))
- (command "area" "o" e2)
- (setq a2 (getvar "area"))
- (entdel e2)
- (while (> (abs (- a1 a2)) a0)
- (entdel s0)
- (command "line"
- pt
- ;;角度增加量0.001弧度
- (polar pt (+ (* pi 0.5) (setq i (+ i 0.001))) ll)
- ""
- )
- (setq s1 (entlast)
- ptn (xyp-get-inters s1 en 1)
- pt1 (car ptn)
- pt2 (cadr ptn)
- ptdn (xyp-get-MidPointDN pt1 pt2 ll)
- ptup (xyp-get-MidPointup pt1 pt2 ll)
- )
- (entdel s1)
- (command "line" pt1 pt2 "")
- (setq s0 (entlast))
- (command "bpoly" ptdn "")
- (setq e1 (entlast))
- (command "area" "o" e1)
- (setq a1 (getvar "area"))
- (entdel e1)
- (command "bpoly" ptup "")
- (setq e2 (entlast))
- (command "area" "o" e2)
- (setq a2 (getvar "area"))
- (entdel e2)
- )
- (entdel en)
- (mkla "面积" 4)
- (xyp-Text ptdn 5 (rtos a1 2 3))
- (xyp-Text ptup 5 (rtos a2 2 3))
- (mkla "界点" 1)
- (setvar "pdmode" 35)
- (setvar "pdsize" 50)
- (command "point" pt)
- (command "chprop" s0 "" "la" "界线" "")
- (cmdla1)
- )[/FONT]
可控制精度版: |