 - ;;圆、弧时,如果中心点没有相互垂直的两条线,画十字中心线
- (defun HH:circleCross (en / ANG1 ANG2 E1EN E1ST E2EN E2ST EN1 EN2 ENT P10 PX1 PX2 PY1 PY2 R
- SS)
- (setq ent (entget en))
- (setq p10 (cdr (assoc 10 ent)))
- (setq r (* (cdr (assoc 40 ent)) 1.25))
- (if (and (setq ss (ssget "_C"
- p10
- p10
- (list '(-4 . "<or") '(0 . "LINE") '(-4 . "<and")
- '(0 . "LWPOLYLINE") '(90 . 2)
- '(-4 . "and>") '(-4 . "or>")
- )
- )
- )
- (cond ((equal (sslength ss) 2)
- (setq en1 (ssname ss 0))
- (setq en2 (ssname ss 1))
- (setq e1st (vlax-curve-getStartPoint en1))
- (setq e1en (vlax-curve-getendPoint en1))
- (setq e2st (vlax-curve-getStartPoint en2))
- (setq e2en (vlax-curve-getendPoint en2))
- (setq ang1 (angle e1st e1en))
- (setq ang2 (angle e2st e2en))
- (equal (rem (- ang1 ang2) (/ pi 2)) 0)
- )
- ((> (sslength ss) 2) T)
- (T nil)
- )
- )
- nil
- (progn
- (setq px1 (mapcar '- p10 (list r 0 0)))
- (setq px2 (mapcar '+ p10 (list r 0 0)))
- (entmake (list (cons 0 "LINE") (cons 10 px1) (cons 11 px2)))
- (setq py1 (mapcar '- p10 (list 0 r 0)))
- (setq py2 (mapcar '+ p10 (list 0 r 0)))
- (entmake (list (cons 0 "LINE") (cons 10 py1) (cons 11 py2)))
- )
- )
- )
- (defun C:W3 (/ EN)
- (setq en (car (entsel)))
- (HH:circleCross en)
- (princ)
- )
|