乐筑天下

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

[编程交流] 如何从ea中删除一行

[复制链接]

13

主题

64

帖子

51

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
65
发表于 2022-7-5 17:48:01 | 显示全部楼层 |阅读模式
尊敬的各位:,
 
请查看附图。
每个关节都有双线,因为我使用了lisp例程。
我想删除一行,而overkill不能删除,因为它不重叠。
请建议我如何删除这一行,因为我有这么多这样的画。
如有任何建议,我们将不胜感激。
供应管道。图纸
回复

使用道具 举报

13

主题

64

帖子

51

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
65
发表于 2022-7-5 17:56:02 | 显示全部楼层
等待某人的回复。。。。
回复

使用道具 举报

7

主题

708

帖子

701

银币

初来乍到

Rank: 1

铜币
35
发表于 2022-7-5 17:59:39 | 显示全部楼层
祝你好运我不知道你如何判断哪一个是正确的。
回复

使用道具 举报

4

主题

2143

帖子

2197

银币

限制会员

铜币
-24
发表于 2022-7-5 18:08:12 | 显示全部楼层
如果可能的话,你可能需要Lisp程序。可以按长度拾取,但端点的长度与90°弯头线的长度相同,因此必须找到一种方法,不要删除这些端点。
 
我将你的帖子转移到AutoLISP、Visual LISP和DCL论坛。
回复

使用道具 举报

8

主题

1133

帖子

1164

银币

初来乍到

Rank: 1

铜币
10
发表于 2022-7-5 18:10:38 | 显示全部楼层
也许您可以找到问题的根源——lisp例程。连续形状的某些位置精度将大有帮助。
回复

使用道具 举报

66

主题

1552

帖子

1514

银币

后起之秀

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

铜币
325
发表于 2022-7-5 18:15:39 | 显示全部楼层
你好
我对例行程序的合理答案是:
1.S获取所有线路
2、设置最近平行线的公差(用户输入)
3.使每对平行线低于该公差值
4.如果其中一行比另一行短,则将其删除,如果其长度相等,则删除任何人
 
但正如eldon所提到的,lisp例程是个问题——你有“重叠的矩形”,它们之间的距离为0001。
当我在你的画里画一条多段线时,它看起来被修改了。
我猜你画了一个网格线,lisp用这些修改过的多段线覆盖了它们?
 
编辑:
当然,我不知道如何获得每对线之间的垂直距离(可能比较端点的坐标,如果两条线的旋转匹配?)
回复

使用道具 举报

5

主题

1334

帖子

1410

银币

限制会员

铜币
-20
发表于 2022-7-5 18:23:26 | 显示全部楼层
我所能说的是,您可以在提供足够模糊因子的情况下尝试(c:weld2d),或者如果您有更多时间,可以尝试以下步骤:
 
