缘份呐 发表于 2012-3-26 11:32:19

线段批量延伸或缩短,中心点不变

这个有点问题!请指正。


(defun c:LLL()
(setvar "osmode" 0)
(setq d (getdist "\n输入总长度: "))
(setq ss(ssget))
(setq len(sslength ss))
(setq i -1)
(repeat len
(setq i (1+ i))
(setq en1(ssname ss i));;获取对象
(setq e1 (entget en1)) ;;获取对象数据
(setq pt1 (assoc 10 e1)) ;取得起点的项
(setq ptt1 (assoc 11 e1));取得终点的项
(setq po1 (cdr pt1);起点坐标
       px1 (car po1)
       py1 (cadr po1))
(setq poo1 (cdr ptt1);终点坐标
       pxx1 (car poo1)
       pyy1 (cadr poo1))
(setq zx1 (/ (+ px1 pxx1) 2.0)
       zy1 (/ (+ py1 pyy1) 2.0)
       z1 (list zx1 zy1));中点数据
(setq x0 (- zx1 (/ d 2.0)));新的起点x数据
(setq y0 (- zy1 (/ d 2.0)))
(setq xn (+ zx1 (/ d 2.0)));新的终点Y数据
(setq yn (+ zy1 (/ d 2.0)))
(setqb0 '(x0 y0 0);新的起点
      bn '(xn yn 0));新的终点
(setq e1 (subst (cons 10 b0) (assoc 10 e1) e1));新的起点项取代旧的起点项
(setq e1 (subst (cons 11 bn) (assoc 11 e1) e1));新的终点项取代旧的终点项
(entmod e1) (entupd e1);更新数据
)
(princ)
)

这哩有些不行,
(setqb0 '(x0 y0 0);新的起点
      bn '(xn yn 0));新的终点


如果X0 Y0 是数字就行
(setqb0 '(0 0 0);新的起点
      bn '(100 100 0));新的终点
那样,线条就全成了这个数据了。

longer1000 发表于 2020-8-11 15:13:07

小小的人 发表于 2020-5-8 21:48
你好活跃啊   几乎每个帖子都能见到你

活跃为了下载,赚点小钱:lol

小小的人 发表于 2020-5-8 21:48:22

longer1000 发表于 2012-3-26 13:11


你好活跃啊   几乎每个帖子都能见到你

前生 发表于 2016-9-25 15:54:05

(setq ss(ssget (list (Cons 0 "line"))))

Gu_xl 发表于 2012-3-26 11:59:24

(setqb0 (list x0 y0 0);新的起点
      bn (list xn yn 0));新的终点

注册 发表于 2012-3-26 12:09:30

Gba吧回复真快啊

longer1000 发表于 2012-3-26 13:11:37

缘份呐 发表于 2012-3-26 13:34:52

Gu_xl 发表于 2012-3-26 11:59 static/image/common/back.gif
(setqb0 (list x0 y0 0);新的起点
      bn (list xn yn 0));新的终点

谢谢,学习了,

缘份呐 发表于 2012-3-26 14:06:08

不好意思,这个LISP会让线段的角度不对,我修正后再发上来。

缘份呐 发表于 2012-3-26 15:54:25

刚才改正了一下,现在发上来,请指导下,怎样可以更快捷方便。
(defun c:LLL()
(setvar "osmode" 0)
(setq d (getdist "\n输入总长度: "))
(setq ss(ssget))
(setq len(sslength ss))
(setq i -1)
(repeat len
(setq i (1+ i))
(setq en1(ssname ss i))
(setq e1 (entget en1))
(setq pt1 (assoc 10 e1))
(setq ptt1 (assoc 11 e1))
(setq po1 (cdr pt1)
       px1 (car po1)
       py1 (cadr po1)
       z1 (list px1 py1))
(setq poo1 (cdr ptt1)
       pxx1 (car poo1)
       pyy1 (cadr poo1)
      zn (list pxx1 pyy1))
(setq jaodu (angle z1 zn))
(setq zx0 (/ (+ px1 pxx1) 2.0)
       zy0 (/ (+ py1 pyy1) 2.0)
       z0 (list zx0 zy0))
(setq b0 (polar z0 (+ pi jaodu) (/ d 2.0)))
(setq bn (polar z0 jaodu (/ d 2.0)))
(setq e1 (subst (cons 10 b0) (assoc 10 e1) e1))
(setq e1 (subst (cons 11 bn) (assoc 11 e1) e1))
(entmod e1)
)
(princ)
(setvar "osmode" 3)
)

缘份呐 发表于 2012-3-26 15:57:24

Gu_xl 发表于 2012-3-26 11:59 static/image/common/back.gif
(setqb0 (list x0 y0 0);新的起点
      bn (list xn yn 0));新的终点

版主,刚才更正了一下,望提意见,可以更好吗?

清风明月名字 发表于 2012-5-29 17:02:13

谢谢楼主,很好用

缘份呐 发表于 2012-5-30 21:00:58

清风明月名字 发表于 2012-5-29 17:02 static/image/common/back.gif
谢谢楼主,很好用

谢谢,请多参与。
页: [1] 2
查看完整版本: 线段批量延伸或缩短,中心点不变