找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 2229|回复: 3

[点表] (XD::Pnts:Perimeter)点表构成多边形的周长

[复制链接]

已领礼包: 1268个

财富等级: 财源广进

发表于 2016-6-8 22:55:37 | 显示全部楼层 |阅读模式
函数发布
函数名称: XD::Pnts:Perimeter
调用格式: (XD::Pnts:Perimeter pts)
参数说明: pts - 点表
返回值: 实数
函数简介: 点表构成闭合多边形的周长
函数来源: 转载
函数作者: st788796
适用版本: 不限 
最后更新时间: 2016-06-08
备注: -
演示图片: -

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

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

×

  1. (defun XD::Pnts:Perimeter (pts / dis)
  2.   (apply (function +)
  3.          (mapcar (function (lambda (p1 p2)
  4.                              (distance p1 p2)
  5.                            )
  6.                  )
  7.                  (cons (last pts) pts)
  8.                  pts
  9.          )
  10.   )
  11. )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 145个

财富等级: 日进斗金

发表于 2016-6-9 18:01:50 | 显示全部楼层
写法有很多

1、DIST函数计算
  1. (defun XD::PNTS:Peremiter (pts)
  2.   (apply
  3.     '+
  4.     (mapcar
  5.       '(lambda (x)
  6.          (apply
  7.            'distance
  8.            x
  9.          )
  10.        )
  11.       (xd::list:snakepair pts)
  12.     )
  13.   )
  14. )



2、getpropertyvalue 实体查询

  1. (defun XD::PNTS:Peremiter (pts)
  2.   (setq len (xdrx_getpropertyvalue (xdrx_polyline_make pts) "length"))
  3.   (xdrx_entity_delete (entlast))
  4.   len
  5. )


3、使用ARX几何库查询(构建每段的AcGeLineSeg3d,然后SetCurvelist)
  1. (defun XD::Pnts:Peremiter (pts)
  2.   (setq g (xdge::constructor "kCompositeCrv3d")
  3.         gl (mapcar
  4.              '(lambda (x)
  5.                 (xdge::constructor "kLineSeg3d" (car x) (cadr x))
  6.               )
  7.              (xd::list:snakepair pts)
  8.            )
  9.   )  (xdge::setpropertyvalue g "setcurvelist" gl)
  10.   (setq len (xdge::getpropertyvalue g "length"))
  11.   (xdge::free (list g gl))
  12.   len
  13. )


4、ARX几何库查询最新写法,直接点表构建AcGeCompositeCrv3d,使用几何库的好处是不仅仅可以求LENGTH,支持的几何量都可以查询,

  1. (defun XD::Pnts:Peremiter(pts)
  2.    (setq g (xdge::constructor "kCompositecrv3d" pts)
  3.          len (xdge::getpropertyvalue g "length")
  4.    )
  5.    (xdge::free g)
  6.    len
  7. )



5、ARX几何库查询最新写法变种(省略的变量赋值),API 2016.0609版本以后支持

  1. (defun XD::Pnts:Peremiter(pts)
  2.    (setq g (xdge::constructor "kCompositecrv3d" pts))
  3.    (xdge::getpropertyvalue g "length")
  4.    (xdge::free g)
  5.    length
  6. )




6、getpropertyvalue 实体查询的变种(省略变量赋值)

  1. (defun XD::PNTS:Peremiter (pts)
  2.   (xdrx_getpropertyvalue (xdrx_polyline_make pts) "length")
  3.   (xdrx_entity_delete (entlast))
  4.   length
  5. )




上面代码顺序的过程,也是API发展的过程


论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

 楼主| 发表于 2016-6-9 18:14:17 来自手机 | 显示全部楼层
XDSoft 发表于 2016-6-9 18:01
写法有很多

1、DIST函数计算

对了解xdapi很有帮助,1 楼是基本功
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

 楼主| 发表于 2016-6-9 20:31:23 来自手机 | 显示全部楼层
补充一句,一楼是按闭合线计算的,api是按点表本身(闭合或非闭合)计算,闭合使用xd::pnts:close预处理
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-3-29 10:13 , Processed in 0.357048 second(s), 35 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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