找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

楼主: aeo

[每日一码] 判断是不是 点 ,点对,转换成2d 3d 4d ,以前写的,以后可能会用到

[复制链接]

已领礼包: 604个

财富等级: 财运亨通

发表于 2014-2-14 13:12:18 | 显示全部楼层
  1. ;;判断为点
  2. (defun IsPoint (p)
  3.   (not(VL-CATCH-ALL-ERROR-P (VL-CATCH-ALL-APPLY 'distance (list '(0 0) P))))
  4. )
  5. ;;是二维点
  6. (defun Is2Point        (p)
  7.   (and (IsPoint P) (= (length p) 2))
  8. )
  9. ;;是三维点
  10. (defun Is3Point        (p)
  11.   (and (IsPoint P) (= (length p) 3))
  12. )
  13. ;;二维点转成三维点
  14. (defun 2P=>3P (P)
  15.   (if (Is2Point P)
  16.     (append p '(0))
  17.   )
  18. )
  19. ;;三维点转成二点
  20. (defun 3P=>2P (P)
  21.   (if (Is3Point P)
  22.     (mapcar '+ p '(0 0))
  23.   )
  24. )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

发表于 2014-2-14 13:17:46 来自手机 | 显示全部楼层
本帖最后由 st788796 于 2014-2-14 13:18 编辑

vl-catch-all-apply 'vlax-3d-point
这个判断论坛曾经有人用过

点评

;;是不是这样的,因为我没有看到过 ;;确保是3维点 (defun 3pTrue (p / A) (setq a (VL-CATCH-ALL-APPLY 'vlax-3d-point (list p))) (if (VL-CATCH-ALL-ERROR-P a) nil (vlax-safearray->list (vla  详情 回复 发表于 2014-2-14 13:59

评分

参与人数 1D豆 +2 收起 理由
/db_自贡黄明儒_ + 2 可惜我没有看到,又跟你学到东西了

查看全部评分

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

使用道具 举报

已领礼包: 604个

财富等级: 财运亨通

发表于 2014-2-14 13:59:49 | 显示全部楼层
st788796 发表于 2014-2-14 13:17
vl-catch-all-apply 'vlax-3d-point
这个判断论坛曾经有人用过

;;是不是这样的,因为我没有看到过
;;确保是3维点
(defun 3pTrue (p / A)
  (setq a (VL-CATCH-ALL-APPLY 'vlax-3d-point (list p)))
  (if (VL-CATCH-ALL-ERROR-P a)
    nil
    (vlax-safearray->list (vlax-variant-value a))
  )
)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

发表于 2014-2-14 14:01:39 | 显示全部楼层
本帖最后由 st788796 于 2014-2-14 14:05 编辑

_$ (vlax-3d-point '(0 1))
#<variant 8197 ...>
_$ (safearray-value (variant-value (vlax-3d-point '(0 1))))
(0.0 1.0 0.0)
_$ (safearray-value (variant-value (vlax-3d-point '(0 1 0))))
(0.0 1.0 0.0)
_$ (vl-catch-all-apply 'vlax-3d-point '(1))
#<%catch-all-apply-error%>
_$ (vl-catch-all-apply 'vlax-3d-point '(1 0))
#<variant 8197 ...>
_$ (vl-catch-all-apply 'vlax-3d-point '(1 0 1))
#<variant 8197 ...>
_$
  1. (defun isPoint (lst)
  2.   (if (and (listp lst)
  3.            (not        (vl-catch-all-error-p
  4.                   (vl-catch-all-apply 'vlax-3d-point lst)
  5.                 )
  6.            )
  7.       )
  8.     t
  9.     nil
  10.   )
  11. )

点评

那就这样写,更简化 (defun isPoint2 (p) (not (vl-catch-all-error-p (vl-catch-all-apply 'vlax-3d-point (list p))) ) )  详情 回复 发表于 2014-2-14 14:51
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 604个

财富等级: 财运亨通

发表于 2014-2-14 14:51:06 | 显示全部楼层
st788796 发表于 2014-2-14 14:01
_$ (vlax-3d-point '(0 1))
#
_$ (safearray-value (variant-value (vlax-3d-point '(0 1))))

那就这样写,更简化
(defun isPoint2 (p)
  (not
    (vl-catch-all-error-p (vl-catch-all-apply 'vlax-3d-point (list p)))
  )
)

点评

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

使用道具 举报

发表于 2014-2-14 15:25:29 | 显示全部楼层
/db_自贡黄明儒_ 发表于 2014-2-14 14:51
那就这样写,更简化
(defun isPoint2 (p)
  (not

呵呵,又保守了{:soso_e100:}

点评

好久没有看到你了,今天是情人节,就看到你了。 呵呵,你说的保守是什么意思,我觉得st788796写的函数中,去掉(listp lst)是完全可以的,什么也不影响  详情 回复 发表于 2014-2-14 15:46
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 604个

财富等级: 财运亨通

发表于 2014-2-14 15:46:19 | 显示全部楼层


好久没有看到你了,今天是情人节,就看到你同你夫人出来了{:soso_e113:}。
呵呵,你说的保守是什么意思,我觉得st788796写的函数中,去掉(listp lst)是完全可以的,什么也不影响
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2014-9-3 23:25:59 | 显示全部楼层
能把点转换成为圆不?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 4803个

财富等级: 富可敌国

发表于 2018-4-20 11:02:28 | 显示全部楼层
多谢分享!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复

使用道具 举报

已领礼包: 8727个

财富等级: 富甲天下

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-20 04:31 , Processed in 0.266849 second(s), 50 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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