明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1256|回复: 8

[提问] 谁有批量打断程序,能否分享下,谢谢

[复制链接]
发表于 2017-9-22 11:47:02 | 显示全部楼层 |阅读模式
类似下链接  图2
http://bbs.mjtd.com/forum.php?mo ... hlight=%B4%F2%B6%CF  类似图2

本帖子中包含更多资源

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

x
发表于 2017-9-23 15:58:29 | 显示全部楼层
有倒是有,只是没那么先进。

本帖子中包含更多资源

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

x
发表于 2017-9-23 18:14:47 | 显示全部楼层

本帖子中包含更多资源

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

x
 楼主| 发表于 2017-9-23 19:39:59 | 显示全部楼层

对对对.................
发表于 2021-12-11 11:14:40 | 显示全部楼层
菜卷鱼 发表于 2017-9-23 15:58
有倒是有,只是没那么先进。

怎么没用呢?
发表于 2021-12-11 14:10:36 | 显示全部楼层
本帖最后由 菜卷鱼 于 2021-12-14 08:58 编辑

  1. ;;[功能] 两对象交点列表
  2. ;;acextendnone 0 不延伸
  3. ;;acextendthisentity 1 延伸基准对象
  4. ;;acextendotherentity 2
  5. ;;acextendboth 3
  6. ;;示例(HH:TwoEntsInters (car(entsel)) (car(entsel)) 0)
  7. (defun HH:TwoEntsInters        (e1 e2 Flag / OBJ1 OBJ2 PTL PTS)
  8.   (setq obj1 (vlax-ename->vla-object e1))
  9.   (setq obj2 (vlax-ename->vla-object e2))
  10.   (setq pts (vlax-invoke obj1 'Intersectwith obj2 Flag))
  11.   (while pts
  12.     (setq ptl (cons (list (car pts) (cadr pts)) ptl))
  13.     (setq pts (cdddr pts))
  14.   )
  15.   ptl
  16. )
  17. ;;;返回自实体E之后生成的实体选择集
  18. ;;;Desgined by byghbcx
  19. (defun mark2ss (e / ss sn)
  20.   (if (/= (type e) 'ENAME)
  21.     (alert "Parameter ERROR in ENT_FROM")
  22.   )
  23.   (setq ss (ssadd))
  24.   (while e
  25.     (setq e (entnext e))
  26.     (if        e
  27.       (progn
  28.         (setq sn (cdr (assoc 0 (entget e))))
  29.         (if (not (member sn
  30.                          (quote
  31.                            ("ATTRIB" "VERTEX" "SEQEND")
  32.                          )
  33.                  )
  34.             )
  35.           (setq ss (ssadd e ss))
  36.         )
  37.       )
  38.     )
  39.   )
  40.   ss
  41. )

  42. (defun c:ba (/ ss cuter sscir ssnot)
  43.   (princ "按切割线打断")
  44.   (setq *error* undoerr)
  45.   (setq ss (ssget '((-4 . "<not") (0 . "INSERT") (-4 . "not>"))))
  46.   (setq cuter (car (nentsel "\n选择切割线:")))
  47.   (undobe)
  48.   (setq sscir (ssnotget ss 0 "CIRCLE" nil))
  49.   (setq ssnot (ssnotget ss 0 "CIRCLE" t))
  50.   (if (> (sslength ssnot) 0)
  51.     (cutbyline ssnot cuter)
  52.   )
  53.   (if (> (sslength sscir) 0)
  54.     (cutcircle sscir cuter)
  55.   )
  56.   (undoe)
  57.   (prin1)
  58. )



  59. (defun cutcircle (ss         cuter        /      ss_cir i             obj    ptlst
  60.                   info         elist        pt     ang1   ang2   elist1 elist2
  61.                  )
  62.   (setq i 0)
  63.   (repeat (sslength ss)
  64.     (setq obj (ssname ss i))
  65.     (setq ptlst (HH:TwoEntsInters obj cuter 0))
  66.     (setq info (entget obj))
  67.     (if (and(= (cdr(assoc 0 info)) "CIRCLE") (= 2 (length ptlst)))
  68.       (progn
  69.         (setq elist info)
  70.         (mapcar        '(lambda (x)
  71.                    (setq elist (vl-remove (assoc x elist) elist))
  72.                  )
  73.                 '(-1 0 330 5 100 100 100)
  74.         )
  75.         (setq pt (cdr (assoc 10 info)))
  76.         (setq ang1 (angle pt (car ptlst) ))
  77.         (setq ang2 (angle pt (cadr ptlst) ))
  78.         (setq elist1 (append (list '(0 . "ARC")
  79.                                    '(100 . "AcDbArc")
  80.                                    '(100 . "AcDbCircle")
  81.                                    (cons 50 ang1)
  82.                                    (cons 51 ang2)
  83.                              )
  84.                              elist
  85.                      )
  86.         )
  87.         (setq elist2 (append (list '(0 . "ARC")
  88.                                    '(100 . "AcDbArc")
  89.                                    '(100 . "AcDbCircle")
  90.                                    (cons 50 ang2)
  91.                                    (cons 51 ang1)
  92.                              )
  93.                              elist
  94.                      )
  95.         )
  96.         (entmake elist1)
  97.         (entmake elist2)
  98.         (entdel obj)
  99.       )
  100.     )
  101.     (setq i (1+ i))
  102.   )
  103.   (princ "完成圆打断。")
  104.   (prin1)
  105. )

  106. (defun cutbyline (s1 cuter / i mark brked ssl pl pt brklst)
  107.   (setq i 0)
  108.   (cmd0)
  109.   (setq mark (entlast))
  110.   (setq brked (ssadd))
  111.   (setq ssl (sslist s1))
  112.   (setq        ssl (vl-remove-if-not
  113.               '(lambda (x) (HH:TwoEntsInters x cuter 0))
  114.               ssl
  115.             )
  116.   )
  117.   (while ssl
  118.     (foreach x ssl
  119.       (setq pl (HH:TwoEntsInters x cuter 0))
  120.       (setq i 0)
  121.       (repeat (length pl)
  122.         (setq pt (nth i pl))
  123.         (command "_.break" x pt pt)
  124.         (setq brked (ssadd x brked))
  125.         (setq i (1+ i))
  126.       )
  127.     )
  128.     (setq s1 (mark2ss mark))
  129.     (setq ssl (sslist s1))
  130.     (setq ssl (vl-remove-if-not
  131.                 '(lambda (x) (HH:TwoEntsInters x cuter 0))
  132.                 ssl
  133.               )
  134.     )
  135.     (setq brklst (sslist brked))
  136.     (foreach x brklst
  137.       (setq ssl (vl-remove x ssl))
  138.     )
  139.   )
  140.   (cmd1)
  141.   (princ "完成线打断。")
  142.   (prin1)
  143. )

  144. (defun split (str mark / txt lth eps)
  145.   (setq lth (strlen mark))
  146.   (if (zerop lth)
  147.     (setq mark " ")
  148.   )
  149.   (setq eps (vl-string-search mark str))
  150.   (while (/= eps nil)
  151.     (setq txt (append txt (list (substr str 1 eps))))
  152.     (setq str (substr str (+ 1 eps lth)))
  153.     (setq eps (vl-string-search mark str))
  154.   )
  155.   (append txt (list str))
  156. )

  157. (defun ssnotget        (ss index value bool / ssnot i elst obj ename booif)
  158.   (setq ssnot (ssadd))
  159.   (setq i 0)
  160.   (if (member BOOL '(T nil))
  161.     (progn
  162.       (cond
  163.         ((= (type value) 'LIST)
  164.          (setq elst value)
  165.         )
  166.         ((= (type value) 'STR)
  167.          (setq elst (split value ","))
  168.          (setq elst (mapcar '(lambda (x) (strcase x)) elst))
  169.         )
  170.         (T (setq elst (list value)))
  171.       )
  172.       (repeat (sslength ss)
  173.         (setq obj (ssname ss i))
  174.         (setq ename (cdr (assoc index (entget obj))))
  175.         (setq booif (= nil (member ename elst)))
  176.         (if (= bool booif)
  177.           (setq ssnot (ssadd obj ssnot))
  178.         )
  179.         (setq i (1+ i))
  180.       )
  181.     )
  182.     (princ "\n判断关键字非布尔值")
  183.   )
  184.   ssnot
  185. )
  186. (defun c:bt ( / ent pt)
  187.   (princ "Break the object on the point")
  188.   (setq ent (entsel "\nChoose the object:"))
  189.   (setq pt  (getpoint "breaking point:"))
  190.   (setvar "cmdecho" 0)
  191.   (command "_.break" ent "f" pt pt)
  192.   (setvar "cmdecho" 1)
  193. (prin1))
发表于 2021-12-13 21:06:58 | 显示全部楼层

非常感谢回复,谢谢!!!!!!!!!!!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-15 02:03 , Processed in 0.272909 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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