明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 6238|回复: 26

[源码] 连续打断(带高亮度显示)(绝对原创)

[复制链接]
发表于 2013-9-24 12:06:22 | 显示全部楼层 |阅读模式
(defun c:br ()
  (setq name (car (entsel "\n请选择被打断线段:")) ss (ssadd))
  (ssadd name ss)
  (redraw name 3) ;高亮度显示被选线段
  (while (setq p (getpoint "\n请选择断点:"))
    (setq len (sslength ss) i 0)
    (repeat len
      (command "_.break" (ssname ss i) p p)
      (redraw (ssname ss i) 3) (redraw (entlast) 3) ;高亮度显示打断后的所有线段
      (ssadd (entlast) ss) ;打断后的线段中,除了(entlast),其余都自动纳入之前选集ss
      (setq i (+ i 1))))
  (setq len (sslength ss) i 0)
  (repeat len
    (redraw (ssname ss i) 4) ;取消高亮度显示
    (setq i (+ i 1)))
  (princ))

发表于 2013-9-25 10:54:25 | 显示全部楼层
958620832 发表于 2013-9-25 08:02
具体代码修改后是什么样的,请赐教

  1. (defun c:br (/ *error* NAME SS P LEN I)
  2.   (defun *error* (msg)
  3.   (setq len (sslength ss) i 0)
  4.   (repeat len
  5.     (redraw (ssname ss i) 4) ;_ 取消高亮度显示
  6.     (setq i (+ i 1)))
  7.   (command ".UNDO" "E")
  8.   (or (wcmatch (strcase msg) "*BREAK,*CANCEL*,*EXIT*") (princ (strcat "\n** Error: " msg " **")))
  9.   (princ))

  10.   (setq name (car (entsel "\n请选择被打断线段:")) ss (ssadd))
  11.   (ssadd name ss)
  12.   (redraw name 3) ;_ 高亮度显示被选线段
  13.   (while (setq p (getpoint "\n请选择断点:"))
  14.     (setq len (sslength ss) i 0)
  15.     (repeat len
  16.       (command "_.break" (ssname ss i) p p)
  17.       (redraw (ssname ss i) 3) (redraw (entlast) 3) ;_ 高亮度显示打断后的所有线段
  18.       (ssadd (entlast) ss) ;_ 打断后的线段中,除了(entlast),其余都自动纳入之前选集ss
  19.       (setq i (+ i 1))))
  20.   (setq len (sslength ss) i 0)
  21.   (repeat len
  22.     (redraw (ssname ss i) 4) ;_ 取消高亮度显示
  23.     (setq i (+ i 1)))
  24.   (princ)
  25.   )

评分

参与人数 1金钱 +5 收起 理由
xiongqunan + 5 很给力!

查看全部评分

回复 支持 2 反对 0

使用道具 举报

 楼主| 发表于 2013-9-24 14:57:49 | 显示全部楼层
本帖最后由 958620832 于 2013-9-24 15:03 编辑

修正版,内容如下。加入了错误处理函数,可以解决点击Esc键中途退出后依然高亮度显示的问题。运行过程中,点击一下Esc键,比较一下,就知道了。
(defun *error* (msg)
  (setq len (sslength ss) i 0)
  (repeat len
    (redraw (ssname ss i) 4) ;取消高亮度显示
    (setq i (+ i 1)))
  (command ".UNDO" "E")
  (or (wcmatch (strcase msg) "*BREAK,*CANCEL*,*EXIT*") (princ (strcat "\n** Error: " msg " **")))
  (princ))

(defun c:br ()
  (setq name (car (entsel "\n请选择被打断线段:")) ss (ssadd))
  (ssadd name ss)
  (redraw name 3) ;高亮度显示被选线段
  (while (setq p (getpoint "\n请选择断点:"))
    (setq len (sslength ss) i 0)
    (repeat len
      (command "_.break" (ssname ss i) p p)
      (redraw (ssname ss i) 3) (redraw (entlast) 3) ;高亮度显示打断后的所有线段
      (ssadd (entlast) ss) ;打断后的线段中,除了(entlast),其余都自动纳入之前选集ss
      (setq i (+ i 1))))
  (setq len (sslength ss) i 0)
  (repeat len
    (redraw (ssname ss i) 4) ;取消高亮度显示
    (setq i (+ i 1)))
  (princ))

评分

参与人数 1明经币 +2 收起 理由
Gu_xl + 2 赞一个!

查看全部评分

回复 支持 0 反对 1

使用道具 举报

发表于 2013-9-24 12:16:51 | 显示全部楼层
这个程序不错。很方便,但是没看到有高亮的地方阿!
 楼主| 发表于 2013-9-24 14:44:01 | 显示全部楼层
本帖最后由 958620832 于 2013-9-24 14:45 编辑
残雪or断桥 发表于 2013-9-24 12:16
这个程序不错。很方便,但是没看到有高亮的地方阿!

执行过程中显示高亮度,退出后就不显示了。
所谓的高亮度,如附图所示,否则就是cad的设置问题了。

本帖子中包含更多资源

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

x
发表于 2013-9-24 16:46:52 | 显示全部楼层
958620832 发表于 2013-9-24 14:57
修正版,内容如下。加入了错误处理函数,可以解决点击Esc键中途退出后依然高亮度显示的问题。运行过程中,点 ...

的确不错!!!下一用用,先谢了。
发表于 2013-9-24 20:33:08 | 显示全部楼层
谢谢楼主的分享!1楼的代码很好用啊。3楼的反而显示存在错误,不知道什么原因
发表于 2013-9-24 21:47:19 | 显示全部楼层
上个动态显示图吧,有图有真相
发表于 2013-9-24 22:09:30 | 显示全部楼层
958620832 发表于 2013-9-24 14:57
修正版,内容如下。加入了错误处理函数,可以解决点击Esc键中途退出后依然高亮度显示的问题。运行过程中,点 ...

要把*error* 函数放入到 C:br函数内作为局部变量,否则会破坏系统内部自定义*error*函数!其他变量也要搜集为局部变量!
发表于 2013-9-25 05:24:22 | 显示全部楼层
3楼的代码非常好用
 楼主| 发表于 2013-9-25 08:02:39 | 显示全部楼层
Gu_xl 发表于 2013-9-24 22:09
要把*error* 函数放入到 C:br函数内作为局部变量,否则会破坏系统内部自定义*error*函数!其他变量也要搜 ...

具体代码修改后是什么样的,请赐教
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-23 03:12 , Processed in 0.179856 second(s), 33 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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