明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2503|回复: 9

如何处理这个表PT_LIST才能:返回这个点表中的 “各个点中Z坐标最小的”

[复制链接]
发表于 2003-4-12 11:51:00 | 显示全部楼层 |阅读模式
请教大侠,下面这个程序返回空间一被选取立方体的各顶点坐标的表PT_LIST,如何处理这个表PT_LIST才能:返回这个点表中的 “各个点中Z坐标最小的” 的点。即是要找出各点中哪个点的Z坐标最小,并返回这个子点表。 还请赐教!

(defun C:tts (/ SS SS1 N N1 NN ENT CHECK TMP PT_LIST)
  
  (command "explode" "all" "")
  (command "explode" "all" "")
  (command "explode" "all" "")
  
  (defun DO_IT1 ()
    (if (not
  (member (setq TMP (cdr (assoc 10 (entget ENT)))) PT_LIST)
)
      (setq PT_LIST (append PT_LIST (list TMP)))
    )
    (if (not
  (member (setq TMP (cdr (assoc 11 (entget ENT)))) PT_LIST)
)
      (setq PT_LIST (append PT_LIST (list TMP)))
    )
  )

  (setq SS (ssget '((0 . "polyline,line,lwpolyline"))))
  (setq PT_LIST '())
  (setq N 0)
  (repeat (sslength SS)
    (setq ENT (ssname SS N))
    (setq CHECK (cdr (assoc 100 (reverse (entget ENT)))))
    (cond
      ((= CHECK "AcDbPolygonMesh")
       (command "_.COPY" ENT "" "0,0" "@")
       (command "_.EXPLODE" (entlast))
       (setq SS1 (ssget ""))
       (setq N1 0)
       (repeat (sslength SS1)
(setq ENT (entget (ssname SS1 N1)))
(setq NN 0)
(repeat 4
   (if
     (not (member (setq TMP (cdr (assoc (+ 10 NN) ENT))) PT_LIST)
     )
      (setq PT_LIST (append PT_LIST (list TMP)))
   )
   (setq NN (1+ NN))
)
(setq N1 (1+ N1))
       )
       (command "_.ERASE" SS1 "")
      )
      ((OR(= CHECK "AcDb3dPolyline")
          (= (CDR (ASSOC 0 (ENTGET ENT))) "OLYLINE")
          (= (CDR (ASSOC 0 (ENTGET ENT))) "LWPOLYLINE"))
       (command "_.COPY" ENT "" "0,0" "@")
       (command "_.EXPLODE" (entlast))
       (setq SS1 (ssget ""))
       (setq N1 0)
       (repeat (sslength SS1)
(setq ENT (ssname SS1 N1))
(DO_IT1)
(setq N1 (1+ N1))
       )
       (command "_.ERASE" SS1 "")
      )
      (t
       (DO_IT1)
      )
    )
    (setq N (1+ N))
  )
  PT_LIST
)
 楼主| 发表于 2003-4-13 15:41:00 | 显示全部楼层

有高手帮忙看看吗? 急啊,龙大侠能帮帮我吗?

发表于 2003-4-13 19:27:00 | 显示全部楼层

试试

(defun minzl(ptlist)
  (setq minz (apply 'min (mapcar '(lambda(x) (caddr x)) ptlist)))
  (setq i 0)
  (while (/= (caddr (nth i ptlist)) minz)
    (setq i (1+ i))
  )
  (nth i ptlist)
)
 楼主| 发表于 2003-4-14 10:15:00 | 显示全部楼层

试过,提示:“错误: 参数列表中有错误元素: -2.13163e-014”,不知返回的是。。

试过,提示:“错误: 参数列表中有错误元素: -2.13163e-014”,(说明:-2.13163e-014 是所求点表中的x坐标值),不知返回的是 z坐标最小的那个点的点表吗?
 楼主| 发表于 2003-4-14 10:18:00 | 显示全部楼层

文件上传

 楼主| 发表于 2003-4-14 10:21:00 | 显示全部楼层

文件上传(更正)

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
发表于 2003-4-14 13:02:00 | 显示全部楼层

(car (vl-sort pt_list '(lambda (z1 z2)(< (caddr z1)(caddr z2)))))

(car (vl-sort pt_list '(lambda (z1 z2)(< (caddr z1)(caddr z2)))))
发表于 2003-4-14 13:04:00 | 显示全部楼层

见上面

发表于 2003-4-15 12:32:00 | 显示全部楼层

ShiCai OK!

 楼主| 发表于 2003-4-17 10:05:00 | 显示全部楼层

ok了,谢谢大家的指点!

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

本版积分规则

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

GMT+8, 2024-11-26 09:47 , Processed in 0.169363 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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