andy_lee 发表于 2022-7-5 23:04:45

塔尔瓦特#039;代码,需要一个smal

检查形状对象,是否闭合?如果未闭合,则绘制一个圆并高亮显示。
 
谢谢塔瓦特的密码。但这段代码有一个错误:对象是闭合的,仍然是一个圆。。。
 

 
(defun c:test (/ _c d s n e l)
;;    Tharwat 03.May.2014      ;;
(defun _c (e)
   (foreach p (list (vlax-curve-getStartPoint e)
                  (vlax-curve-getEndPoint e)
            )
   (setq d (ssadd (entmakex (list '(0 . "CIRCLE")
                                    (cons 10 p)
                                    (cons 40 4.)
                                    '(62 . 1)
                              )
                  )
                  d
             )
   )
   )
)
(if (setq d (ssadd)
         s (ssget "_:S" '((0 . "*LINE,ARC,ELLIPSE")))
   )
   (repeat (setq n (sslength s))
   (setq e (ssname s (setq n (1- n))))
   (if (eq (cdr (assoc 0 (entget e))) "ELLIPSE")
       (if (not (vlax-curve-isclosed (vlax-ename->vla-object e)))
         (_c e)
       )
       (_c e)
   )
   )
)
(sssetfirst nil d)
(princ)
)

Tharwat 发表于 2022-7-5 23:17:47


 

(defun c:test (/ _c d s n e l)
;;    Tharwat 11.May.2014      ;;
(defun _c (e)
   (foreach p (list (vlax-curve-getStartPoint e) (vlax-curve-getEndPoint e))
   (setq d (ssadd (entmakex (list '(0 . "CIRCLE") (cons 10 p) (cons 40 4.) '(62 . 1))) d))
   )
)
(if (setq d (ssadd)
         s (ssget "_:S" '((0 . "*LINE,ARC,ELLIPSE")))
   )
   (repeat (setq n (sslength s))
   (setq e (ssname s (setq n (1- n))))
   (if (eq (cdr (assoc 0 (entget e))) "ELLIPSE")
       (if (not (vlax-curve-isclosed (vlax-ename->vla-object e)))
         (_c e)
       )
   )
   (if (wcmatch (cdr (assoc 0 (entget e))) "*POLYLINE")
       (if (not (vlax-curve-isclosed e))
         (_c e)
       )
       (_c e)
   )
   )
)
(sssetfirst nil d)
(princ)
)

Tharwat 发表于 2022-7-5 23:30:18

如果你不详细解释你想要什么,我肯定帮不了你。

andy_lee 发表于 2022-7-5 23:35:04

 
使用“线”绘制闭合形状,无需绘制圆。

Snownut 发表于 2022-7-5 23:44:35

 
没有闭合“线”这样的实体,您需要绘制多段线或lwpolyline才能正常工作。
 
Tharwat的代码检查封闭实体,正如您在他的代码中看到的那样。

Snownut 发表于 2022-7-5 23:50:33

这似乎是一个重复的线程,请包含一个线程的所有相关问题。
 
一条直线有两个点(起点和终点),没有顶点,因此不可能闭合。
 
Tharwat的代码是检查“圆”、“椭圆和*多段线”而不是“线”。

Tharwat 发表于 2022-7-5 23:51:32

 
实际上,如果您重新读取ssget函数的过滤,则会包括行,因为行字之前的星号意味着包括所有以行字结尾的实体名称。
 
我想OP讨论的是实体的闭合形状,如直线、多段线。。。等等,我们谈论的是具有紧密性质的实体,当然这两个事物之间没有任何共同点。

andy_lee 发表于 2022-7-5 23:58:13

我不知道该怎么形容,
 

andy_lee 发表于 2022-7-6 00:10:17

 
谢谢Tharwat,你是说你帮不了我?
页: [1]
查看完整版本: 塔尔瓦特#039;代码,需要一个smal