大家好,我刚学Auotlsp的,自己设计了个程序,用到了rectang命令,但是绘制出来的是直线,有时候又会出现矩形,但位置与我指定的位置不一致,不知是何缘故,麻烦大家指点一二,谢谢!
以下是代码:
;***********************************<<C G>>*********************************** ;此程序是实现自动绘制栏杆的平面,用户输入栏杆起始点,栏杆宽为50mm,柱子的间距为500mm。 (defun c:lg() ;;; 准备及用户输入阶段 (setvar "cmdecho" 0) (setq pt (getpoint "\n请输入栏杆起始点:")) (setq len (getdist pt "\n请输入栏杆长度:")) (initget "U u D d") (setq drt (getkword "\n请输入栏杆方向U OR D <U>")) ;;; 保存当前图层信息,并设置栏杆绘制的图层为“栏杆” (setq cl (getvar "clayer")) ;保存当前图层名称 (setq chklay (tblsearch "layer" "栏杆")) ;若没有栏杆图层,则新建立该图层 (if (null chklay) (command "-layer" "n" "栏杆" "c" "6" "栏杆" "") ) (setvar "clayer" "栏杆") ;设置栏杆绘制的新图层 ;;; 绘制栏杆的矩形 (if (= drt nil) (setq drt "U")) (setq drt (strcase drt)) (if (= drt "D") (recdrd)) (if (= drt "U") (recdru)) ;;; 绘制栏杆的柱子 ;绘制起始圆 (setq my (+ (cadr pt1) 25)) (setq mpt (list (car pt1) my)) (command "circle" mpt 25 "") (setq n (/ len 500)) (setq n (fix n)) (setq en1 (entlast)) (command "array" en1 "" "" "" (1+ n) 500)
(setvar "clayer" cl) )
;;;根据pt点绘制D向矩形 (defun recdrd ( ) ;确定矩形的第一个点 (setq mx (+ (car pt) 50)) (setq my (- (cadr pt) 50)) (setq pt1 (list mx my)) ;确定矩形的第二个点 (setq mx (+ (car pt1) (- len 100))) (setq my (- (cadr pt1) 50)) (setq pt2 (list mx my)) (command "rectang" pt1 pt2 ) (prompt"\n 执行向下绘制矩形命令") ) ;;;根据pt点绘制U向矩形 (defun recdru ( ) ;确定矩形的第一个点 (setq mx (+ (car pt) 50)) (setq my (+ (cadr pt) 50)) (setq pt1 (list mx my)) ;确定矩形的第二个点 (setq mx (+ (car pt1) (- len 100))) (setq my (+ (cadr pt1) 50)) (setq pt2 (list mx my)) (command "rectang" pt1 pt2 ) (prompt"\n 执行向上绘制矩形命令")
)
(prompt"\n **********<<LG>>**********实现自动绘制栏杆的平面**********") (prin1) ;***********************************<<C G>>*********************************** |