找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1601|回复: 4

[每日一码] 直线或者两点多段线延伸

[复制链接]

已领礼包: 81个

财富等级: 招财进宝

发表于 2014-10-5 23:59:45 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
(defun c:ys()
(vl-load-com)
(setq mspace (vla-get-modelspace (vla-get-ActiveDocument (vlax-get-acad-object))))
(setq ENT (car (entsel"\n选择直线或者多段线: ")))
(setq ysjl (getdist"\n输入延伸距离: "))
(setq name (Vlax-Get (Vlax-Ename->Vla-Object ENT) 'ObjectName ));;获取对象的 AutoCAD 类名
(cond
  ((= name "AcDbLine");;直线
   (progn
    (setq pt1 (Vlax-Get (Vlax-Ename->Vla-Object ENT) 'StartPoint ));;;获取直线起点
    (setq pt2 (Vlax-Get (Vlax-Ename->Vla-Object ENT) 'EndPoint ));;;获取直线终点
    (setq leng (Vlax-Get (Vlax-Ename->Vla-Object ENT) 'Length ));;;获取直线距离
    (setq jl (+ ysjl leng));;;算出延伸后总距离
    (setq pt_1 (vlax-3D-point (polar pt2 (angle pt2 pt1) jl)));;;算出延伸后起点
    (setq pt_2 (vlax-3D-point(polar pt1 (angle pt1 pt2) jl)));;;算出延伸后终点
    (vla-Delete (Vlax-Ename->Vla-Object ENT ));;删除原直线
    (vla-addline mspace pt_1 pt_2);;;新建一条直线
   )
  )
  ((= name "AcDbPolyline");;多段线
   (progn
    (setq pt_list(Vlax-Get (Vlax-Ename->Vla-Object ENT) 'Coordinates ));;;获取多段线坐标表
    (setq pt1 (list (nth 0 pt_list) (nth 1 pt_list) ));;;算出第一个顶点坐标
    (setq pt2 (list (nth 2 pt_list) (nth 3 pt_list) ));;;算出第二个顶点坐标
    (vla-Delete (Vlax-Ename->Vla-Object ENT ));;删除原多段线;;;新建一条
    (vla-Addline mspace (vlax-3D-point pt1) (vlax-3D-point pt2));;;新建一条直线
   )
  )
)
)

评分

参与人数 1D豆 +5 收起 理由
xdcad9819 + 5 很给力!经验;技术要点;资料分享奖!

查看全部评分

论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 859个

财富等级: 财运亨通

发表于 2014-10-6 06:06:03 来自手机 | 显示全部楼层
1 length 命令即可
2 自己写的话修改起点和终点比删除并新生成更好

点评

这个建议不错。  发表于 2014-10-10 08:26
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 3个

财富等级: 恭喜发财

发表于 2019-11-30 22:43:11 | 显示全部楼层
不错很好,支持 顶你!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 137个

财富等级: 日进斗金

发表于 2020-5-6 07:39:06 | 显示全部楼层
直线或者两点多段线延伸 不错 支持
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-9-23 06:24 , Processed in 0.297179 second(s), 36 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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