乐筑天下

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

[编程交流] 单触并断开int

[复制链接]

11

主题

33

帖子

22

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
55
发表于 2022-7-6 07:23:28 | 显示全部楼层 |阅读模式
你好
 
082330u99u38zas90pb0z9.jpg
 
单触并打断相交线/多段线
 
我试着用这个来创作,但它似乎不正确
 
  1. (setq epoly(entsel))
  2.   (setq PIKPT (cadr EPOLY))
  3.    (setq  ENXT (entnext (car EPOLY)))
  4.     (setq LST (entget ENXT))
  5.      (setq P1 (cdr(assoc 10 LST)))
  6.      (setq ENXT (entnext ENXT))
  7.      (setq LST (entget ENXT))
  8.      (setq P2 (cdr(assoc 10 LST)))
  9. (command "break" p1 p1)
  10. (command "break" p2 p2)
回复

使用道具 举报

35

主题

2471

帖子

2447

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
174
发表于 2022-7-6 07:32:47 | 显示全部楼层
我不确定我是否完全理解您的草图,但我相信使用内置命令TRIM可以很容易地解决这个问题。只需在第一个提示器(切割边缘选择)处按,然后选择要删除的零件。
回复

使用道具 举报

11

主题

33

帖子

22

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
55
发表于 2022-7-6 07:37:48 | 显示全部楼层
你好
 
我不想删除或删除拾取的线,我只想打断点,所以以后我可以将保留的线更改为隐藏或更改颜色,如果使用trim命令,拾取的线将消失
回复

使用道具 举报

1

主题

3

帖子

2

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-6 07:42:49 | 显示全部楼层
您好,nalsur8,请尝试以下代码:
 
  1. (DEFUN C:B1 ()
  2. (PROMPT "\nBreak Point")
  3. (TERPRI)
  4. (setq obj nil)
  5. (while (null obj)
  6.    (setq obj (entsel "\nSelect object to break: "))
  7. )
  8. (redraw (car obj) 3)
  9. (initget 1)
  10. (setq point (getpoint "\nBreak point : "))
  11. (COMMAND "_.BREAK" obj "_F" point point)
  12. (PRINC)
  13. )

 
对不起,我的英语很差,我来自哥斯达黎加。
 
当做
回复

使用道具 举报

5

主题

1334

帖子

1410

银币

限制会员

