明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2949|回复: 6

( 请教高手 ) 如何实现自动延伸和裁切功能

[复制链接]
发表于 2003-8-2 23:16:00 | 显示全部楼层 |阅读模式
本人在处理CAD图形时, 发现有许多 pl 线看似与其它的 pl 线相交,
实际上经过放大后发现, pl 线的端点要么没有与另一条 pl 线相交(只差一丁点),
要么超过了一点点, 结果在图形处理时需要反复使用延伸和裁切命令,
完全没有效率可言.

请教高手能否实现自动延伸和裁切功能, 即选中某条线时, 在一定容差范围内的
未相交直线自动延伸与之相交, 超过的部分自动裁切掉!!
发表于 2003-8-3 17:17:00 | 显示全部楼层
pl线处理太复杂
以前编的程序,针对line,先选某条线,crossing选择需延伸和裁切的线

;;;*************Trim or Extend Lines to Edge **********************
(defun c:xml(/ obj ox oy count x y ssetl elst olderr
              pt1 pt2 sub1 sub2 int int1 ang ang1)
  (setvar "cmdecho" 0)
;  (setq olderr *error* *error* errx1)
  (initget 1)
  (princ "\nSelect Boundary Edge....")
  (setq obj (entsel))
  (setq obj (entget (car obj)) ox (cdr (assoc 10 obj)))
  (setq oy (cdr (assoc 11 obj)) count 0)
  (initget 1)
  (setq x (getpoint "\nPick axis crossing lines to modify:"))
  (initget 1)
  (setq y (getcorner x "\nPick endpoint:"))
  (setq ssetl (ssget "c" x y))
  (if (/= ssetl nil)
    (while (< count (sslength ssetl))
       (setq elst (entget (ssname ssetl count)))
       (setq count (1+ count))
       (cond ((= "LINE" (cdr (assoc 0 elst)))
          (setq pt1 (cdr (setq sub1 (assoc 10 elst))))
          (setq pt2 (cdr (setq sub2 (assoc 11 elst))))
          (setq int (inters ox oy pt1 pt2 nil) int1 (inters ox oy pt1 pt2))
          (cond ((and (/= int nil) (/= int1 nil))
                   (cond ((or (equal int pt1)(equal int pt2))(princ))
                     (T (setq int1 (inters x y pt1 pt2 nil))
                        (setq ang (angle int pt1) ang1 (angle int int1))
                        (if (equal ang ang1 0.0001)
                            (entmod (subst (cons 11 int) sub2 elst))
                            (entmod (subst (cons 10 int) sub1 elst))
                        );if
                     )
                   )
                ) ;cond1
                ((and (/= int nil) (null int1))
                      (setq d1 (distance pt1 int) d2 (distance pt2 int))
                      (if (> d1 d2)
                          (entmod (subst (cons 11 int) sub2 elst))
                          (entmod (subst (cons 10 int) sub1 elst))
                      ) ;if
                ) ; cond2
                (t (princ))
              ) ;
          ) ;cond for LINE
          (t (princ))
       ) ;cond
     ) ;while
     (princ "\nNo objects selected")
  ) ;if
;  (setq *error* olderr)
  (princ)
) ;defun

评分

参与人数 1金钱 +10 贡献 +3 激情 +5 收起 理由
mccad + 10 + 3 + 5 【好评】好程序

查看全部评分

发表于 2003-8-4 08:53:00 | 显示全部楼层
其实在作图是就应该养成一个好习惯,每次都做到精确绘图,这样出来的图就不会出现那种情况了。这样比事后处理效率应该高多了。
发表于 2003-8-5 10:28:00 | 显示全部楼层

裁切

这是一个修剪工具,延长的功能可以模仿来实现:

本帖子中包含更多资源

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

x
发表于 2011-10-29 17:09:37 | 显示全部楼层
xyh 发表于 2003-8-3 17:17
pl线处理太复杂
以前编的程序,针对line,先选某条线,crossing选择需延伸和裁切的线

简单实用,如果没有框选中线就直接退出了,要是可以继续选择就好了
发表于 2012-9-28 16:17:18 | 显示全部楼层
xyh 发表于 2003-8-3 17:17
pl线处理太复杂
以前编的程序,针对line,先选某条线,crossing选择需延伸和裁切的线

很棒的程序!可以直接取代延伸和剪切命令了,哈哈
发表于 2012-12-18 15:51:35 | 显示全部楼层
xyh 发表于 2003-8-3 17:17
pl线处理太复杂
以前编的程序,针对line,先选某条线,crossing选择需延伸和裁切的线

非常好的程序,是我唯一见过不用command trim extend实现裁切和延伸的程序,每次用trim break extend 都有点不爽,但一直没有找到能替代的方法,,还真希望哪位大侠能重写下这几个函数.
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-6-3 10:25 , Processed in 0.192877 second(s), 30 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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