找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 10865|回复: 100

[研讨] 曲线在点表处打断(command版)

  [复制链接]
发表于 2016-6-3 10:45:14 | 显示全部楼层 |阅读模式

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

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

×
发现这个程序很通用、实用,有非commad版的就好了:lol

  1. ;;[功能] Break entity at break points in list
  2. ;;(break_obj (car(entsel)) (list (getpoint)))
  3. (defun break_obj (ent brkptlst / BRKOBJLST CLOSEDOBJ ENTTYPE MAXPARAM MINPARAM OBJ OBJ2BREAK P1PARAM P2 P2PARAM)
  4.   (setq        obj2break ent
  5.         brkobjlst (list ent)
  6.         enttype          (cdr (assoc 0 (entget ent)))
  7.   )
  8.   (foreach brkpt brkptlst                                    ;  get last entity created via break
  9.                                                             ; in case multiple breaks
  10.     (if        brkobjlst
  11.       (progn                                                    ;  if pt not on object x, switch
  12.                                                             ; objects
  13.         (if (not (numberp (vl-catch-all-apply
  14.                             'vlax-curve-getdistatpoint
  15.                             (list obj2break brkpt)
  16.                           )
  17.                  )
  18.             )
  19.           (foreach obj brkobjlst                            ; find the one that pt is on
  20.             (if        (numberp (vl-catch-all-apply
  21.                            'vlax-curve-getdistatpoint
  22.                            (list obj brkpt)
  23.                          )
  24.                 )
  25.               (setq obj2break obj)                            ; switch objects
  26.             )
  27.           )
  28.         )
  29.       )
  30.     )
  31.     ;;  handle any objects that can not
  32.     ;; be used with the break command
  33.     ;;  using one point, gap of 0.000001
  34.     ;; is used
  35.     (cond
  36.       ((and
  37.          (= "SPLINE" enttype)                                    ; only closed splines
  38.          (vlax-curve-isclosed obj2break)
  39.        )
  40.        (setq p1param (vlax-curve-getparamatpoint obj2break brkpt)
  41.              p2             (vlax-curve-getpointatparam obj2break (+ p1param 0.000001))
  42.        )
  43.        (command        "._break"
  44.                 obj2break
  45.                 "_non"
  46.                 (trans brkpt 0 1)
  47.                 "_non"
  48.                 (trans p2 0 1)
  49.        )
  50.       )
  51.       ((= "CIRCLE" enttype)                                    ; break the circle
  52.        (setq p1param (vlax-curve-getparamatpoint obj2break brkpt)
  53.              p2             (vlax-curve-getpointatparam obj2break (+ p1param 0.000001))
  54.        )
  55.        (command        "._break"
  56.                 obj2break
  57.                 "_non"
  58.                 (trans brkpt 0 1)
  59.                 "_non"
  60.                 (trans p2 0 1)
  61.        )
  62.        (setq enttype "ARC")
  63.       )
  64.       ((and
  65.          (= "ELLIPSE" enttype)                                    ; only closed ellipse
  66.          (vlax-curve-isclosed obj2break)
  67.        )                                                    ;  break the ellipse, code borrowed
  68.                                                             ; from joe burke  6/6/2005
  69.        (setq p1param  (vlax-curve-getparamatpoint obj2break brkpt)
  70.              p2param  (+ p1param 0.000001)
  71.              minparam (min
  72.                         p1param
  73.                         p2param
  74.                       )
  75.              maxparam (max
  76.                         p1param
  77.                         p2param
  78.                       )
  79.              obj      (vlax-ename->vla-object obj2break)
  80.        )
  81.        (vlax-put obj 'startparameter maxparam)
  82.        (vlax-put obj 'endparameter (+ minparam (* pi 2)))
  83.       )                                                            ; ==================================
  84.       (t                                                    ;   objects that can be broken
  85.        (setq closedobj (vlax-curve-isclosed obj2break))
  86.        (command        "._break"
  87.                 obj2break
  88.                 "_non"
  89.                 (trans brkpt 0 1)
  90.                 "_non"
  91.                 (trans brkpt 0 1)
  92.        )
  93.        (if (not closedobj)                                    ; new object was created
  94.          (setq brkobjlst (cons (entlast) brkobjlst))
  95.        )
  96.       )
  97.     )
  98.   )
  99. )

评分

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

查看全部评分

论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
 楼主| 发表于 2016-6-3 14:56:32 | 显示全部楼层
可以用打断线做局部放大、多段局部拷贝等,这不,我做了一个曲线打断:lol,如下图
1.gif
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-6-8 14:59:50 | 显示全部楼层
本帖最后由 WhoCanSay 于 2016-6-8 16:41 编辑

原函数有缺陷,改正后如下
游客,如果您要查看本帖隐藏内容请回复


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

使用道具 举报

已领礼包: 6881个

财富等级: 富甲天下

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

使用道具 举报

已领礼包: 1336个

财富等级: 财源广进

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

使用道具 举报

已领礼包: 9个

财富等级: 恭喜发财

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

使用道具 举报

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

使用道具 举报

已领礼包: 774个

财富等级: 财运亨通

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

使用道具 举报

已领礼包: 1个

财富等级: 恭喜发财

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

使用道具 举报

已领礼包: 61个

财富等级: 招财进宝

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

使用道具 举报

已领礼包: 8987个

财富等级: 富甲天下

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

使用道具 举报

已领礼包: 1个

财富等级: 恭喜发财

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

使用道具 举报

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

使用道具 举报

已领礼包: 194个

财富等级: 日进斗金

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

使用道具 举报

已领礼包: 837个

财富等级: 财运亨通

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-22 00:56 , Processed in 0.216402 second(s), 60 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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