塔尔瓦特#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)
) 这
(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)
)
如果你不详细解释你想要什么,我肯定帮不了你。
使用“线”绘制闭合形状,无需绘制圆。
没有闭合“线”这样的实体,您需要绘制多段线或lwpolyline才能正常工作。
Tharwat的代码检查封闭实体,正如您在他的代码中看到的那样。 这似乎是一个重复的线程,请包含一个线程的所有相关问题。
一条直线有两个点(起点和终点),没有顶点,因此不可能闭合。
Tharwat的代码是检查“圆”、“椭圆和*多段线”而不是“线”。
实际上,如果您重新读取ssget函数的过滤,则会包括行,因为行字之前的星号意味着包括所有以行字结尾的实体名称。
我想OP讨论的是实体的闭合形状,如直线、多段线。。。等等,我们谈论的是具有紧密性质的实体,当然这两个事物之间没有任何共同点。 我不知道该怎么形容,
谢谢Tharwat,你是说你帮不了我?
页:
[1]