找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 3464|回复: 21

[教学] XDGE几何库应用(一)---曲线转SPLINE

[复制链接]

已领礼包: 145个

财富等级: 日进斗金

发表于 2014-9-14 14:09:40 | 显示全部楼层 |阅读模式

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

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

×
AcDb数据库曲线实体都是由几何库运算后创建的,下面演示如何把线、圆(弧)、椭圆(弧)转换成SPLINE

用到的XDGE几何库函数有 XdGe::Constructor ,XdGe::Entity:Make

  1. (defun c:tt ()
  2.   (if (setq e (car (xdrx_entsel "\n拾取圆、椭圆、LINE<退出>:" '((0 . "LINE,ELLIPSE,ARC,CIRCLE")))))
  3.     (progn
  4.       (setq ge (XdGe::Constructor e))
  5.       (if (and
  6.             (setq gPl (XdGe::Constructor "kNURBCurve3d" ge))
  7.             (setq spl (XdGe::Entity:Make gpL))
  8.           )
  9.         (progn
  10.            (xdrx_entity_setPropertiesFrom spl e) ;;保持原实体颜色、线型、图层等信息
  11.            (xdrx_object_swapId spl e)  ;;对象ID同时转换,保证新实体名同原来。
  12.            (xdrx_entity_delete spl)
  13.            (princ "\n成功转换成SPLINE.")
  14.         )
  15.       )
  16.     )
  17.   )
  18.   (princ)
  19. )




本帖被以下淘专辑推荐:

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

已领礼包: 1268个

财富等级: 财源广进

发表于 2014-9-14 15:04:38 | 显示全部楼层
这里面是不是少了一个操作符 “=” 函数,判断两个 Ge  是否 same

点评

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

使用道具 举报

已领礼包: 145个

财富等级: 日进斗金

 楼主| 发表于 2014-9-14 15:20:48 | 显示全部楼层
st788796 发表于 2014-9-14 15:04
这里面是不是少了一个操作符 “=” 函数,判断两个 Ge  是否 same

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

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

发表于 2014-9-14 15:32:59 来自手机 | 显示全部楼层
XDSoft 发表于 2014-9-14 15:20
两个不可能相等的

手册上的 = 是什么意思?
画一条线,原地复制,用这两条线造 Ge ,出来的不等?

点评

上面的程序转的两次GE实体,一次是 kLineSeg3d 等, 最后一个是kNurbCurve3d, 是不可能相等的。 每次用 Constructor 创建的都是一个GE对象的实例,他们可鞥外观是一样的,但是是不同的对象。  详情 回复 发表于 2014-9-14 15:51
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 145个

财富等级: 日进斗金

 楼主| 发表于 2014-9-14 15:51:15 | 显示全部楼层
st788796 发表于 2014-9-14 15:32
手册上的 = 是什么意思?
画一条线,原地复制,用这两条线造 Ge ,出来的不等?

上面的程序转的两次GE实体,一次是 kLineSeg3d 等, 最后一个是kNurbCurve3d, 是不可能相等的。

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

使用道具 举报

已领礼包: 145个

财富等级: 日进斗金

 楼主| 发表于 2014-9-14 15:52:43 | 显示全部楼层
AcGeEntity3d::isEqualTo Function Adesk::Boolean

isEqualTo(

const AcGeEntity3d& ent,

const AcGeTol& tol = AcGeContext::gTol) const;

ent Input any AcGeEntity3d object
tol Input tolerance to be used when determining equality

Determines if two entities are equal to each other.

Two entities are considered to be equal only if they are of the same type and they represent the same 3D point set. For instance, if the two entities are of types AcGeCircArc3d and AcGeEllipArc3d then they are not considered equal even if the ellipse is completely coincident with the circle.

Also, two curves are not considered equal unless they have the same parameterization. For instance, two infinite coincident lines are not considered equal if they have different scaling in their parameterization.
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

发表于 2014-9-14 15:59:46 来自手机 | 显示全部楼层
XDSoft 发表于 2014-9-14 15:52
AcGeEntity3d::isEqualTo Function Adesk::Boolean

isEqualTo(

我说意思就是 Ge 实体有判断相等函数,api 也应该有一个

点评

有啊,除了EDIT FUNCTION,所有属性都在 xdge::getpropertyvalue 里面 : Copy Functions: ├───copy Equality Checking Functions: ├───isEqualTo Miscellaneous Fun  详情 回复 发表于 2014-9-14 16:08
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 145个

财富等级: 日进斗金

 楼主| 发表于 2014-9-14 16:08:05 | 显示全部楼层
st788796 发表于 2014-9-14 15:59
我说意思就是 Ge 实体有判断相等函数,api 也应该有一个

有啊,除了EDIT FUNCTION,所有属性都在 xdge::getpropertyvalue 里面

<kEntity3d>:

   Copy Functions:
        ├───copy

   Equality Checking Functions:
        ├───isEqualTo


   Miscellaneous Functions:
        ├───newEntity2d
        ├───newEntity3d

   Point Containment Functions:
        ├───isOn

   Transformation Functions:
        ├───mirror
        ├───rotateBy
        ├───scaleBy
        ├───transformBy
        ├───translateBy

   Type Identification Functions:
        ├───isKindOf
        ├───type


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

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

发表于 2014-9-14 16:08:55 来自手机 | 显示全部楼层
XDSoft 发表于 2014-9-14 16:06
有啊,除了EDIT FUNCTION,所有属性都在 xdge::getpropertyvalue 里面

:

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

使用道具 举报

已领礼包: 145个

财富等级: 日进斗金

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

使用道具 举报

已领礼包: 2476个

财富等级: 金玉满堂

发表于 2014-9-15 11:24:31 | 显示全部楼层
椭圆转不了哟....32位 2012

点评

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

使用道具 举报

已领礼包: 145个

财富等级: 日进斗金

 楼主| 发表于 2014-9-15 16:43:38 | 显示全部楼层
q3_2006 发表于 2014-9-15 11:24
椭圆转不了哟....32位 2012

已修正,请重新下载API

点评

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

使用道具 举报

已领礼包: 344个

财富等级: 日进斗金

发表于 2014-9-16 10:06:02 | 显示全部楼层
XDSoft 发表于 2014-9-15 16:43
已修正,请重新下载API

椭圆弧的转换是错误的!

点评

牢固,把你遇到错误的, 截取个图贴上来,看看。  详情 回复 发表于 2014-9-16 13:36
不是getGeCruve的事,是测试 ARX NURB3D的构造函数,给椭圆几何实体的时候,创建出来的是错误的(也可能有特殊的处理,在研究中),现在XDGE对SPLINE几何从椭圆的构造是用 DB实体 的getSpline方法间接做的,发现有  详情 回复 发表于 2014-9-16 13:13
那上个帖子的 kEllipArc3d Interval 也不对了  详情 回复 发表于 2014-9-16 10:24
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 859个

财富等级: 财运亨通

发表于 2014-9-16 10:24:53 来自手机 | 显示全部楼层
本帖最后由 csharp 于 2014-9-16 10:40 编辑
牢固 发表于 2014-9-16 10:06
椭圆弧的转换是错误的!


那上个帖子的 kEllipArc3d Interval 也不对了
高版本下用桌子提供的getGeCurve就不会错了,低版本用自己写的
GetGeCurve 高版本Net中有,ARX有没有?

点评

不是getGeCruve的事,是测试 ARX NURB3D的构造函数,给椭圆几何实体的时候,创建出来的是错误的(也可能有特殊的处理,在研究中),现在XDGE对SPLINE几何从椭圆的构造是用 DB实体 的getSpline方法间接做的,发现有  详情 回复 发表于 2014-9-16 13:12
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 145个

财富等级: 日进斗金

 楼主| 发表于 2014-9-16 13:12:01 | 显示全部楼层
csharp 发表于 2014-9-16 10:24
那上个帖子的 kEllipArc3d Interval 也不对了
高版本下用桌子提供的getGeCurve就不会错了,低版本用自 ...

不是getGeCruve的事,是测试 ARX NURB3D的构造函数,给椭圆几何实体的时候,创建出来的是错误的(也可能有特殊的处理,在研究中),现在XDGE对SPLINE几何从椭圆的构造是用  DB实体 的getSpline方法间接做的,发现有些误差。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-25 17:19 , Processed in 0.237633 second(s), 59 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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