明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 5529|回复: 18

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

  [复制链接]
发表于 2012-3-26 11:32 | 显示全部楼层 |阅读模式
这个有点问题!请指正。


(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)))
(setq  b0 '(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)
)

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


如果X0 Y0 是数字就行
(setq  b0 '(0 0 0);新的起点
        bn '(100 100 0));新的终点
那样,线条就全成了这个数据了。
发表于 2020-8-11 15:13 | 显示全部楼层
小小的人 发表于 2020-5-8 21:48
你好活跃啊   几乎每个帖子都能见到你

活跃为了下载,赚点小钱
发表于 2020-5-8 21:48 | 显示全部楼层

你好活跃啊   几乎每个帖子都能见到你
发表于 2016-9-25 15:54 | 显示全部楼层
(setq ss(ssget (list (Cons 0 "line"))))
发表于 2012-3-26 11:59 | 显示全部楼层
(setq  b0 (list x0 y0 0);新的起点
        bn (list xn yn 0));新的终点

发表于 2012-3-26 12:09 | 显示全部楼层
Gba吧回复真快啊
发表于 2012-3-26 13:11 | 显示全部楼层
 楼主| 发表于 2012-3-26 13:34 | 显示全部楼层
Gu_xl 发表于 2012-3-26 11:59
(setq  b0 (list x0 y0 0);新的起点
        bn (list xn yn 0));新的终点

谢谢,学习了,
 楼主| 发表于 2012-3-26 14:06 | 显示全部楼层
不好意思,这个LISP会让线段的角度不对,我修正后再发上来。
 楼主| 发表于 2012-3-26 15:54 | 显示全部楼层
刚才改正了一下,现在发上来,请指导下,怎样可以更快捷方便。
(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)
)

点评

能修改 对 PLINE 实体有效吗?  发表于 2020-2-22 23:06
 楼主| 发表于 2012-3-26 15:57 | 显示全部楼层
Gu_xl 发表于 2012-3-26 11:59
(setq  b0 (list x0 y0 0);新的起点
        bn (list xn yn 0));新的终点

版主,刚才更正了一下,望提意见,可以更好吗?
发表于 2012-5-29 17:02 | 显示全部楼层
谢谢楼主,很好用
 楼主| 发表于 2012-5-30 21:00 | 显示全部楼层
清风明月名字 发表于 2012-5-29 17:02
谢谢楼主,很好用

谢谢,请多参与。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-5-2 05:45 , Processed in 0.174146 second(s), 32 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表