明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1220|回复: 6

[已解答] 求解:程序的执行过程是什么样的。

[复制链接]
发表于 2013-6-21 17:25 | 显示全部楼层 |阅读模式
1明经币
请哪位给说明下,下面这个程序的运行过程。另外遍历图元有什么作用。



(defun c:tq(/ en enl pts)
     (setq en (car (entsel "选择3dpolyline")))
     (while (= (cdr (assoc 0 (setq enl (entget (setq en (entnext en)))))) "VERTEX")
          (setq pts (cons (cdr (assoc 10 enl)) pts))
     )
     (mapcar '(lambda(pt)(princ (strcat "\nx=" (rtos (car  pt) 2 6)
                                        "  y=" (rtos (cadr pt) 2 6)
                                        "  z=" (rtos (last pt) 2 6)
                                )
                         )
              )
              (setq pts (reverse pts))
     )
     (princ)
  )

最佳答案

查看完整内容

说下我的理解! 程序分两大部分, 第一个部分由while组成,循环找到图元的顶点并组成点表pts。 第二部分由mapcar完成,循环输出pts中的xyz值。 遍历图元主要是对图元内的东西一个个的进行查找处理! 所有的循环类函数都能用来做遍历,比如while.repeat.foreach等!如果是表形式常用mapcar函数做遍历,因为他方便快捷! vl类函数有很多个函数均能做遍历,对vl我也不熟,所以就不举例了。
发表于 2013-6-21 17:25 | 显示全部楼层
说下我的理解!
程序分两大部分,
第一个部分由while组成,循环找到图元的顶点并组成点表pts。
第二部分由mapcar完成,循环输出pts中的xyz值。
遍历图元主要是对图元内的东西一个个的进行查找处理!
所有的循环类函数都能用来做遍历,比如while.repeat.foreach等!如果是表形式常用mapcar函数做遍历,因为他方便快捷!
vl类函数有很多个函数均能做遍历,对vl我也不熟,所以就不举例了。
回复

使用道具 举报

发表于 2013-6-21 17:46 | 显示全部楼层
好象有一种polyline线,叫什么轻多义线吧(如果是重多义线,就转成轻多义线),用entnext可以找到其顶点,我知道的就这么一点点,而且未必准确,等高手回答你吧
回复

使用道具 举报

发表于 2013-6-21 18:39 | 显示全部楼层
提取三维多段线的顶点坐标,三维多段线有子实体需要用遍历的方式获取VERTEX
回复

使用道具 举报

 楼主| 发表于 2013-6-21 21:07 | 显示全部楼层
我主要是从while到mapcar搞不懂,while结束后,pts被赋给了什么值,怎么就能一个一个读出来。遍历方式到底是怎么回事,还有其他什么方式?谢谢了

点评

你得先了解下mapcar及lambda函数。  发表于 2013-6-22 02:53
回复

使用道具 举报

发表于 2013-6-21 23:03 | 显示全部楼层
游客,本帖隐藏的内容需要发帖数高于 5 才可浏览,你当前发帖数只有 0
回复

使用道具 举报

 楼主| 发表于 2013-6-22 21:17 | 显示全部楼层
感谢各位的回复,我主要是对mapcar的理解还是有问题,再次看过程序后发现mapcar后面是list1.。。listn,而不是1.。。n。明白了。谢谢各位。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-17 16:15 , Processed in 0.395893 second(s), 33 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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