马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
这是我学LSP后写的第三个程序,请高手不要笑话!
- ; bisect.lsp
- ;平分角,拾取两条线并从其交点绘制平分线延长至第一个拾取点。
- ;如果两线平行则中止。
- (defun getln (PR)
- (setq TYPE "nil"
- PRMPT (strcat "\n拾取" PR "线: "))
- (while (/= TYPE "LINE")
- (if (/= (setq TEMP (entsel PRMPT)) nil)
- (progn
- (setq LN1 (entget (car TEMP))
- TYPE (cdr (assoc 0 LN1)))
- (if (/= TYPE "LINE")
- (print (strcat "不能截开 " TYPE)))
- )
- (print "Invalid point")
- )
- ) ;end while
- ) ;end getln()
- (defun C:BISECT(/ P1 P2 P3 P4 PIK1 PIK2 LN1 P5 P6 ANGA ANGB ANGC TEMP TYPE)
- (getln "第一条")
- (setq P1 (cdr (assoc 10 LN1))
- P2 (cdr (assoc 11 LN1))
- PIK1 (osnap (cadr TEMP) "near")
- )
- (getln "第二条")
- (setq p3 (cdr (assoc 10 LN1))
- P4 (cdr (assoc 11 LN1))
- PIK2 (osnap (cadr TEMP) "near")
- )
- ; 取交点和角度
- (setq P5 (inters P1 P2 P3 P4 nil)
- ANGA (angle P5 PIK1)
- ANGB (angle P5 PIK2)
- )
- (if (> ANGA ANGB)
- (setq ANGC (+ (/ (+ (- (* 2 pi) ANGA) ANGB) 2) ANGA))
- (setq ANGC (+ (/ (- ANGB ANGA) 2) ANGA))
- )
- ; 从交点绘制平分线到一定长度
- (command "LINE" P5 (polar P5 ANGC (distance P5 PIK1)) "")
- (prin1)
- ); end bisect.lsp
|