找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1282|回复: 5

[已解决] 关于快速打断线的求助

[复制链接]

已领礼包: 44个

财富等级: 招财进宝

发表于 2018-5-15 16:44:24 | 显示全部楼层 |阅读模式
悬赏100D豆已解决
本帖最后由 凌云笑 于 2018-5-15 19:28 编辑

如下图所示,我绘制CAD图的时候,需要绘制出很多横平竖直东交叉线。
未标题-1.jpg
为了打断它们的交叉,我一般采用笨法子:在交叉点画直径200的圆(200是要求数值),然后剪切掉圆内的竖直线,最后删除圆。如下图
未标题-3.jpg

问题:有没有朋友能帮做个小插件或者什么,启动命令后,我只要点一下交叉点,就自动剪切掉竖直线在以交差点为中心的某一数值的圆内的线条?
请点击此处下载

查看状态:需购买或无权限

您的用户组是:游客

文件名称:Drawing2.rar 
下载次数:0  文件大小:23.13 KB 
下载权限: 不限 以上  [免费赚D豆]





最佳答案

查看完整内容

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

已领礼包: 51个

财富等级: 招财进宝

发表于 2018-5-15 16:44:25 | 显示全部楼层
凌云笑 发表于 2018-5-15 19:37
厉害了大婶,很强大!~
稍微有点区别的就是:我只需要剪切断竖直线就可以了,水平线需要保持不变。

那就这样了

