找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 2751|回复: 14

[教学] XDGE几何库应用(二)---曲线相关

[复制链接]

已领礼包: 1268个

财富等级: 财源广进

发表于 2014-9-14 17:15:58 | 显示全部楼层 |阅读模式

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

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

×
本帖最后由 st788796 于 2014-11-1 08:06 编辑

直线关系判断
  1. (defun ln2ln (p1 p2 p11 p22 / ge1 ge2 mod)
  2.   (setq        ge1 (xdge::constructor "kLineSeg3d" p1 p2)
  3.         ge2 (xdge::constructor "kLineSeg3d" p11 p22)
  4.   )
  5.   (setq        mod (cond
  6.               ((xdge::getpropertyvalue ge1 "IsEqualTo" ge2)
  7.                0 ;_same
  8.               )
  9.               ((xdge::getpropertyvalue ge1 "isPerpendicularTo" ge2)
  10.                1 ;_垂直
  11.               )
  12.               ((xdge::getpropertyvalue ge1 "isColinearTo" ge2)
  13.                2 ;_共线
  14.               )
  15.               ((xdge::getpropertyvalue ge1 "isParallelTo" ge2)
  16.                3 ;_平行        
  17.               )
  18.               ((xdge::getpropertyvalue ge1 "intersectWith" ge2) ;_(inters p1 p2 p11 p12)
  19.                4 ;_相交
  20.               )
  21.               (t 5)
  22.             )
  23.   )
  24.   (xdge::free)
  25.   mod
  26. )

本帖被以下淘专辑推荐:

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

已领礼包: 1268个

财富等级: 财源广进

 楼主| 发表于 2014-9-14 18:23:01 | 显示全部楼层
两个曲线是否完全重合
  1. (defun iseq (e1 e2 / tf ge1 ge2)
  2.   (setq        ge1 (xdge::constructor e1)
  3.         ge2 (xdge::constructor e2)
  4.         tf  (or        (xdge::getpropertyvalue ge1 "IsEqualTo" ge2)
  5.                 (progn
  6.                   (xdge::setpropertyvalue ge2 "reverseParam")
  7.                   (xdge::getpropertyvalue ge1 "IsEqualTo" ge2)
  8.                 )
  9.             )
  10.   )
  11.   (xdge::free)
  12.   tf
  13. )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

 楼主| 发表于 2014-9-14 18:31:56 | 显示全部楼层
inters 源形,Lisp 没有函数重构,只能定义两个
  1. ;;不延伸构造线段
  2. (defun ginters (p1 p2 p3 p4 / ge1 ge2 p)
  3.   (setq        ge1 (xdge::constructor "kLineSeg3d" p1 p2)
  4.         ge2 (xdge::constructor "kLineSeg3d" p3 p4)
  5.         p   (xdge::getpropertyvalue ge1 "intersectWith" ge2)
  6.   )
  7.   (xdge::free)
  8.   p
  9. )
  10. ;;延伸交点就构造 xline
  11. (defun ginters1 (p1 p2 p3 p4 mod / ge1 ge2 p)
  12.   (setq        ge1 (xdge::constructor "kLine3d" p1 p2)
  13.         ge2 (xdge::constructor "kLine3d" p3 p4)
  14.         p   (xdge::getpropertyvalue ge1 "intersectWith" ge2)
  15.   )
  16.   (xdge::free)
  17.   p
  18. )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

 楼主| 发表于 2014-9-14 23:55:09 | 显示全部楼层
构造连续曲线,构造这个曲线后就可以使用相关的属性和方法了
  1. (defun c:tt (/ p pts gel gpl)
  2.   (while (setq p (getpoint "\nPoint: "))
  3.     (setq pts (cons p pts))
  4.   )
  5.   (if pts
  6.     (progn
  7.       (setq gel        (mapcar        '(lambda (x y)
  8.                            (xdge::constructor "kLineSeg3d" x y)
  9.                          )
  10.                         pts
  11.                         (cdr pts)
  12.                 );_构造每段
  13.             gpl        (xdge::constructor "kCompositeCrv3d" gel);_构造一个连续曲线,构造前保证首尾相接
  14.       )
  15.       (xdge::entity:make gpl);_验证下是否构造
  16.       (xdge::free)
  17.     )
  18.   )
  19.   (princ)
  20. )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

 楼主| 发表于 2014-9-15 00:01:56 | 显示全部楼层
