马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
本帖最后由 wgl7212191 于 2018-11-8 12:42 编辑
 - (defun getln (PR)
- (setq mTYPE "nil"
- PRMPT (strcat "\n 拾取" PR "线 ")
- )
- (while (/= mTYPE "LINE")
- (if (/= (setq TEMP (entsel PRMPT)) nil)
- (progn
- (setq LN1 (entget (car TEMP))
- mTYPE (cdr (assoc 0 LN1))
- )
- (if (/= mTYPE "LINE")
- (print (strcat "不能开 " mTYPE))
- )
- )
- (print "Invalid point")
- )
- )
- )
- (defun C:BISECT
- (/ P1 P2 P3 P4 PIK1 PIK2 LN1 P5 P6 ANGA ANGB ANGC TEMP mTYPE)
- (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)
- )
上面代码是“Visual LISP 及 及VBA for AutoCAD 2000 程序 123例” 中一段代码,功能是画两条直线的角平分线。有个问题想请教一下。
assoc 10 LN1 和assoc 11 LN1应该是取某直线的两个端点,为什么是10和11,其他序号可以取出什么?比如assoc 8 LN1会取出什么?
取出来的是名称是什么?我的标题中用了某某
|