rodrigo_sjc_sp 发表于 2022-7-6 06:11:30

顶点重叠

我有一条多段线,这有相同的顶点重叠,如何识别顶点重叠并放大?
 
使用lisp。

Tuns 发表于 2022-7-6 06:19:08

你有一条带顶点的多段线,你想放大这个顶点吗?

Lee Mac 发表于 2022-7-6 06:20:31

你的意思是多段线有两个或多个顶点位于同一位置吗?

LanloyLisp 发表于 2022-7-6 06:25:02

缩放多段线中的重复顶点似乎不合适。更好的方法可能是包围重复的顶点。

Tuns 发表于 2022-7-6 06:28:07

或喜欢使用滚轮。

marko_ribar 发表于 2022-7-6 06:35:26

请查看此帖子。。。
 
M、 R。

rodrigo_sjc_sp 发表于 2022-7-6 06:38:14


 
这就像操作员autocad要生成多段线,在另一个顶点上创建一个新顶点或将一个顶点拖动到另一个顶点上一样。
 
我需要放大这个顶点吗。
 
李,就这样。这就好像一个顶点周围有另一个顶点。

Lee Mac 发表于 2022-7-6 06:42:31

试试这个简单的程序:

(defun c:vdupes ( / e i s )
   (if (setq s (ssget '((0 . "LWPOLYLINE"))))
       (repeat (setq i (sslength s))
         (foreach x
               (LM:ListDupesFuzz
                   (vl-remove-if-not '(lambda ( x ) (= 10 (car x)))
                     (setq e (entget (ssname s (setq i (1- i)))))
                   )
                   1e-8
               )
               (entmake
                   (list
                      '(0 . "CIRCLE")
                      '(8 . "Duplicate-Vertices") ;; Layer
                     x
                      '(40 . 1.0) ;; Radius
                      '(62 . 1)   ;; Colour
                     (assoc 210 e)
                   )
               )
         )
       )
   )
   (princ)
)

;; List Duplicates with Fuzz-Lee Mac
;; Returns a list of items appearing more than once in a supplied list

(defun LM:ListDupesFuzz ( l f / c r x )
   (while l
       (setq x (car l)
             c (length l)
             l (vl-remove-if '(lambda ( y ) (equal x y f)) (cdr l))
       )
       (if (< (length l) (1- c))
         (setq r (cons x r))
       )
   )
   (reverse r)
)
(princ)

marko_ribar 发表于 2022-7-6 06:46:29

再次感谢大家,以上代码是基于李的代码

rodrigo_sjc_sp 发表于 2022-7-6 06:50:47

不客气,罗德里戈
 
这里可能有一个替代方案:


(defun vs ( / e i s )

   (if (setq s (ssget"_x" '((0 . "LWPOLYLINE"))))
       (repeat (setq i (sslength s))
         (foreach x
               (LM:ListDupesFuzz
                     (vl-remove-if-not '(lambda ( x ) (= 10 (car x)))
                     (setq e (entget (ssname s (setq i (1- i)))))
)
                1e-8

               )

               (entmake
                   (list
                      '(0 . "CIRCLE")
                      '(8 . "Duplicate-Vertices") ;; Layer
                     x
                      '(40 . 1.0) ;; Radius
                      '(62 . 1)   ;; Colour
                     (assoc 210 e)
                   )
               )

            (setq selpline2 (ssget "_x" (list '(0 . "CIRCLE")(cons 8 "Duplicate-Vertices"))))
            (setq m 0)
            (repeat (sslength selpline2)      
                      (setq pline_ent2 (ssname selpline2 m))
                      (setq lis_ent2 (entget pline_ent2))
                      (Alert "Attention. Vertex superimposed. I will show through a Zoom.")
                      (COMMAND "ZOOM" "OBJECT" pline_ent2 "")
                      (exit)
            )
          )
       )
   )
   (princ)
)
;; List Duplicates with Fuzz-Lee Mac
;; Returns a list of items appearing more than once in a supplied list
(defun LM:ListDupesFuzz ( l f / c r x )
   (while l
       (setq x (car l)
             c (length l)
             l (vl-remove-if '(lambda ( y ) (equal x y f)) (cdr l))
       )
       (if (< (length l) (1- c))
         (setq r (cons x r))
       )
   )
   (reverse r)
)
(princ)

页: [1] 2
查看完整版本: 顶点重叠