圆裁剪线gif.gif

  1. (defun c:tt ()
  2.   (defun *error* (msg) (princ msg) (xdrx_entity_delete cir) (xdrx_end))
  3.   (defun _callback (dynpt)
  4.     (xdrx_setpropertyvalue
  5.       cir
  6.       "center"
  7.       dynpt
  8.       "radius"
  9.       (/ #xd_var_global_circle_radius 2.0)
  10.     )
  11.     (princ)
  12.   )
  13.   (defun _erase (pt)
  14.     (setq pts (xdrx_getsamplept cir))
  15.     (if (setq ss (ssget "cp" pts '((0 . "LINE"))))
  16.       (progn (ssdel cir ss)
  17.              (xdrx_entity_copy cir)
  18.              (setq cir1 (entlast))
  19.              (setq ents   (xdrx_pickset->ents ss)
  20.                    ucsang (angle '(0 0 0) (getvar "ucsxdir"))
  21.              )
  22.              (mapcar '(lambda (x)
  23.                         (setq an (xdrx_getpropertyvalue x "angle")
  24.                               an (- an ucsang)
  25.                               an (xd::geom:angleformat an)
  26.                         )
  27.                         (if (equal (abs an) (/ pi 2.0))
  28.                           (setq ents1 (cons x ents1))
  29.                         )
  30.                       )
  31.                      ents
  32.              )
  33.              (setq ss (xdrx_curve_intersectbreak (cons cir1 ents1)))
  34.              (command "layer" "")
  35.              (setq box (xdrx_entity_box cir)
  36.                    box (xd::pnts:close box)
  37.                    box (xdrx_points_offset height box)
  38.                    box (xd::pnts:close box)
  39.                    dxy box
  40.              )
  41.              (if (setq ss1 (ssget "wp" box '((0 . "line,arc"))))
  42.                (progn (ssdel cir ss1) (xdrx_entity_delete cir1 ss1))
  43.              )
  44.       )
  45.     )
  46.     (princ)
  47.   )
  48.   (xdrx_begin)
  49.   (setq height (xd::doc:getpickboxheight))
  50.   (xdrx_sysvar_push '("cursorsize" 1 "osmode" 32 "cmdecho" 0 "autosnap" 39))
  51.   (xdrx_pointmonitor "_callback")
  52.   (if (not #xd_var_global_circle_radius)
  53.     (setq #xd_var_global_circle_radius (* 3 height))
  54.   )
  55.   (xdrx_circle_make '(0 0 0) (/ #xd_var_global_circle_radius 2.0))
  56.   (setq cir (entlast))
  57.   (while (and (xdrx_initget "C")
  58.               (setq pt (getpoint (xdrx_prompt "\r(当前直径:"
  59.                                               #xd_var_global_circle_radius
  60.                                               ")擦除点[C-修改半径]<退出>:"
  61.                                               t
  62.                                  )
  63.                        )
  64.               )
  65.          )
  66.     (cond
  67.       ((= pt "C")
  68.        (if (setq
  69.              val (getreal
  70.                    (xdrx_prompt "\n输入直径<" #xd_var_global_circle_radius ">:" t)
  71.                  )
  72.            )
  73.          (setq #xd_var_global_circle_radius val)
  74.        )
  75.       )
  76.       ((= (type pt) 'LIST) (_erase pt))
  77.     )
  78.   )
  79.   (xdrx_pointmonitor)
  80.   (xdrx_entity_delete cir)
  81.   (xdrx_end)
  82.   (princ)
  83. )


点评

虽然不理解是咋做了,但至少看起来很牛比的样子,哈哈。十分好评!  详情 回复 发表于 2018-5-16 07:51
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

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

使用道具 举报

已领礼包: 51个

财富等级: 招财进宝

发表于 2018-5-15 19:29:23 | 显示全部楼层
试试, 你这个其实用 WIPEOUT遮盖做更好,不断线,以后方便修改,断了,你就回不去了。
下面是断线的代码。 看你新来的,插件拷贝回去,加载,不能用的话,去看下 “插件使用方法”

圆擦除点.gif


  1. (defun c:tt ()
  2.   (defun *error* (msg)
  3.     (princ msg)
  4.     (xdrx_entity_delete cir)
  5.     (xdrx_end)
  6.   )
  7.   (defun _callback (dynpt)
  8.     (xdrx_setpropertyvalue
  9.       cir
  10.       "center"
  11.       dynpt
  12.       "radius"
  13.       (/ #xd_var_global_circle_radius 2.0)
  14.     )
  15.     (princ)
  16.   )
  17.   (defun _erase (pt)
  18.     (setq pts (xdrx_getsamplept cir))
  19.     (if (setq ss (ssget "cp" pts '((0 . "*LINE,CIRCLE,ARC,ELLIPSE"))))
  20.       (progn (ssdel cir ss)
  21.              (xdrx_entity_copy cir)
  22.              (setq ss (xdrx_curve_intersectbreak ss (entlast)))
  23.              (command "layer" "")
  24.              (setq box (xdrx_entity_box cir)
  25.                    box (xd::pnts:close box)
  26.                    box (xdrx_points_offset height box)
  27.                    box (xd::pnts:close box)
  28.                    dxy box
  29.              )
  30.              (if (setq ss1 (ssget "wp" box '((0 . "*line,arc,circle,ellipse"))))
  31.                (progn (ssdel cir ss1)
  32.                       (xdrx_entity_delete ss1)
  33.                )
  34.              )
  35.       )
  36.     )
  37.     (princ)
  38.   )
  39.   (xdrx_begin)
  40.   (setq height (xd::doc:getpickboxheight))
  41.   (xdrx_sysvar_push '("cursorsize" 1 "osmode" 32 "cmdecho" 0))
  42.   (xdrx_pointmonitor "_callback")
  43.   (if (not #xd_var_global_circle_radius)
  44.     (setq #xd_var_global_circle_radius (* 3 height))
  45.   )
  46.   (xdrx_circle_make
  47.     '(0 0 0)
  48.     (/ #xd_var_global_circle_radius 2.0)
  49.   )
  50.   (setq cir (entlast))
  51.   (while (and (xdrx_initget "C")
  52.               (setq pt (getpoint (xdrx_prompt "\r(当前直径:" #xd_var_global_circle_radius ")擦除点[C-修改直径]<退出>:" t)))
  53.          )
  54.     (cond ((= pt "C")
  55.            (if (setq val (getreal (xdrx_prompt
  56.                                     "\n输入直径<"
  57.                                     #xd_var_global_circle_radius
  58.                                     ">:"
  59.                                     t
  60.                                   )
  61.                          )
  62.                )
  63.              (setq #xd_var_global_circle_radius val)
  64.            )
  65.           )
  66.           ((= (type pt) 'LIST) (_erase pt))
  67.     )
  68.   )
  69.   (xdrx_pointmonitor)
  70.   (xdrx_entity_delete cir)
  71.   (xdrx_end)
  72.   (princ)
  73. )



点评

厉害了大婶,很强大!~ 稍微有点区别的就是:我只需要剪切断竖直线就可以了,水平线需要保持不变。  详情 回复 发表于 2018-5-15 19:37
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复

使用道具 举报

已领礼包: 44个

财富等级: 招财进宝

 楼主| 发表于 2018-5-15 19:37:17 | 显示全部楼层
Lispboy 发表于 2018-5-15 19:29
试试, 你这个其实用 WIPEOUT遮盖做更好,不断线,以后方便修改,断了,你就回不去了。
下面是断线的代码 ...

厉害了大婶,很强大!~
稍微有点区别的就是:我只需要剪切断竖直线就可以了,水平线需要保持不变。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复

使用道具 举报

已领礼包: 44个

财富等级: 招财进宝

 楼主| 发表于 2018-5-16 07:51:00 | 显示全部楼层

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-22 00:06 , Processed in 0.226480 second(s), 43 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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