铜币
-20
发表于 2022-7-6 07:47:06 | 显示全部楼层
在这里,我修改了CAB的代码。。。看看这是否能帮到你。。。
 
  1. ;;;=====================[ BreakObject.lsp ]=============================
  2. ;;; Author: Copyright© 2006-2012 Charles Alan Butler
  3. ;;; Contact @  www.TheSwamp.org   
  4. ;;;   http://www.theswamp.org/index.php?topic=10370.0
  5. ;;; Version:  2.2  July 28, 2012
  6. ;;;=====================================================================
  7. ;;;   THIS SOFTWARE IS PROVIDED "AS IS" WITHOUT EXPRESS OR IMPLIED     ;
  8. ;;;   WARRANTY.  ALL IMPLIED WARRANTIES OF FITNESS FOR ANY PARTICULAR  ;
  9. ;;;   PURPOSE AND OF MERCHANTABILITY ARE HEREBY DISCLAIMED.            ;
  10. ;;;                                                                    ;
  11. ;;;  You are hereby granted permission to use, copy and modify this    ;
  12. ;;;  software without charge, provided you do so exclusively for       ;
  13. ;;;  your own use or for use by others in your organization in the     ;
  14. ;;;  performance of their normal duties, and provided further that     ;
  15. ;;;  the above copyright notice appears in all copies and both that    ;
  16. ;;;  copyright notice and the limited warranty and restricted rights   ;
  17. ;;;  notice below appear in all supporting documentation.              ;
  18. ;;;=====================================================================
  19. (defun gn ( l n / f )
  20. (defun f ( a b )
  21.    (if (and a (< 0 b))
  22.      (cons (car a) (f (setq l (cdr a)) (1- b)))
  23.    )
  24. )
  25. (if l (cons (f l n) (gn l n)))
  26. )
  27. (defun getcltouching (sscros pt / ss lst lstb lstc objl intpt intpts)
  28. (and
  29.    (setq lstb (vl-remove-if 'listp (mapcar 'cadr (ssnamex sscros)))
  30.          objl (mapcar 'vlax-ename->vla-object lstb)
  31.    )
  32.    (setq
  33.      ss (ssget "_A" (list (cons 0 "LINE,ARC,SPLINE,LWPOLYLINE,POLYLINE,CIRCLE,ELLIPSE")
  34.                           (cons 410 (getvar "ctab"))))
  35.    )
  36.    (ssdel (ssname sscros 0) ss)
  37.    (setq lst (vl-remove-if 'listp (mapcar 'cadr (ssnamex ss))))
  38.    (setq lst (mapcar 'vlax-ename->vla-object lst))
  39.    (mapcar
  40.      '(lambda (x)
  41.         (mapcar
  42.           '(lambda (y)
  43.              (if (not
  44.                    (vl-catch-all-error-p
  45.                      (setq intpt (vl-catch-all-apply
  46.                        '(lambda ()
  47.                           (vlax-safearray->list
  48.                             (vlax-variant-value
  49.                               (vla-intersectwith y x acextendnone)
  50.                             )))))))
  51.                (progn
  52.                  (setq intpts (gn intpt 3))
  53.                  (foreach ipt intpts
  54.                    (setq lstc (cons (cons (vlax-vla-object->ename x) (list ipt)) lstc))
  55.                  )
  56.                )
  57.              )
  58.            ) objl)
  59.       ) lst)
  60. )
  61. (setq lstc (vl-sort lstc '(lambda (a b) (< (distance pt (cadr a)) (distance pt (cadr b))))))
  62. (setq intpts (list (cadar lstc) (cadadr lstc)))
  63. intpts
  64. )
  65. (defun c:B2 (/ cmd ss1 ss2 pt touch) (vl-load-com)
  66. (command "_.undo" "_begin")
  67. (setq cmd (getvar "CMDECHO"))
  68. (setvar "CMDECHO" 0)
  69. (setq ss1 (ssadd))
  70. (if (and (not (prompt "\nSelect object to break with touching & press enter: "))
  71.           (setq ss2 (ssget "_+.:S" '((0 . "LINE,ARC,SPLINE,LWPOLYLINE,POLYLINE,CIRCLE,ELLIPSE"))))
  72.           (setq pt (cadr(cadddr(car (ssnamex ss2 0)))))
  73.           (setq touch (getcltouching ss2 pt))
  74.      )
  75.      (progn
  76.        (command "_.break" pt "F" (car touch) (car touch))
  77.        (command "_.break" pt "F" (cadr touch) (cadr touch))
  78.      )
  79. )
  80. (setvar "CMDECHO" cmd)
  81. (command "_.undo" "_end")
  82. (princ)
  83. )
  84. (prompt "\nEnter B2 to run.")
  85. (princ)
  86. ;;/'\./'\./'\./'\./'\./'\./'\./'\./'\./'\./'\./'\./'\./'\./'\./'\.
  87. ;;    E n d   O f   F i l e   I f   y o u   A r e   H e r e      
  88. ;;/'\./'\./'\./'\./'\./'\./'\./'\./'\./'\./'\./'\./'\./'\./'\./'\.
M.R。
B2.LSP
回复

使用道具 举报

5

主题

1334

帖子

1410

银币

限制会员

铜币
-20
发表于 2022-7-6 07:51:26 | 显示全部楼层
很抱歉我更新得太晚;代码更改-我认为现在它适合您的需要。。。
 
M、 R。
回复

使用道具 举报

11

主题

33

帖子

22

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
55
发表于 2022-7-6 07:59:23 | 显示全部楼层
Alenjandros85,
 
谢谢你的代码,它也很有用。。但这不是我的意思
 
marko_ribar,
 
感谢代码,这就是我的意思,再次感谢修改代码
为了我
回复

使用道具 举报

5

主题

1074

帖子

1088

银币

初来乍到

Rank: 1

铜币
9
发表于 2022-7-6 08:02:21 | 显示全部楼层
看来你的问题已经解决了,
但你的问题让我想起了Lynn Allen的一个好建议
关于加快你的中断命令。我已经实现了一个,我非常喜欢。
这将使您能够创建一个断点,该断点的位置是指定的
根据第一次单击的位置,完成。
 
谢谢Lynn!
回复

使用道具 举报

17

主题

193

帖子

179

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
84
发表于 2022-7-6 08:11:08 | 显示全部楼层
试试这个:它可以让你选择一条线,并询问你的断点。Osnap在交点处自动设置
 
  1. (defun C:BKI (/ ln pt1) ;;break at intersection
  2. (setq osm (getvar 'osmode))
  3. (setq cmd1 (getvar 'cmdecho))
  4. (setvar 'cmdecho 0)
  5. (setvar 'osmode 32)
  6. (setq ln (entsel "\nChoose Line to Break..."))
  7. (setq pt1 (getpoint "\nPick Break Point.. "))
  8. (command "break" ln "f" pt1 "@")
  9. (setvar 'osmode osm)
  10. (setvar 'cmdecho cmd1)
  11. (princ)
  12. )
回复

使用道具 举报

5

主题

1334

帖子

1410

银币

限制会员

铜币
-20
发表于 2022-7-6 08:16:29 | 显示全部楼层
抱歉,再修改一次:
 
  1. ;;;=====================[ BreakObject.lsp ]=============================
  2. ;;; Author: Copyright© 2006-2012 Charles Alan Butler
  3. ;;; Contact @  www.TheSwamp.org   
  4. ;;;   http://www.theswamp.org/index.php?topic=10370.0
  5. ;;; Version:  2.2  July 28, 2012
  6. ;;;=====================================================================
  7. ;;;   THIS SOFTWARE IS PROVIDED "AS IS" WITHOUT EXPRESS OR IMPLIED     ;
  8. ;;;   WARRANTY.  ALL IMPLIED WARRANTIES OF FITNESS FOR ANY PARTICULAR  ;
  9. ;;;   PURPOSE AND OF MERCHANTABILITY ARE HEREBY DISCLAIMED.            ;
  10. ;;;                                                                    ;
  11. ;;;  You are hereby granted permission to use, copy and modify this    ;
  12. ;;;  software without charge, provided you do so exclusively for       ;
  13. ;;;  your own use or for use by others in your organization in the     ;
  14. ;;;  performance of their normal duties, and provided further that     ;
  15. ;;;  the above copyright notice appears in all copies and both that    ;
  16. ;;;  copyright notice and the limited warranty and restricted rights   ;
  17. ;;;  notice below appear in all supporting documentation.              ;
  18. ;;;=====================================================================
  19. (defun prelst ( l i / n r )
  20. (while (and (setq n (car l)) (not (equal n i 1e-))
  21.    (setq r (cons n r) l (cdr l))
  22. )
  23. (reverse r)
  24. )
  25. (defun sufflst ( l i / n r c )
  26. (setq l (reverse l) c (length l))
  27. (while (and (setq n (car l)) (not (equal n i 1e-))
  28.    (setq r (cons n r) l (cdr l))
  29. )
  30. (if (/= (length r) c) r)
  31. )
  32. (defun gn ( l n / f )
  33. (defun f ( a b )
  34.    (if (and a (< 0 b))
  35.      (cons (car a) (f (setq l (cdr a)) (1- b)))
  36.    )
  37. )
  38. (if l (cons (f l n) (gn l n)))
  39. )
  40. (defun getcltouching (sscros pt / ss lst lstb lstc objl intpt intpt1 intpt2 intpts)
  41. (and
  42.    (setq lstb (vl-remove-if 'listp (mapcar 'cadr (ssnamex sscros)))
  43.          objl (mapcar 'vlax-ename->vla-object lstb)
  44.    )
  45.    (setq
  46.      ss (ssget "_A" (list (cons 0 "LINE,ARC,SPLINE,LWPOLYLINE,POLYLINE,CIRCLE,ELLIPSE")
  47.                           (cons 410 (getvar "ctab"))))
  48.    )
  49.    (ssdel (ssname sscros 0) ss)
  50.    (setq lst (vl-remove-if 'listp (mapcar 'cadr (ssnamex ss))))
  51.    (setq lst (mapcar 'vlax-ename->vla-object lst))
  52.    (mapcar
  53.      '(lambda (x)
  54.         (mapcar
  55.           '(lambda (y)
  56.              (if (not
  57.                    (vl-catch-all-error-p
  58.                      (setq intpt (vl-catch-all-apply
  59.                        '(lambda ()
  60.                           (vlax-safearray->list
  61.                             (vlax-variant-value
  62.                               (vla-intersectwith y x acextendnone)
  63.                             )))))))
  64.                (progn
  65.                  (setq intpts (gn intpt 3))
  66.                  (foreach ipt intpts
  67.                    (setq lstc (cons (cons (vlax-curve-getparamatpoint y ipt) (list ipt)) lstc))
  68.                  )
  69.                )
  70.              )
  71.            ) objl)
  72.       ) lst)
  73. )
  74. (setq lstc (cons (cons (vlax-curve-getparamatpoint (car objl) (setq pt (vlax-curve-getclosestpointto (car objl) pt))) (list pt)) lstc))
  75. (setq lstc (vl-sort lstc '(lambda (a b) (< (car a) (car b)))))
  76. (setq lstc (mapcar 'cadr lstc))
  77. (setq intpt1 (last (prelst lstc pt)))
  78. (setq intpt2 (car (sufflst lstc pt)))
  79. (setq intpts (list intpt1 intpt2))
  80. intpts
  81. )
  82. (defun c:B2 (/ cmd ss1 ss2 pt touch) (vl-load-com)
  83. (command "_.undo" "_begin")
  84. (setq cmd (getvar "CMDECHO"))
  85. (setvar "CMDECHO" 0)
  86. (setq ss1 (ssadd))
  87. (if (and (not (prompt "\nSelect object to break with touching"))
  88.           (setq ss2 (ssget "_+.:S" '((0 . "LINE,ARC,SPLINE,LWPOLYLINE,POLYLINE,CIRCLE,ELLIPSE"))))
  89.           (setq pt (cadr(cadddr(car (ssnamex ss2 0)))))
  90.           (setq pt (vlax-curve-getclosestpointto (ssname ss2 0) pt))
  91.           (setq touch (getcltouching ss2 pt))
  92.      )
  93.      (progn
  94.        (command "_.break" (car (nentselp pt)) (car touch) (car touch))
  95.        (command "_.break" (car (nentselp pt)) (cadr touch) (cadr touch))
  96.      )
  97. )
  98. (setvar "CMDECHO" cmd)
  99. (command "_.undo" "_end")
  100. (princ)
  101. )
  102. (prompt "\nEnter B2 to run.")
  103. (princ)
  104. ;;/'\./'\./'\./'\./'\./'\./'\./'\./'\./'\./'\./'\./'\./'\./'\./'\.
  105. ;;    E n d   O f   F i l e   I f   y o u   A r e   H e r e      
  106. ;;/'\./'\./'\./'\./'\./'\./'\./'\./'\./'\./'\./'\./'\./'\./'\./'\.
M.R。
B2.LSP
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-10 04:59 , Processed in 0.915349 second(s), 75 queries .

© 2020-2025 乐筑天下

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