好的,在Roy提出了一些有用的问题之后,我们从这里开始:
- (defun C:test ( / SS i e pts b enx )
- (if
- (setq SS
- (ssget "_:L-I"
- '(
- (-4 . "<OR")
- (-4 . "<AND") (0 . "LINE") (-4 . "AND>")
- (-4 . "<AND") (0 . "LWPOLYLINE") (90 . 2) (70 . 0) (-4 . "AND>")
- (-4 . "OR>")
- )
- )
- )
- (repeat (setq i (sslength SS))
- (setq e (ssname SS (setq i (1- i))))
- (setq pts (list (vlax-curve-getStartPoint e) (vlax-curve-getEndPoint e)))
- (and
- (setq b (ssget "F" pts '((0 . "INSERT") (2 . "G-BIG"))))
- (setq b (ssname b 0))
- (setq enx (entget b))
- (setq enx (subst (cons 10 (apply 'mapcar (cons '(lambda (a b) (/ (+ a b) 2.)) pts))) (assoc 10 enx) enx))
- (setq enx (subst (cons 50 (apply 'angle pts)) (assoc 50 enx) enx))
- (entmod enx)
- )
- )
- )
- (princ)
- );| defun |; (vl-load-com) (princ)
只需计算出块的比例。 |