圆、弧时,如果中心点没有相互垂直的两条线,画十字中心线
;;圆、弧时,如果中心点没有相互垂直的两条线,画十字中心线(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)
)
黄老师,这函数我给你挖出来,让你回忆下,哈哈。
可不可以圆与直线弧与直线 他们的最近点两线链接并垂直啊。
页:
[1]