乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 85|回复: 19

[编程交流] 打断与相交的所有线

[复制链接]

3

主题

4

帖子

1

银币

初来乍到

Rank: 1

铜币
15
发表于 2022-7-6 07:58:54 | 显示全部楼层 |阅读模式
你好
任何一个都可以使用lsp例程来断开相互相交的直线。。
 
谢谢
回复

使用道具 举报

41

主题

301

帖子

265

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
209
发表于 2022-7-6 08:04:55 | 显示全部楼层
听起来标准不好
回复

使用道具 举报

4

主题

940

帖子

961

银币

初来乍到

Rank: 1

铜币
12
发表于 2022-7-6 08:05:27 | 显示全部楼层
在这里查看,,,需要注册,但免费
http://www.theswamp.org/index.php?topic=10370.0
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 08:10:19 | 显示全部楼层
作为一种选择,我很快就想到了:
 
 
 
  1. ;;; Break All, by Lee McDonnell.  25/07/2009
  2. (defun c:brkAll (/ *error* doc spc ss Objlst Obj iLst Altlst lst)
  3. (vl-load-com)
  4. (defun *error* (msg)
  5.    (if doc (vla-EndUndoMark doc))
  6.    (if ov (mapcar 'setvar vl ov))
  7.    (if (not
  8.          (wcmatch
  9.            (strcase msg) "*BREAK,*EXIT*,*CANCEL*"))
  10.      (princ
  11.        (strcat "\n** Error: " msg " **")))
  12.    (princ))
  13. (setq doc (vla-get-ActiveDocument
  14.              (vlax-get-Acad-Object))
  15.        spc (if (zerop (vla-get-activespace doc))
  16.              (if (= (vla-get-mspace doc) :vlax-true)
  17.                (vla-get-modelspace doc)
  18.                (vla-get-paperspace doc))
  19.              (vla-get-modelspace doc)))
  20. (setq vl '("CMDECHO" "OSMODE")
  21.        ov (mapcar 'getvar vl))
  22. (vla-StartUndoMark doc)
  23. (or *brk$dis* (setq *brk$dis* 5.))
  24. (if (setq ss (ssget '((0 . "*LINE,ARC"))))
  25.    (progn
  26.      (or (not
  27.            (setq tmp
  28.              (getdist
  29.                (strcat "\nSpecify Break Distance <" (rtos *brk$dis* 2 2) "> : "))))
  30.          (setq *brk$dis* tmp))
  31.      (setq Objlst
  32.        (mapcar 'vlax-ename->vla-object
  33.          (vl-remove-if 'listp
  34.            (mapcar 'cadr (ssnamex ss)))))
  35.      (while (setq Obj (car Objlst))
  36.        (foreach iObj (setq Objlst (cdr Objlst))
  37.          (setq iLst
  38.            (cons
  39.              (cons Obj
  40.                (vlax-list->3D-point
  41.                  (vlax-invoke Obj
  42.                    'IntersectWith iObj acExtendNone))) iLst))))
  43.      (mapcar 'setvar vl '(0 0))
  44.      (foreach Int (vl-remove-if-not
  45.                     (function
  46.                       (lambda (x)
  47.                         (vl-consp (cdr x)))) iLst)
  48.        (setq Obj (car Int))
  49.        (foreach Pt (cdr Int)
  50.          (and Altlst (setq lst Altlst))
  51.          (if (not (setq bDis (vlax-curve-getDistatPoint Obj Pt)))
  52.            (while (and (not bDis) lst)
  53.              (setq bDis (vlax-curve-getDistatPoint (setq Obj (car lst)) Pt)
  54.                    lst (cdr lst))))
  55.          (if bDis
  56.            (progn
  57.              (or (setq bPt1 (vlax-curve-getPointatDist Obj
  58.                               (+ bDis (/ *brk$dis* 2.))))
  59.                  (setq bPt1 (vlax-curve-getEndPoint Obj)))
  60.              (or (setq bPt2 (vlax-curve-getPointatDist Obj
  61.                               (- bDis (/ *brk$dis* 2.))))
  62.                  (setq bPt2 (vlax-curve-getStartPoint Obj)))
  63.              (command "_.Break"
  64.                (list (vlax-vla-object->ename Obj) pt) "_F" bPt1 bPt2)
  65.              (setq AltLst (cons (vlax-ename->vla-object (entlast)) AltLst)))))))
  66.    (princ "\n** Nothing Selected **"))
  67. (vla-EndUndoMark doc)
  68. (mapcar 'setvar vl ov)
  69. (princ))
  70.             
  71. (defun vlax-list->3D-point (lst)
  72. (if lst
  73.    (cons (list (car lst) (cadr lst) (caddr lst))
  74.          (vlax-list->3D-point (cdddr lst)))))
回复

使用道具 举报

6

主题

21

帖子

13

银币

初来乍到

Rank: 1

铜币
33
发表于 2022-7-6 08:14:25 | 显示全部楼层
非常酷的常规!!!
问题:
1.是否可以根据用户输入指定垂直线或水平线断开?
 
2.是否可以只打断彼此完全相交的线,而忽略仅接触而不相交的线,例如使用垂直osnap绘制的线?
 
非常感谢。
射线
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 08:17:15 | 显示全部楼层
 
谢谢你,雷,
 
如果我有更多的时间的话,我想这两个都是可能的,但我会看看我能做些什么。
 
同时,看看这个——有人花了更多的时间在同样的事情上。。。
http://www.theswamp.org/index.php?topic=10370.0
回复

使用道具 举报

5

主题

20

帖子

15

银币

初来乍到

Rank: 1

铜币
25
发表于 2022-7-6 08:20:06 | 显示全部楼层
 
 
这正是我需要的!
 
有人能帮忙吗?请
 
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 08:22:36 | 显示全部楼层
你查过我提供的链接了吗?
回复

使用道具 举报

5

主题

20

帖子

15

银币

初来乍到

Rank: 1

铜币
25
发表于 2022-7-6 08:25:01 | 显示全部楼层
是的,但链接上的宏不会只打断与水平线相交的垂直线
 
它还打断了垂直于
 
回复

使用道具 举报

5

主题

20

帖子

15

银币

初来乍到

Rank: 1

铜币
25
发表于 2022-7-6 08:28:25 | 显示全部楼层
我需要的是:选择一束线(许多线),然后只打断与水平线相交的垂直线
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-3-9 21:15 , Processed in 0.449279 second(s), 72 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表