mycad 发表于 2013-10-17 16:39:05

请教版主、高手,lisp怎样判断pline线有无arc?

请教版主、高手,lisp怎样判断pline线有无arc?谢谢!急用!

;; | ----------------------------------------------------------------------------
;; | PL_Arced?
;; | ----------------------------------------------------------------------------
;; | Function : Checks if a polyline has atleast one ARC segment
;; | Argument : 'ename' - Polyline object name
;; | Returns: T if the polyline is arc'ed, else nil
;; | Updated: August 12, 1999
;; | e-mail   : rakesh.rao@4d-technologies.com
;; | Web      : www.4d-technologies.com
;; | ----------------------------------------------------------------------------


(defun PL_Arced?( ename / flag en entl VxEntl BlgLst )


(setq BlgLst (LI_MakeUnique (PL_GetBulgeLst ename)))
(if (and (= (length BlgLst) 1) (zerop (nth 0 BlgLst))) nil T)
)


819534890 发表于 2013-10-17 17:26:23

这个容易吧,读出全部pline群码42,如果有不为0的,就有弧线。

mycad 发表于 2013-10-19 07:50:16

我试试, 谢谢 819534890

自贡黄明儒 发表于 2013-10-19 09:51:34

;;;==================================================================
(defun checkarc (ename / BU N OBJ PLIST)
(setq obj (vlax-ename->vla-object ename))
(setq plist (vlax-safearray->list (vlax-variant-value (vla-get-coordinates obj))))
(setq n 0 bu nil)
(repeat (/ (length plist) 2)
    (if (/= (vla-getbulge obj n) 0)
      (setq bu T)
   )
    (setq n (+ n 1))
)
bu
)

mycad 发表于 2013-10-19 11:31:15

太好了,谢谢 自贡黄明儒!

mycad 发表于 2013-10-19 11:31:47

(defun c:ck()
   (setq ent (car(entsel)))
   (checkarc ent)

)

阿然 发表于 2013-11-1 15:42:24

本帖最后由 阿然 于 2013-11-1 15:44 编辑

(vl-remove 0.0 (mapcar 'cdr (vl-remove-if-not '(lambda(x) (= (car x) 42)) (entget (car(entsel"\n选择多义线:"))))))

nzl1116 发表于 2013-11-2 04:08:45

用 vl-member-if 应该是最好的。

spiderman 发表于 2013-11-3 01:42:29

自贡黄明儒 发表于 2013-10-19 09:51 static/image/common/back.gif
;;;==================================================================
(defun checkarc (ename / BU ...

不错的函数。

xyp1964 发表于 2013-11-3 06:53:00

(defun aaa (s1 / lst)
(foreach a (entget s1)
    (if        (and (= (car a) 42)
             (/= (cdr a) 0)
        )
      (setq lst (cons (cdr a) lst))
    )
)
(if lst t nil)
)
页: [1]
查看完整版本: 请教版主、高手,lisp怎样判断pline线有无arc?