明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1602|回复: 9

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

[复制链接]
发表于 2013-10-17 16:39:05 | 显示全部楼层 |阅读模式
请教版主、高手,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)
)


"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2013-10-17 17:26:23 | 显示全部楼层
这个容易吧,读出全部pline群码42,如果有不为0的,就有弧线。
 楼主| 发表于 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
)
 楼主| 发表于 2013-10-19 11:31:15 | 显示全部楼层
太好了,谢谢 自贡黄明儒!
 楼主| 发表于 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选择多义线:"))))))
发表于 2013-11-2 04:08:45 | 显示全部楼层
用 vl-member-if 应该是最好的。
发表于 2013-11-3 01:42:29 | 显示全部楼层
自贡黄明儒 发表于 2013-10-19 09:51
;;;==================================================================
  (defun checkarc (ename / BU ...

不错的函数。
发表于 2013-11-3 06:53:00 | 显示全部楼层
  1. (defun aaa (s1 / lst)
  2.   (foreach a (entget s1)
  3.     (if        (and (= (car a) 42)
  4.              (/= (cdr a) 0)
  5.         )
  6.       (setq lst (cons (cdr a) lst))
  7.     )
  8.   )
  9.   (if lst t nil)
  10. )

评分

参与人数 1明经币 +2 金钱 -18 收起 理由
ZZXXQQ + 2 -18 赞一个!

查看全部评分

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2025-5-26 08:05 , Processed in 0.215900 second(s), 30 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表