1.启动PEDIT,选择“多个”选项,点击ENTER键几次,将所有实体转换为LWD多段线。。。
2.run(c:extshortlwsaddv)-在我的电脑上持续5分钟-提供fuzz 0.1。。。
3.从发布在此处的PLINETOOLS运行(c:plintav opt):
http://www.cadtutor.net/forum/showthread.php?67924-绘制-polyline-along-with-2-或更多-相邻-闭合多段线/page3&p=#25
-在我的电脑上持续了15-20分钟。。。
完成后,将所有LW多段线分解为直线和圆弧。。。
5.运行(c:weld2d)张贴在这里,提供足够的模糊因子。。。
-在我的电脑上持续了30分钟-提供了模糊0.1。。。
启动OVERKILL命令并提供足够的模糊因子。。。
-提供模糊0.1
 
  1. (defun c:weld2d ( / *error* unique dupnum LM:5P-Ellipse detm trp quad LM:defaultprops LM:point->param 3parc *adoc* ucsf ss i ent pepl ppel fuzz allptl n p1 p2 par k dpar pl enx mp ell arc ppl sfa )
  2. (vl-load-com)
  3. (defun *error* ( m )
  4.    (if ucsf
  5.      (command "_.UCS" "_P")
  6.    )
  7.    (vla-endundomark *adoc*)
  8.    (if m
  9.      (prompt m)
  10.    )
  11.    (princ)
  12. )
  13. (defun unique ( l fuzz )
  14.    (if l (cons (car l) (vl-remove-if '(lambda ( p ) (equal p (car l) fuzz)) (unique (cdr l) fuzz))))
  15. )
  16. (defun dupnum ( p l n )
  17.    (- n (length (vl-remove p l)))
  18. )
  19. ;; 5-Point Ellipse  -  Lee Mac
  20. ;; Args: p1,p2,p3,p4,p5 - UCS points defining Ellipse
  21. ;; Returns a list of: ((10 <WCS Center>) (11 <WCS Major Axis Endpoint from Center>) (40 . <Minor/Major Ratio>))
  22. (defun LM:5P-Ellipse ( p1 p2 p3 p4 p5 / a av b c cf cx cy d e f i m1 m2 rl v x )
  23.      (setq m1
  24.          (trp
  25.              (mapcar
  26.                  (function
  27.                      (lambda ( p )
  28.                          (list
  29.                              (* (car  p) (car  p))
  30.                              (* (car  p) (cadr p))
  31.                              (* (cadr p) (cadr p))
  32.                              (car  p)
  33.                              (cadr p)
  34.                              1.0
  35.                          )
  36.                      )
  37.                  )
  38.                  (list p1 p2 p3 p4 p5)
  39.              )
  40.          )
  41.      )
  42.      (setq i -1.0)
  43.      (repeat 6
  44.          (setq cf (cons (* (setq i (- i)) (detm (trp (append (reverse m2) (cdr m1))))) cf)
  45.                m2 (cons (car m1) m2)
  46.                m1 (cdr m1)
  47.          )
  48.      )
  49.      (mapcar 'set '(f e d c b a) cf) ;; Coefficients of Conic equation ax^2 + bxy + cy^2 + dx + ey + f = 0
  50.      (if (< 0 (setq x (- (* 4.0 a c) (* b b))))
  51.          (progn
  52.              (if (equal 0.0 b 1e- ;; Ellipse parallel to coordinate axes
  53.                  (setq av '((1.0 0.0) (0.0 1.0))) ;; Axis vectors
  54.                  (setq av
  55.                      (mapcar
  56.                          (function
  57.                              (lambda ( v / d )
  58.                                  (setq v (list (/ b 2.0) (- v a)) ;; Eigenvectors
  59.                                        d (distance '(0.0 0.0) v)
  60.                                  )
  61.                                  (mapcar '/ v (list d d))
  62.                              )
  63.                          )
  64.                          (quad 1.0 (- (+ a c)) (- (* a c) (* 0.25 b b))) ;; Eigenvalues
  65.                      )
  66.                  )
  67.              )
  68.              (setq cx (/ (- (* b e) (* 2.0 c d)) x) ;; Ellipse Center
  69.                    cy (/ (- (* b d) (* 2.0 a e)) x)
  70.              )
  71.              ;; For radii, solve intersection of axis vectors with Conic Equation:
  72.              ;; ax^2 + bxy + cy^2 + dx + ey + f = 0  }
  73.              ;; x = cx + vx(t)                       }- solve for t
  74.              ;; y = cy + vy(t)                       }
  75.              (setq rl
  76.                  (mapcar
  77.                      (function
  78.                          (lambda ( v / vv vx vy )
  79.                              (setq vv (mapcar '* v v)
  80.                                    vx (car  v)
  81.                                    vy (cadr v)
  82.                              )
  83.                              (apply 'max
  84.                                  (quad
  85.                                      (+ (* a (car vv)) (* b vx vy) (* c (cadr vv)))
  86.                                      (+ (* 2.0 a cx vx) (* b (+ (* cx vy) (* cy vx))) (* c 2.0 cy vy) (* d vx) (* e vy))
  87.                                      (+ (* a cx cx) (* b cx cy) (* c cy cy) (* d cx) (* e cy) f)
  88.                                  )
  89.                              )
  90.                          )
  91.                      )
  92.                      av
  93.                  )
  94.              )
  95.              (if (apply '> rl)
  96.                  (setq rl (reverse rl)
  97.                        av (reverse av)
  98.                  )
  99.              )
  100.              (list
  101.                  (cons 10 (trans (list cx cy) 1 0)) ;; WCS Ellipse Center
  102.                  (cons 11 (trans (mapcar '(lambda ( v ) (* v (cadr rl))) (cadr av)) 1 0)) ;; WCS Major Axis Endpoint from Center
  103.                  (cons 40 (apply '/ rl)) ;; minor/major ratio
  104.              )
  105.          )
  106.      )
  107. )
  108. ;;;***********************************************************************************;;;
  109. ;;; (detm m) function calculates determinant of square martix                         ;;;
  110. ;;; Marko Ribar, d.i.a.                                                               ;;;
  111. ;;; Args: m - nxn matrix                                                              ;;;
  112. ;;; (detm '((0 1) (1 0)))                                                             ;;;
  113. ;;; (detm '((1.4 2.1 5.4 6.5) (4.1 9.3 4.5 8.5) (1.2 4.1 6.2 7.5) (4.7 8.5 9.3 0.1))) ;;;
  114. ;;;***********************************************************************************;;;
  115. (defun detm ( m / d i j r )
  116.    (defun d ( k n / z )
  117.      (setq k (cdr k))
  118.      (setq k (apply 'mapcar (cons 'list k)))
  119.      (setq z -1)
  120.      (while (<= (setq z (1+ z)) (length k))
  121.        (if (eq z n)
  122.          (setq k (cdr k))
  123.          (setq k (reverse (cons (car k) (reverse (cdr k)))))
  124.        )
  125.      )
  126.      (setq k (apply 'mapcar (cons 'list k)))
  127.      (if (= (length k) 1) (caar k) k)
  128.    )
  129.    (if (not (eq (length m) 1))
  130.      (progn
  131.        (setq i -1)
  132.        (setq j -1)
  133.        (setq r 0)
  134.        (foreach e (car m)
  135.          (setq i (1+ i))
  136.          (setq j (* j (- 1)))
  137.          (setq r (+ r (* j e (if (listp (d m i)) (detm (d m i)) (d m i)))))
  138.        )
  139.        r
  140.      )
  141.      (caar m)
  142.    )
  143. )
  144. ;; Matrix Transpose  -  Doug Wilson
  145. ;; Args: m - nxn matrix
  146. (defun trp ( m )
  147.      (apply 'mapcar (cons 'list m))
  148. )
  149. ;; Quadratic Solution  -  Lee Mac
  150. ;; Args: a,b,c - coefficients of ax^2 + bx + c = 0
  151. (defun quad ( a b c / d r )
  152.      (if (<= 0 (setq d (- (* b b) (* 4.0 a c))))
  153.          (progn
  154.              (setq r (sqrt d))
  155.              (list (/ (+ (- b) r) (* 2.0 a)) (/ (- (- b) r) (* 2.0 a)))
  156.          )
  157.      )
  158. )
  159. ;; Default Properties  -  Lee Mac
  160. ;; Returns a list of DXF properties for the supplied DXF data,
  161. ;; substituting default values for absent DXF groups
  162. (defun LM:defaultprops ( enx )
  163.      (vl-remove nil
  164.          (mapcar '(lambda ( x ) (cond ((assoc (car x) enx)) ((not (assoc (car x) enx)) nil) ( x )))
  165.             '(
  166.                  (006 . "BYLAYER")
  167.                  (008 . "0")
  168.                  (039 . 0.0)
  169.                  (048 . 1.0)
  170.                  (062 . 256)
  171.                  (370 . -1)
  172.                  (420 . 16777215)
  173.              )
  174.          )
  175.      )
  176. )
  177. ;; Point -> Ellipse Parameter  -  Lee Mac
  178. ;; Returns the ellipse parameter for the given point
  179. ;; dxf  -  Ellipse DXF data (DXF groups 10, 11, 40, 210)
  180. ;; pnt  -  WCS Point on Ellipse
  181. ;; Uses relationship: ratio*tan(param) = tan(angle)
  182. (defun LM:point->param ( dxf pnt / ang ocs )
  183.      (setq ocs (cdr (assoc 210 dxf))
  184.            ang (- (angle (trans (cdr (assoc 10 dxf)) 0 ocs) (trans pnt 0 ocs))
  185.                   (angle '(0.0 0.0) (trans (cdr (assoc 11 dxf)) 0 ocs))
  186.                )
  187.      )
  188.      (atan (sin ang) (* (cdr (assoc 40 dxf)) (cos ang)))
  189. )
  190. (defun 3parc ( p1 p2 p3 / mid clockwise-p ang1 ang2 cen eang mid1 mid2 rad sang )
  191.    (defun mid ( p1 p2 )
  192.      (mapcar '(lambda ( a b ) (/ (+ a b) 2.0)) p1 p2)
  193.    )
  194.    (defun clockwise-p ( p1 p2 p3 ) ; Gile
  195.      (< (sin (- (angle p1 p3) (angle p1 p2))) -1e-14)
  196.    )
  197.    (setq ang1 (angle p1 p2) ang2 (angle p2 p3)
  198.          mid1 (mid p1 p2)   mid2 (mid p2 p3)
  199.    
  200.          cen  (inters mid1 (polar mid1 (+ ang1 (/ pi 2.)) 1.)
  201.                       mid2 (polar mid2 (+ ang2 (/ pi 2.)) 1.) nil)
  202.          
  203.          rad  (distance cen p1)
  204.    )
  205.    (if (clockwise-p p1 p2 p3)
  206.      (setq sAng (angle cen p3)
  207.            eAng (angle cen p1)
  208.      )
  209.      (setq sAng (angle cen p1)
  210.            eAng (angle cen p3)
  211.      )
  212.    )
  213.    (list
  214.      (cons 10 cen)
  215.      (cons 40 rad)
  216.      (cons 50 sAng)
  217.      (cons 51 eAng)
  218.    )
  219. )
  220. (vla-startundomark (setq *adoc* (vla-get-activedocument (vlax-get-acad-object))))
  221. (if (= (getvar 'worlducs) 0)
  222.    (progn
  223.      (command "_.UCS" "_W")
  224.      (setq ucsf t)
  225.    )
  226. )
  227. (prompt "\nSelect 2d curves placed in WCS and on unlocked layer(s)...")
  228. (setq ss (ssget "_:L"))
  229. (repeat (setq i (sslength ss))
  230.    (setq ent (ssname ss (setq i (1- i))))
  231.    (if (or (not (and (vlax-curve-isplanar ent) (equal (caddr (vlax-curve-getstartpoint ent)) 0.0 1e-6))) (and (wcmatch (cdr (assoc 0 (entget ent))) "SPLINE,ELLIPSE") (equal (vlax-curve-getstartpoint ent) (vlax-curve-getendpoint ent) 1e-6)))
  232.      (ssdel ent ss)
  233.    )
  234. )
  235. (repeat (setq i (sslength ss))
  236.    (setq ent (ssname ss (setq i (1- i))))
  237.    (cond
  238.      ( (wcmatch (cdr (assoc 0 (entget ent))) "SPLINE,LINE,ARC,ELLIPSE,POLYLINE,LWPOLYLINE")
  239.        (cond
  240.          ( (and (= (cdr (assoc 0 (entget ent))) "POLYLINE") (not (or (= (cdr (assoc 70 (entget ent))) 0) (= (cdr (assoc 70 (entget ent))) 128) (= (cdr (assoc 70 (entget ent))) 1) (= (cdr (assoc 70 (entget ent))) 129))))
  241.            (setq pepl (cons (list (vlax-curve-getstartpoint ent) ent (vlax-curve-getendpoint ent)) pepl))
  242.          )
  243.          ( (and (= (cdr (assoc 0 (entget ent))) "POLYLINE") (/= (cdr (assoc 90 (entget ent))) 2))
  244.            (command "_.CONVERTPOLY" "_L" ent "")
  245.            (setq ppel (cons (list (mapcar 'cdr (vl-remove-if-not '(lambda ( x ) (= (car x) 10)) (entget ent))) ent) ppel))
  246.            (command "_.UNDO" "1")
  247.          )
  248.          ( (and (= (cdr (assoc 0 (entget ent))) "LWPOLYLINE") (/= (cdr (assoc 90 (entget ent))) 2))
  249.            (setq ppel (cons (list (mapcar 'cdr (vl-remove-if-not '(lambda ( x ) (= (car x) 10)) (entget ent))) ent) ppel))
  250.          )
  251.          ( t
  252.            (setq pepl (cons (list (vlax-curve-getstartpoint ent) ent (vlax-curve-getendpoint ent)) pepl))
  253.          )
  254.        )
  255.      )
  256.    )
  257. )
  258. (setq fuzz 0.11)
  259. (while (> fuzz 0.1)
  260.    (initget 6)
  261.    (setq fuzz (getdist "\nPick or specify fuzz distance <1e-3> - should not be greater than 0.1 : "))
  262.    (if (null fuzz)
  263.      (setq fuzz 1e-3)
  264.    )
  265. )
  266. (foreach pep pepl
  267.    (setq allptl (cons (car pep) allptl) allptl (cons (last pep) allptl))
  268. )
  269. (foreach ppe ppel
  270.    (setq allptl (append (mapcar '(lambda ( p ) (list (car p) (cadr p) 0.0)) (car ppe)) allptl))
  271. )
  272. (setq n (length allptl))
  273. (setq allptl (vl-sort allptl '(lambda ( a b ) (> (dupnum a allptl n) (dupnum b allptl n)))))
  274. (setq allptl (unique allptl (/ fuzz 2.5)))
  275. (foreach pep pepl
  276.    (setq p1 (car pep) ent (cadr pep) p2 (caddr pep))
  277.    (setq p1 (car (vl-member-if '(lambda ( p ) (equal p1 p fuzz)) allptl)))
  278.    (setq p2 (car (vl-member-if '(lambda ( p ) (equal p2 p fuzz)) allptl)))
  279.    (if (null p1)
  280.      (setq p1 (car pep))
  281.    )
  282.    (if (null p2)
  283.      (setq p2 (caddr pep))
  284.    )
  285.    (cond
  286.      ( (= (cdr (assoc 0 (entget ent))) "ELLIPSE")
  287.        (setq pl nil)
  288.        (setq par (vlax-curve-getstartparam ent))
  289.        (setq k -1 dpar (/ (- (vlax-curve-getendparam ent) par) 5.00000001))
  290.        (repeat 5
  291.          (setq pl (cons (vlax-curve-getpointatparam ent (+ par (* (setq k (1+ k)) dpar))) pl))
  292.        )
  293.        (setq pl (reverse pl))
  294.        (if (equal p1 p2 1e-6)
  295.          (setq p1 (car pep) p2 (caddr pep))
  296.        )
  297.        (setq pl (reverse (cons p2 (cdr (reverse (cons p1 (cdr pl)))))))
  298.        (setq enx (entget ent))
  299.        (entmake
  300.          (append
  301.           '(
  302.              (0 . "ELLIPSE")
  303.              (100 . "AcDbEntity")
  304.              (100 . "AcDbEllipse")
  305.            )
  306.            (LM:defaultprops enx)
  307.            (setq ell (LM:5P-Ellipse pl))
  308.            (list
  309.              (cons 41 (LM:point->param (cons (list 210 0.0 0.0 1.0) ell) p1))
  310.              (cons 42 (LM:point->param (cons (list 210 0.0 0.0 1.0) ell) p2))
  311.            )
  312.            (list (list 210 0.0 0.0 1.0))
  313.          )
  314.        )
  315.        (entdel ent)
  316.      )
  317.      ( (= (cdr (assoc 0 (entget ent))) "ARC")
  318.        (setq mp (vlax-curve-getpointatparam ent (/ (+ (vlax-curve-getstartparam ent) (vlax-curve-getendparam ent)) 2.0)))
  319.        (setq enx (entget ent))
  320.        (if (equal p1 p2 1e-6)
  321.          (setq p1 (car pep) p2 (caddr pep))
  322.        )
  323.        (entmake
  324.          (append
  325.           '(
  326.              (0 . "ARC")
  327.              (100 . "AcDbEntity")
  328.              (100 . "AcDbCircle")
  329.            )
  330.            (LM:defaultprops enx)
  331.            (list (car (setq arc (3parc p1 mp p2))) (cadr arc))
  332.            (list (cons 100 "AcDbArc"))
  333.            (list (caddr arc) (cadddr arc))
  334.            (list (list 210 0.0 0.0 1.0))
  335.          )
  336.        )
  337.        (entdel ent)
  338.      )
  339.      ( (= (cdr (assoc 0 (entget ent))) "LINE")
  340.        (entupd (cdr (assoc -1 (entmod (subst (cons 10 p1) (assoc 10 (entget ent)) (entget ent))))))
  341.        (entupd (cdr (assoc -1 (entmod (subst (cons 11 p2) (assoc 11 (entget ent)) (entget ent))))))
  342.      )
  343.      ( (= (cdr (assoc 0 (entget ent))) "POLYLINE")
  344.        (if (= (cdr (assoc 100 (reverse (entget ent)))) "AcDb2dPolyline")
  345.          (progn
  346.            (setq sfa (vlax-make-safearray vlax-vbdouble (cons 1 (length (safearray-value (variant-value (vla-get-coordinates (vlax-ename->vla-object ent))))))))
  347.            (vlax-safearray-fill sfa (list (car p1) (cadr p1) (car p2) (cadr p2)))
  348.            (vla-put-coordinates (vlax-ename->vla-object ent) (vlax-make-variant sfa))
  349.          )
  350.          (progn
  351.            (setq sfa (vlax-make-safearray vlax-vbdouble (cons 1 (length (safearray-value (variant-value (vla-get-coordinates (vlax-ename->vla-object ent))))))))
  352.            (vlax-safearray-fill sfa (list (car p1) (cadr p1) 0.0 (car p2) (cadr p2) 0.0))
  353.            (vla-put-coordinates (vlax-ename->vla-object ent) (vlax-make-variant sfa))
  354.          )
  355.        )
  356.        (vla-update (vlax-ename->vla-object ent))
  357.      )
  358.      ( (= (cdr (assoc 0 (entget ent))) "LWPOLYLINE")
  359.        (entupd (cdr (assoc -1 (entmod (subst (list 10 (car p1) (cadr p1)) (assoc 10 (entget ent)) (entget ent))))))
  360.        (entupd (cdr (assoc -1 (entmod (subst (list 10 (car p2) (cadr p2)) (assoc 10 (reverse (entget ent))) (entget ent))))))
  361.      )
  362.      ( (= (cdr (assoc 0 (entget ent))) "SPLINE")
  363.        (if (assoc 10 (entget ent))
  364.          (progn
  365.            (entupd (cdr (assoc -1 (entmod (subst (cons 10 p1) (assoc 10 (entget ent)) (entget ent))))))
  366.            (entupd (cdr (assoc -1 (entmod (subst (cons 10 p2) (assoc 10 (reverse (entget ent))) (entget ent))))))
  367.          )
  368.          (progn
  369.            (entupd (cdr (assoc -1 (entmod (subst (cons 11 p1) (assoc 11 (entget ent)) (entget ent))))))
  370.            (entupd (cdr (assoc -1 (entmod (subst (cons 11 p2) (assoc 11 (reverse (entget ent))) (entget ent))))))
  371.          )
  372.        )
  373.      )
  374.    )
  375. )
  376. (foreach ppe ppel
  377.    (setq pl (car ppe) ent (cadr ppe) ppl nil)
  378.    (foreach p pl
  379.      (setq ppl (cons (if (car (vl-member-if '(lambda ( x ) (equal (list (car p) (cadr p) 0.0) x fuzz)) allptl)) (car (vl-member-if '(lambda ( x ) (equal (list (car p) (cadr p) 0.0) x fuzz)) allptl)) p) ppl))
  380.    )
  381.    (setq ppl (reverse ppl))
  382.    (cond
  383.      ( (= (cdr (assoc 0 (entget ent))) "POLYLINE")
  384.        (if (= (cdr (assoc 100 (reverse (entget ent)))) "AcDb2dPolyline")
  385.          (progn
  386.            (setq sfa (vlax-make-safearray vlax-vbdouble (cons 1 (length (safearray-value (variant-value (vla-get-coordinates (vlax-ename->vla-object ent))))))))
  387.            (vlax-safearray-fill sfa (vl-remove 0.0 (apply 'append ppl)))
  388.            (vla-put-coordinates (vlax-ename->vla-object ent) (vlax-make-variant sfa))
  389.          )
  390.          (progn
  391.            (setq sfa (vlax-make-safearray vlax-vbdouble (cons 1 (length (safearray-value (variant-value (vla-get-coordinates (vlax-ename->vla-object ent))))))))
  392.            (vlax-safearray-fill sfa (apply 'append ppl))
  393.            (vla-put-coordinates (vlax-ename->vla-object ent) (vlax-make-variant sfa))
  394.          )
  395.        )
  396.        (vla-update (vlax-ename->vla-object ent))
  397.      )
  398.      ( (= (cdr (assoc 0 (entget ent))) "LWPOLYLINE")
  399.        (setq sfa (vlax-make-safearray vlax-vbdouble (cons 1 (length (safearray-value (variant-value (vla-get-coordinates (vlax-ename->vla-object ent))))))))
  400.        (vlax-safearray-fill sfa (vl-remove 0.0 (apply 'append ppl)))
  401.        (vla-put-coordinates (vlax-ename->vla-object ent) (vlax-make-variant sfa))
  402.        (vla-update (vlax-ename->vla-object ent))
  403.      )
  404.    )
  405. )
  406. (*error* nil)
  407. )
HTH,M.R。
回复

使用道具 举报

5

主题

1334

帖子

1410

银币

限制会员

铜币
-20
发表于 2022-7-5 18:31:07 | 显示全部楼层
您好,感谢您的来电请求,我找到了我的plintav。lsp非常慢,需要优化。。。最后我修改了它,我的新版本叫做“plintav opt.lsp”。。。我用你的例子将执行时间降低到了可以接受的15-20分钟,我认为这是一个非常好的结果。。。我将附上我试图更正您的DWG-DWG存储在存档中,并按日期/时间排序。。。这是我的“plintav opt.lsp”
 
顺便说一句,有了像你这样的DWG,你可能需要至少1个小时才能使每个DWG更准确,就像我说的,你仍然会有像你标记的不好的部分,但其中一些问题会得到解决。。。
 
HTH,M.R。
回复

使用道具 举报

5

主题

1334

帖子

1410

银币

限制会员

铜币
-20
发表于 2022-7-5 18:34:29 | 显示全部楼层
我更改了(c:weld2d)以避免在您提供的示例中终止错误。。。
 
这是我最后的代码-它应该首先运行。。。因此,一切都是按照与所发布内容相反的顺序进行的。。。我会在第一个回复中更改解释。。。
 
[code](defun c:extshortlwsaddv(/*error*intersobj1obj2 add\u vtx*adoc*ucsf ss i ent fuzz ll ur bbl ent1 ent2 ss-ent1 k intpts)(vl load com)(defun*error*(m)(if ucsf(command“.UCS”“\u P”)(vla endundomark*adoc*)(if m(prompt m))(princ))(defun intersobj1obj2(obj1 obj2/coords pt ptlst)(if(eq(type obj1)'ENAME)(setq obj1(x ENAME->vla对象obj1)))(if(eq(type obj2)‘ENAME)(setq obj2(vlax ENAME->vla object obj2)))(setq coords(vl catch all apply’vlax safearray->list(list(vl catch all apply’vlax variant value(list(vla intersectwith obj1 obj2 AcExtendBoth)k k))(if(vl catch all error-p coords)(setq ptst nil)(重复(/(length coords)3)(setq pt(list(car coords)(cadr coords)(caddr coords)))(setq ptlst(cons pt ptlst))(setq coords(cdddr coords)))ptlst)(defun add\u vtx(obj add\u pt ent\u name/bulg sw ew)(vla GetWidth obj(fix add\u pt)“sw”ew)(vla addVertex obj(1+(fix add\u pt))(vlax make variant(vlax safearray fill(vlax make safearray vlax vbdouble(cons 0 1))(list(car(trans(vlax curve getpointatparam obj add\u pt)0 ent\u name))(cadr(trans(vlax curve getpointatparam obj add\u pt)0 ent\u name)))(setq bulg(vla GetBulge obj(fix add\u pt))(vla SetBulge obj(fix add\u pt)(/(sin(/(*4(atan bulg)(-add\u pt(fix add\u pt))))4))(cos(/(*4(atan bulg)(-add\u pt(fix add\u pt)))4))(vla SetBulge obj(1+(fix add\u pt))(/(sin(/(*4(atan bulg)((1+(fix add\u pt))add\u pt)4))(cos(/(*4(atan bulg)((1+(fix add\u pt))add\u pt))4)))(vla SetWidth obj(fix add\u pt)sw(+sw(*-ew sw)(-add\u pt(fix add pt))。_ptϨϨϨ)(vla SetWidth obj(1+(fix add\u pt))(+sw(*-ew sw)(-add\u pt(fix add\u pt)))ew(vla update obj))(vla startundomark(setq*adoc*(vla get activedocument(vlax get acad object))(if(=(getvar'worlducs)0)(progn(command“.UCS”“\u W”)(setq ucsf t))(setq ss(ssget“:L”“((0。“LWPOLYLINE”))(重复(setq i(sslength ss))(setq ent(ssname ss(setq i(1-i)))(if(not(and(vlax curve isplana ent)(equal(caddr(vlax curve getstartpoint))0.0 1e-6))(ssdel ent ss))(setq fuzz 0.11)(while(>fuzz 0.1)(initget 6)(setq fuzz(getdist“\n单击或指定fuzz距离-不应大于0.1:”)(if(null fuzz)(setq fuzz 1e-2))(setq ll(car(acet geom ss extensts precisive ss))ur(cadr(acet geom ss extents accurate ss))(setq bbl(list ll(list(car ur)(cadr ll))ur(list(car ll)(cadr ur)))(重复(setq i(sslength ss))(setq ent1(ssname ss(setq i(1-i)))(vla getboundingbox(vlax ename->vla object ent1)“ll”ur(mapcar“set”(ll ur)(mapcar“vlax safearray->list(list ll ur)))(vla ZoomWindows(vlax get acad object)(vlax-3d-point ll)(vlax-3d-point ll)ur)(setq ss-ent1(ssget“_CP”bbl’((0。“LWPOLYLINE”)))(vla zoomprevious(vlax get acad object))(ssdel ent1 ss-ent1)(repeat(setq k(sslength ss-ent1))(setq ent2(ssname ss-ent1(setq k(1-k)))(setq intpts(intersobj1obj2 ent1 ent2))(if intpts(foreach pt intpts)(if(or)(and(vlax curve getparamatpoint ent1 pt))(not(vlax curve getparamatpoint ent2 pt))(和(not(vlax curve getparamatpoint ent1 pt))(vlax curve getparamatpoint ent2 pt))(cond((和(vlax curve getparamatpoint ent1 pt)(不等于(vlax curve getparamatpoint ent1 pt)(vlax curve GetStartParamatParam ent1)1e-5))(不等于(vlax curve getparamatpoint ent1 pt)(vlax curve getendparam ent1)1e-5)(或(
回复

使用道具 举报

5

主题

1334

帖子

1410

银币

限制会员

铜币
-20
发表于 2022-7-5 18:38:59 | 显示全部楼层
文章#7中提供了最新解释。。。
 
您好,M.R。
供应管道。拉链
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-12 23:38 , Processed in 0.391173 second(s), 72 queries .

© 2020-2025 乐筑天下

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