找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 4779|回复: 29

[LISP程序]:单点打断

[复制链接]
发表于 2002-1-28 12:46:27 | 显示全部楼层 |阅读模式

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

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

×
功能:把相交于一点的线"POLYLINE" "LWPOLYLINE" "LINE""ARC"同时打断

  1. ;;;程序设计:赖云龙;;;
  2. ;;;---------------;;;
  3. (defun C:BBPT (/ A AA PT)
  4.   (COMMAND "_.UNDO" "BE")
  5.   (while (= A NIL)
  6.     (setq PT (getpoint "\n切割点: "))
  7.     (setq A (ssget "C"
  8.                    PT
  9.                    PT
  10.                    '((-4 . "< OR")
  11.                      (0 . "POLYLINE")
  12.                      (0 . "LWPOLYLINE")
  13.                      (0 . "LINE")
  14.                      (0 . "ARC")
  15.                      (-4 . "OR >")
  16.                     )
  17.             )
  18.     )
  19.     (if        (= A NIL)
  20.       (prompt "\n错误: 找不到像素")
  21.     )
  22.   )
  23.   (prompt
  24.     "\n按下 ENTER 切断所有亮显的像素/<R>移除选取像素/<选取像素>: "
  25.   )
  26.   (command "_.SELECT" "AU" A PAUSE)
  27.   (setq        A (ssget "P"
  28.                  '((-4 . "< OR")
  29.                    (0 . "POLYLINE")
  30.                    (0 . "LWPOLYLINE")
  31.                    (0 . "LINE")
  32.                    (0 . "ARC")
  33.                    (-4 . "OR >")
  34.                   )
  35.           )
  36.   )
  37.   (if (/= (sslength A) 0)
  38.     (progn
  39.       (setq N 0)
  40.       (repeat (sslength A)
  41.         (setq AA (ssname A N))
  42.         (command "_.BREAK" AA PT "@")
  43.         (setq N (1+ N))
  44.       )
  45.     )
  46.   )
  47. (COMMAND "_.UNDO" "END")
  48.   (princ)
  49. )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2002-1-28 14:13:58 | 显示全部楼层
不要那么复杂吧?
(defun c:bx1(/ p0 s n in e an)
  (mapcar 'setvar '("cmdecho""blipmode") '(0 0))
  (setq p0 (getpoint"\n请在交点选择要打断的线条: ")
        s (ssget "c" p0 p0 '((-4 . "<OR")(0 . "LINE")(0 . "ARC")
                (0 . "POLYLINE")(0 . "LWPOLYLINE")(-4 . "OR>"))) n(sslength s) in 0)
  (repeat n
    (setq e(ssname s in) in (1+ in) an(cons e (list p0)))
    (command "break" an p0 p0)
  )
  (mapcar 'setvar '("cmdecho""blipmode") '(1 1))(princ)
)
除了cir,spl,ellip不能一点打断的实体及其他实体外。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 145个

财富等级: 日进斗金

发表于 2002-1-28 14:26:35 | 显示全部楼层
下面程序能将所有曲线line,polyline,lwpolyline,arc,circle,ellipse,spline实体,选择到的曲线在“所有”交点处断开,也适合一个实体“自交”情况,比如一根POLYLINE线自己有交点也可以断开。


  1. ;|
  2. 命令:CURVE_INTBRK
  3. 功能:将选取的所有曲线在交点处断开

  4. 配合XDRX_API B11208以上版本使用
  5. 关于该程序的改进建议请到“晓东CAD空间” “开发论坛” 留言
  6. [url]http://www.fspdi.com/forum[/url]
  7. |;
  8. (defun c:curve_intbrk ()
  9.   (prompt "\n请选取交点打断的曲线<全选>:")
  10.   (if (not (setq ss (ssget '((0 . "*line,arc,circle,ellipse")))))
  11.     (setq ss (ssget "x" '((0 . "*line,arc,circle,ellipse"))))
  12.   )
  13.   (setq num (xdrx_curve_intersectbreak ss))
  14.   (prompt (strcat "\n处理了 " (itoa (sslength ss)) " 个曲线实体,发现交点 "
  15.                   (itoa num) " 个!"
  16.           )
  17.   )
  18.   (princ)
  19. )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2002-1-28 15:45:10 | 显示全部楼层
我只需要单点打断我所要的线(可增减线),所以打断所有交点对我反而不好用
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 145个

财富等级: 日进斗金

发表于 2002-1-28 19:06:05 | 显示全部楼层
最初由 LUCAS 发布
[B]我只需要单点打断我所要的线(可增减线),所以打断所有交点对我反而不好用 [/B]


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

使用道具 举报

 楼主| 发表于 2002-1-29 09:29:59 | 显示全部楼层
Curve_intbrk把polyline or spline打成N断,我只要“单点”打断。
附图说明(但我不会贴图!!)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 145个

财富等级: 日进斗金

发表于 2002-1-29 09:43:19 | 显示全部楼层
最初由 LUCAS 发布
[B]Curve_intbrk把polyline or spline打成N断,我只要“单点”打断。
附图说明(但我不会贴图!!) [/B]


xdrx_curve_intersectbreak 函数有个参数,允许是否自身打断,见下面的函数用法。它还可以给误差标记,对指定距离范围内的,也认为是有交点,这对不是准确画图的时候,比如 丁字 的两个线,很方便。

另:贴图方法,就是跟传ZIP是一样的,你传上来JPG或者GIF,就显示出来了。

257. xdrx_curve_intersectbreak

功能:将选择集中的曲线在所有交点处break

调用格式:(xdrx_curve_intersectbreak <选择集> [误差距离] [自身打断标记] [进度条间隔])

返回值:NIL

说明:参数
        [误差距离]:整数或者实数,两个曲线顶点到另个曲线距离在误差内,算作相交
        [自身打断标记]:T,对于复杂实体如POLYLINE,SPLINE等自身相交也打断,NIL不处理自身相交
        [进度条间隔]:大于等于0的整数,为0,不显示进度条,大于0的值作为每处理这些实体后,进度条显示一次进度。
        
     不给这些参数,默认值是:误差100,自身打断T,无进度条0
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

使用道具 举报

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

使用道具 举报

发表于 2005-3-8 14:38:12 | 显示全部楼层
请问管理员,你那个程序可以在不安装晓东工具箱的情况下使用吗?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

使用道具 举报

发表于 2005-6-24 09:25:56 | 显示全部楼层
楼主的程序我用在cad2006下,出现下述错误,不知什么原因,请指教!

命令: bbpt _.UNDO 当前设置: 自动 = 开,控制 = 全部,合并 = 是
输入要放弃的操作数目或 [自动(A)/控制(C)/开始(BE)/结束(E)/标记(M)/后退(B)] <1>:
BE
命令:
切割点:  ; 错误: 参数太多

命令: bbpt _.UNDO 当前设置: 自动 = 开,控制 = 全部,合并 = 是
输入要放弃的操作数目或 [自动(A)/控制(C)/开始(BE)/结束(E)/标记(M)/后退(B)] <1>:
BE
命令:
切割点: int 于
错误: 找不到像素
切割点:
错误: 找不到像素
切割点:
; 错误: 参数太多
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

使用道具 举报

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

使用道具 举报

发表于 2005-7-3 22:37:06 | 显示全部楼层
是否能做到可以设定缺口的距离,另外是否可选择两线相交,只打断需要的那一根线呢。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-17 21:32 , Processed in 0.395387 second(s), 59 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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