本帖最后由 ll_j 于 2013-6-9 10:29 编辑
kxdm1984 发表于 2013-6-9 00:05
是这样的,这个cad图中多段线起点在右边终点在左边,用以下代码得到x、y方向增量是这样的:((-169.046 279.3 ...
还按G版的代码延续下去:
- (setq lst
- ((lambda (l)
- (mapcar
- (function
- (lambda
- (a b)
- (mapcar '- b a)
- )
- )
- l
- (cdr l)
- )
- )
- (if (< (caar (setq lst (mapcar
- 'cdr
- (vl-remove-if-not
- (function
- (lambda (x) (= 10 (car x)))
- )
- (entget (car (entsel "\n选择多段线:")))
- )
- )
- )
- )
- (caar (reverse lst))
- )
- lst
- (reverse lst)
- )
- )
- )
通俗一点应该是这样:
- (defun c:tt ()
- (defun tmp (l)
- (mapcar
- (function
- (lambda
- (a b)
- (mapcar '- b a)
- )
- )
- l
- (cdr l)
- )
- )
- (setq lst (mapcar
- 'cdr
- (vl-remove-if-not
- (function
- (lambda (x) (= 10 (car x)))
- )
- (entget (car (entsel "\n选择多段线:")))
- )
- )
- )
- (if (> (caar lst) (caar (reverse lst)))
- (setq lst (reverse lst))
- )
- (setq lst (tmp lst))
- )
|