Ge 方法的 Pline  自相交 判断
  1. (defun c:tt (/ e gpl pcc)
  2.   (if (setq
  3.         e (car (xdrx_entsel "\nSelect Pline: " '((0 . "LWPOLYLINE"))))
  4.       )
  5.     (progn
  6.       (setq gpl        (xdge::constructor e)
  7.             gcc        (xdge::constructor "kCurveCurveInt3d" gpl gpl)
  8.       )
  9.       (princ (xdge::getpropertyvalue gcc "numIntPoints"))
  10.       (xdge::free)
  11.     )
  12.   )
  13.   (princ)
  14. )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 145个

财富等级: 日进斗金

发表于 2014-9-15 00:29:09 | 显示全部楼层
这个库可以改变Lisper的编程思维的。慢慢就都是对象的想法了。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

 楼主| 发表于 2014-9-15 00:31:19 | 显示全部楼层
查找 Pline  自相交点
  1. (defun c:tt (/ e gpl gcc num i pts)
  2.   (if (setq
  3.         e (car (xdrx_entsel "\nSelect Pline: " '((0 . "LWPOLYLINE"))))
  4.       )
  5.     (progn
  6.       (setq gpl        (xdge::constructor e);_构造 kCompositeCrv3d
  7.             gcc        (xdge::constructor "kCurveCurveInt3d" gpl gpl);_构造俩个 Curve3d 相交模型
  8.             num        (xdge::getpropertyvalue gcc "numIntPoints");_交点 数量
  9.       )
  10.       (if (> num 0);_如果有交点
  11.         (progn
  12.           (setq i 0)
  13.           (repeat num
  14.             (setq pts (cons (xdge::getpropertyvalue gcc "intPoint" i)
  15.                             pts
  16.                       )
  17.                   i   (1+ i)
  18.             )
  19.           )
  20.           (mapcar
  21.             '(lambda (x)
  22.                (xdrx_circle_make x 10.)
  23.              )
  24.             pts
  25.           )
  26.         )
  27.       )
  28.       (xdge::free)
  29.     )
  30.   )
  31.   (princ)
  32. )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

 楼主| 发表于 2014-9-15 00:39:46 | 显示全部楼层
XDSoft 发表于 2014-9-15 00:29
这个库可以改变Lisper的编程思维的。慢慢就都是对象的想法了。

Autolisp 也可以说是面向对象啊,看 CLisp 发展历程,对象概念在 CLisp 之处就有这个影子,只不过被别人发扬了
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

 楼主| 发表于 2014-9-15 01:00:47 来自手机 | 显示全部楼层
XDSoft 发表于 2014-9-15 00:29
这个库可以改变Lisper的编程思维的。慢慢就都是对象的想法了。

AcGeIntertal怎么构造?试了几个方法均nil

点评

(XdGe::Constructor "AcGeInterval" .......................) 因为AcGeInterval 不是 AcGeEntity 的子类,所以没那些 AcGe::EntityId , 如 kCurve3d.... 另外一个不是用 k开头构造的是 AcGeKnotVector,方法同  详情 回复 发表于 2014-9-15 01:17
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 145个

财富等级: 日进斗金

发表于 2014-9-15 01:17:20 | 显示全部楼层
st788796 发表于 2014-9-15 01:00
AcGeIntertal怎么构造?试了几个方法均nil

(XdGe::Constructor "AcGeInterval" .......................)

因为AcGeInterval 不是 AcGeEntity 的子类,所以没那些 AcGe::EntityId , 如 kCurve3d....

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

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

 楼主| 发表于 2014-9-15 01:26:36 来自手机 | 显示全部楼层
XDSoft 发表于 2014-9-15 01:17
(XdGe::Constructor "AcGeInterval" .......................)

因为AcGeInterval 不是 AcGeEntity 的 ...

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

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

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

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

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

使用道具 举报

已领礼包: 488个

财富等级: 日进斗金

发表于 2017-1-4 23:31:33 | 显示全部楼层
曲线自相交,十几年前论坛就讨论过。
就是vla方法,自己和自己求交点
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

发表于 2017-1-4 23:45:18 | 显示全部楼层

使用GE库,是透过VLA,直接操作底层的几何库,VLA关于曲线的函数最终也是要用几何库的函数运算的。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-12-4 17:06 , Processed in 0.497584 second(s), 58 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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