明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 9527|回复: 48

5币求画线截断直线程序,要源码

  [复制链接]
发表于 2012-7-6 15:57:10 | 显示全部楼层 |阅读模式
1明经币
理想功能:用鼠标指定两点,然后将鼠标两点之间的所有直线截断并删除断开的某边,删除方向可选
理想使用方法:1.鼠标左键指定两点   2.鼠标左键指定删除哪一边(类似于执行偏移命令时选择方向)
附件: 您需要 登录 才可以下载或查看,没有账号?注册

最佳答案

发表于 2012-7-6 15:57:11 | 显示全部楼层
半听可乐 发表于 2012-7-7 00:08
非常感谢!但还有bug:当截断多条线时有些线截断不了,还没找到规律性~~望好人继续完善

游客,本帖隐藏的内容需要发帖数高于 20 才可浏览,你当前发帖数只有 0
回复

使用道具 举报

发表于 2012-7-6 16:57:54 | 显示全部楼层
本帖最后由 Andyhon 于 2012-7-6 18:25 编辑

(defun C:/= ()
   (prompt "\n鼠标左键指定两点...")
   (setq p1 (getpoint "\n 1st 点: ")
         p2 (getpoint p1 "\n 2nd 点: ")
   )
   (cond
    ((setq ss (ssget "C" p1 p2))
     (setq p3 (getpoint "\n鼠标左键指定删除哪一边: ")
            i  0     
     )
     (while (setq ee (ssname ss i))
       (setq dat (entget ee)
              pa (cdr (assoc 10 dat))
              pb (cdr (assoc 11 dat))
              px (inters p1 p2 pa pb nil)
              pt (PerToLine p3 pa pb)   ; http://bbs.mjtd.com/thread-89548-1-1.html
               i (1+ i)
       )
       (cond
        ((equal (distance pa px) (+ (distance pa pt) (distance pt px)) 1e-4)
         (setq dp 10)
        )
        ((equal (distance pb px) (+ (distance pb pt) (distance pt px)) 1e-4)
         (setq dp 11)
        )
        ((equal (distance pt px) (+ (distance pt pa) (distance pa px)) 1e-4)
         (setq dp 10)
        )
        ((equal (distance pt px) (+ (distance pt pb) (distance pb px)) 1e-4)
         (setq dp 11)
       ))         
       (entmod (subst (cons dp px) (assoc dp dat) dat))
   )))
)
不合需求时请上传调试用 Dwg 文件
回复

使用道具 举报

发表于 2012-7-6 17:11:09 | 显示全部楼层

(defun c:jd()
(setq pt1 (getpoint "/n指定第1点:"))
(setq pt2 (getpoint "/n指定第2点:"))
(setq pt3 (getpoint "/n指定第3点:"))
(command "line" pt1 pt2 "")
(setq tg (entLast))
(command "trim" tg "" "f" pt1 pt3 pt2 "" "")
(entdel tg)
)
回复

使用道具 举报

发表于 2012-7-6 17:14:34 | 显示全部楼层
Andyhon ,子函数PERTOLINE补充一下码
回复

使用道具 举报

 楼主| 发表于 2012-7-6 17:16:49 | 显示全部楼层
Andyhon 发表于 2012-7-6 16:57
不合需求时请上传调试用 Dwg 文件

CAD2004提醒:错误: no function definition: PERTOLINE

本帖子中包含更多资源

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

x
回复

使用道具 举报

发表于 2012-7-6 17:16:54 | 显示全部楼层
好像类似于画线剪切。。。
回复

使用道具 举报

发表于 2012-7-6 17:19:26 | 显示全部楼层
半听可乐 发表于 2012-7-6 17:16
CAD2004提醒:错误: no function definition: PERTOLINE

(PerToLine p3 pa pb)   ; http://bbs.mjtd.com/thread-89548-1-1.html
PerToLinehttp://bbs.mjtd.com/thread-89548-1-1.html
回复

使用道具 举报

 楼主| 发表于 2012-7-6 17:23:05 | 显示全部楼层
本帖最后由 半听可乐 于 2012-7-6 17:39 编辑
hao3ren 发表于 2012-7-6 17:11
(defun c:jd()
(setq pt1 (getpoint "/n指定第1点:"))
(setq pt2 (getpoint "/n指定第2点:"))


功能很接近了,美中不足的是指定前面两点时没有两点间的预览线(截断前的预览,配合正交开关能把直线截得横平竖直^_^   下图演示中我指的“预览线”比较明显),希望朋友能改进一下

本帖子中包含更多资源

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

x
回复

使用道具 举报

发表于 2012-7-6 17:38:20 | 显示全部楼层
(defun c:jd()
(setq pt1 (getpoint "\n指定第1点:"))
(setq pt2 (getpoint pt1 "\n指定第2点:"))
(setq pt3 (getpoint "\n指定第3点:"))
(command "line" pt1 pt2 "")
(setq tg (entLast))
(command "trim" tg "" "f" pt1 pt3 pt2 "" "")
(entdel tg)
)
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-25 14:37 , Processed in 0.267352 second(s), 30 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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