乐筑天下

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

[编程交流] 删除多段线或对象输出

[复制链接]

2

主题

9

帖子

7

银币

初来乍到

Rank: 1

铜币
10
发表于 2022-7-5 13:09:28 | 显示全部楼层 |阅读模式
 
Por favor,podemos ayudar a convertir este punto para poder seleccional varios contornos(polilínea)y mantener los segmentos que se interscan con una línea que cruza todos los contornos。
 
 

 
 
 
 
 
 
140931kzlns8odls1kwz1l.png
回复

使用道具 举报

2

主题

9

帖子

7

银币

初来乍到

Rank: 1

铜币
10
发表于 2022-7-5 13:22:57 | 显示全部楼层
 
 
  1. ; Required Express tools
  2. ; OutSide Contour Delete with Extrim
  3. ; Found at http://forums.augi.com/showthread.php?t=55056
  4. (defun C:OCD (  / en ss lst ssall bbox)
  5. (vl-load-com)
  6.   (if (and (setq en (car(entsel "\nSelect contour (polyline): ")))
  7.            (wcmatch (cdr(assoc 0 (entget en))) "*POLYLINE"))
  8.     (progn
  9.       (setq bbox (ACET-ENT-GEOMEXTENTS en))
  10.       (setq bbox (mapcar '(lambda(x)(trans x 0 1)) bbox))
  11.       (setq lst (ACET-GEOM-OBJECT-POINT-LIST en 1e-3))
  12.       (ACET-SS-ZOOM-EXTENTS (ACET-LIST-TO-SS (list en)))
  13.       (command "_.Zoom" "0.95x")
  14.       (if (null etrim)(load "extrim.lsp"))
  15.       (etrim en (polar
  16.                   (car bbox)
  17.                   (angle (car bbox)(cadr bbox))
  18.                   (* (distance (car bbox)(cadr bbox)) 1.1)))
  19.       (if (and
  20.             (setq ss (ssget "_CP" lst))
  21.             (setq ssall (ssget "_X" (list (assoc 410 (entget en)))))
  22.            )
  23.         (progn
  24.           (setq lst (vl-remove-if 'listp (mapcar 'cadr (ssnamex ss))))
  25.           (foreach e1 lst (ssdel e1 ssall))
  26.           (ACET-SS-ENTDEL ssall)
  27.           )
  28.         )
  29.       )
  30.     )
  31.   )
  32. (princ "\nType OCD to start")
  33. (princ)
Por favor,modifique esta luz para selecciar el contorno múltiple y retener el segmento。
  1.  
回复

使用道具 举报

2

主题

9

帖子

7

银币

初来乍到

Rank: 1

铜币
10
发表于 2022-7-5 13:33:58 | 显示全部楼层
140941dulkb8uhu5r5fukf.png
回复

使用道具 举报

8

主题

1647

帖子

1647

银币

初来乍到

Rank: 1

铜币
36
发表于 2022-7-5 13:48:22 | 显示全部楼层
我把你的两条线合并在一起了。请不要创建多个线程来问同一个问题。
另外,这是一个英语论坛,所以请用英语发布你的问题。
 
非常感谢。
回复

使用道具 举报

5

主题

1334

帖子

1410

银币

限制会员

铜币
-20
发表于 2022-7-5 13:53:08 | 显示全部楼层
试试这个mod。。。最低限度测试。。。
 
  1. ; Required Express tools
  2. ; OutSide Contour Delete with Extrim
  3. ; Found at http://forums.augi.com/showthread.php?t=55056
  4. ; Modified for multiple contour processing by M.R.
  5. (defun C:OCD ( / *error* LM:ConvexHull LM:Clockwise-p entnextparent adoc cmde sel i el en ss sss lst cp ssall bbox enx laylst elst fuzz )
  6.   (vl-load-com)
  7.   (defun *error* ( m )
  8.     (if cmde
  9.       (setvar 'cmdecho cmde)
  10.     )
  11.     (vla-endundomark adoc)
  12.     (if m
  13.       (prompt m)
  14.     )
  15.     (princ)
  16.   )
  17.   ;; Convex Hull  -  Lee Mac
  18.   ;; Implements the Graham Scan Algorithm to return the Convex Hull of a list of points.
  19.   (defun LM:ConvexHull ( lst / ch p0 )
  20.       (cond
  21.           (   (< (length lst) 4) lst)
  22.           (   (setq p0 (car lst))
  23.               (foreach p1 (cdr lst)
  24.                   (if (or (< (cadr p1) (cadr p0))
  25.                           (and (equal (cadr p1) (cadr p0) 1e-8) (< (car p1) (car p0)))
  26.                       )
  27.                       (setq p0 p1)
  28.                   )
  29.               )
  30.               (setq lst (vl-remove p0 lst))
  31.               (setq lst (append (list p0) lst))
  32.               (setq lst
  33.                   (vl-sort lst
  34.                       (function
  35.                           (lambda ( a b / c d )
  36.                               (if (equal (setq c (angle p0 a)) (setq d (angle p0 b)) 1e-8)
  37.                                   (< (distance p0 a) (distance p0 b))
  38.                                   (< (if (equal c (* 2.0 pi) 1e-8) 0.0 c) (if (equal d (* 2.0 pi) 1e-8) 0.0 d))
  39.                               )
  40.                           )
  41.                       )
  42.                   )
  43.               )
  44.               (setq ch (list (cadr lst) (car lst)))
  45.               (foreach pt (cddr lst)
  46.                   (setq ch (cons pt ch))
  47.                   (while (and (caddr ch) (LM:Clockwise-p (caddr ch) (cadr ch) pt))
  48.                       (setq ch (cons pt (cddr ch)))
  49.                   )
  50.               )
  51.               (reverse ch)
  52.           )
  53.       )
  54.   )
  55.   ;; Clockwise-p  -  Lee Mac
  56.   ;; Returns T if p1,p2,p3 are clockwise oriented or collinear
  57.   (defun LM:Clockwise-p ( p1 p2 p3 )
  58.       (<  (-  (* (- (car  p2) (car  p1)) (- (cadr p3) (cadr p1)))
  59.               (* (- (cadr p2) (cadr p1)) (- (car  p3) (car  p1)))
  60.           )
  61.           1e-8
  62.       )
  63.   )
  64.   (defun entnextparent ( e )
  65.     (while (and (setq e (entnext e)) (wcmatch (cdr (assoc 0 (entget e))) "ATTRIB,VERTEX,SEQEND")))
  66.     e
  67.   )
  68.   (setq adoc (vla-get-activedocument (vlax-get-acad-object)))
  69.   (if (= 8 (logand 8 (getvar 'undoctl)))
  70.     (vla-endundomark adoc)
  71.   )
  72.   (setq cmde (getvar 'cmdecho))
  73.   (setvar 'cmdecho 0)
  74.   (prompt "\nSelect contour polylines: ")
  75.   (while (not (setq sel (ssget "_:L" '((0 . "*POLYLINE") (-4 . "<or") (70 . 1) (70 . 129) (-4 . "or>")))))
  76.     (prompt "\nEmpty sel.set... Retry selecting again...")
  77.   )
  78.   (if (tblsearch "LAYER" "temp_layer")
  79.     (progn
  80.       (prompt "\nLayer "temp_layer" already present in active document... Please delete this layer as it is used by this routine and restart OCD again...")
  81.       (exit)
  82.     )
  83.   )
  84.   (if (null etrim) (load "extrim.lsp"))
  85.   (initget 6)
  86.   (setq fuzz (getdist "\nPick or specify fuzz distance for interpolation of reference polyline(s) <0.5> : "))
  87.   (if (null fuzz)
  88.     (setq fuzz 0.5)
  89.   )
  90.   (repeat (setq i (sslength sel))
  91.     (if laylst
  92.       (progn
  93.         (setq el (entlast))
  94.         (vl-cmdf "_.PASTECLIP" "_non" '(0.0 0.0 0.0))
  95.         (while (setq el (entnextparent el))
  96.           (setq elst (cons el elst))
  97.         )
  98.       )
  99.     )
  100.     (vla-startundomark adoc)
  101.     (setq en (ssname sel (setq i (1- i))))
  102.     (setq bbox (ACET-ENT-GEOMEXTENTS en))
  103.     (setq bbox (mapcar '(lambda ( x ) (trans x 0 1)) bbox))
  104.     (setq lst (ACET-GEOM-OBJECT-POINT-LIST en fuzz))
  105.     (setq cp (mapcar '(lambda ( a b ) (/ (+ a b) 2.0)) (car bbox) (cadr bbox)))
  106.     (setq lst (mapcar '(lambda ( x ) (mapcar '+ cp (mapcar '* (mapcar '- x cp) (list 1.05 1.05 1.05)))) lst))
  107.     (setq lst (LM:ConvexHull lst))
  108.     (vl-cmdf "_.ZOOM" "_OB" en "")
  109.     (vl-cmdf "_.ZOOM" "0.75x")
  110.     (etrim en (polar (car bbox) (angle (car bbox) (cadr bbox)) (* (distance (car bbox) (cadr bbox)) 1.1)))
  111.     (vl-cmdf "_.ZOOM" "_P")
  112.     (vl-cmdf "_.ZOOM" "_P")
  113.     (if (setq ss (ssget "_CP" lst))
  114.       (progn
  115.         (setq sss (ssadd))
  116.         (foreach e (vl-remove-if 'listp (mapcar 'cadr (ssnamex ss)))
  117.           (setq enx (entget (vlax-vla-object->ename (vla-copy (vlax-ename->vla-object e)))))
  118.           (setq laylst (cons (cdr (assoc 8 enx)) laylst))
  119.           (entupd (cdr (assoc -1 (entmod (subst (cons 8 "temp_layer") (assoc 8 enx) enx)))))
  120.           (ssadd (cdr (assoc -1 enx)) sss)
  121.         )
  122.       )
  123.     )
  124.     (vl-cmdf "_.COPYBASE" "_non" '(0.0 0.0 0.0) sss "")
  125.     (vl-cmdf "_.UNDO" "_B")
  126.   )
  127.   (setq el (entlast))
  128.   (vl-cmdf "_.PASTECLIP" "_non" '(0.0 0.0 0.0))
  129.   (while (setq el (entnextparent el))
  130.     (setq elst (cons el elst))
  131.   )
  132.   (setq ssall (ssget "_X" (list (cons 8 "~temp_layer"))))
  133.   (ACET-SS-ENTDEL ssall)
  134.   (mapcar '(lambda ( a b ) (entupd (cdr (assoc -1 (entmod (subst (cons 8 b) '(8 . "temp_layer") (entget a))))))) elst laylst)
  135.   (vl-cmdf "_.PURGE" "_LA" "temp_layer" "_N")
  136.   (*error* nil)
  137. )
HTH。,M、 R。
回复

使用道具 举报

58

主题

3353

帖子

33

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1761
发表于 2022-7-5 14:04:50 | 显示全部楼层
你听说过谷歌翻译吗?这毕竟是万维网。 
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-5 14:12:14 | 显示全部楼层
谷歌翻译
 
140949hphw9spjmm59wmia.png
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-15 07:21 , Processed in 1.821846 second(s), 69 queries .

© 2020-2025 乐筑天下

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