到目前为止,我已经写了这篇文章,其中“b”的值是测试值,但它并不适用于所有可能的多段线形状。更不用说它不是很漂亮了。
- (defun c:test (/ x pl g xx d li a tot b)
- (setq x (car (entsel "\n Select polyline: "))
- pl (entget x)
- c (cdr (assoc 10 pl))
- g (member (assoc 42 pl) pl)
- )
- ;(command "circle" c 1.0)
- (while g
- (setq xx (cdr (assoc 42 g))
- d (cdr g)
- g (member (assoc 42 d) d)
- li (append li (list xx))
- a (length li)
- )
- )
- (while li
- (if (and (car li) (zerop (car li)) (cadr li))
- (setq tot (+ (car li) (cadr li))
- a (length li)
- )
- (setq tot 0)
- )
- (if (= a 2)
- (setq b 0)
- (setq b (length li))
- )
- (if (zerop tot)
- (setq li nil)
- (setq li (cddr li))
- )
- )
- (princ)
- )
|