liminnet 发表于 2008-6-28 11:18:00
liminnet 发表于 2008-6-29 19:35:00
yxp 发表于 2008-6-29 19:47:00
本帖最后由 作者 于 2008-6-29 20:00:43 编辑 <br /><br /> <p>程序中视口名列表的返回子程序 views_list,参考了 <font face="Verdana" color="#61b713"><strong>caoyin </strong><font color="#000000">的对象编组名的返回程序,本人在这里对 <font face="Verdana" color="#61b713"><strong>caoyin </strong><font color="#000000">大侠表示衷心感谢</font></font>。</font></font></p><p>参见<a href="http://bbs.mjtd.com/forum.php?mod=viewthread&tid=67629&replyID=94084&skin=1">http://bbs.mjtd.com/forum.php?mod=viewthread&tid=67629&replyID=94084&skin=1</a></p><p>图面分块程序已更新,可在群里下载。</p><p><br/>;;图面分块程序,对空白块则跳过 by:yxp</p><p>(defun c:fk( / p1 p2 wp hp wpxn wpyn pp1 n pp2 asn pp tem)<br/> (setvar "cmdecho" 0)<br/> ;;输入分块的参数,共四个数据<br/> (setq p1 (getpoint "\n 请输入对角线第一点:") p2 (getpoint "\n 请输入对角线第二点:")<br/> wp (getint "\n 请输入水平分块数:") <br/> hp (getint "\n 请输入竖向分块数:"))<br/> <br/> ;;求出每块的宽度和高度 <br/> (setq wpxn (abs (/ (- (car p1) (car p2)) wp))<br/> wpyn (abs (/ (- (cadr p1) (cadr p2)) hp)))<br/> <br/> ;;计算出左上点 <br/> (setq pp1 (list (min (car p1) (car p2)) (max (cadr p1) (cadr p2))))<br/> <br/> ;;生成分块列表,横向为A1,A2,A3... 竖向为A1,B1,C1...<br/> (setq pp '() asn 65)<br/> (repeat hp<br/> (setq n 1 pp2 pp1)<br/> (repeat wp<br/> (setq lb (list (strcat (chr asn) (itoa n)) (list pp2 (addxp pp2 wpxn (* -1 wpyn))))<br/> pp2 (addxp pp2 wpxn 0)) ;;求出每块的对角线坐标<br/> (delps)(command "select" "c" (addxp (car (cadr lb)) 0.0001 -0.0001)<br/> (addxp (cadr (cadr lb)) -0.0001 0.0001) "") <br/> (if (ssget "p") (setq pp (cons lb pp) n (1+ n)))<br/> ) <br/> (setq pp1 (addxp pp1 0 (* -1 wpyn))<br/> asn (1+ asn))<br/> ) (setq pp (reverse pp)) </p><p> ;;绘制分块,写块名,建立视图列表<br/> (setq n 0) (setvar "osmode" 0)(command "undo" "be")<br/> (repeat (length pp) <br/> (command "text" "j" "mc" (addxp (car (cadr (nth n pp))) (/ wpxn 2) (/ wpyn -2)) (/ wpxn 4) "" (car (nth n pp)) )<br/> (command "rectang" (car (cadr (nth n pp))) (cadr (cadr (nth n pp)))) <br/> (command "view" "w" (car (nth n pp)) (car (cadr (nth n pp))) (cadr (cadr (nth n pp))))<br/> (setq n (+ n 1))<br/> ) (command "undo" "e") (princ)<br/>)</p><p><br/>(defun addxp(li x y)(list (+ (car li) x) (+ (cadr li) y))) </p><p>(defun delps( / aa) ;;清除上一个选择集<br/>(command "line" "0,0" "0,1" "")(setq aa (entlast))<br/>(command "select" aa "")(entdel aa)<br/>)</p>liminnet 发表于 2008-6-30 15:16:00
liminnet 发表于 2008-7-1 23:18:00
页:
[1]