请教版主、高手,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)
)
这个容易吧,读出全部pline群码42,如果有不为0的,就有弧线。 我试试, 谢谢 819534890 ;;;==================================================================
(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
) 太好了,谢谢 自贡黄明儒! (defun c:ck()
(setq ent (car(entsel)))
(checkarc ent)
)
本帖最后由 阿然 于 2013-11-1 15:44 编辑
(vl-remove 0.0 (mapcar 'cdr (vl-remove-if-not '(lambda(x) (= (car x) 42)) (entget (car(entsel"\n选择多义线:")))))) 用 vl-member-if 应该是最好的。 自贡黄明儒 发表于 2013-10-19 09:51 static/image/common/back.gif
;;;==================================================================
(defun checkarc (ename / BU ...
不错的函数。 (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]