找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1746|回复: 12

[API建议] 完善 Ellipse 类 Method

[复制链接]

已领礼包: 1268个

财富等级: 财源广进

发表于 2013-11-14 23:06:43 | 显示全部楼层 |阅读模式

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

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

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

已领礼包: 145个

财富等级: 日进斗金

发表于 2013-11-14 23:17:48 | 显示全部楼层
基本全了啊,还差什么?
命令: (xdrx_getpropertyvalue (entlast))

Class AcDbEllipse:

    ├─Center
    ├─EndAngle
    ├─MajorAxis
    ├─MinorAxis
    ├─Normal
    ├─RadiusRatio
    ├─StartAngle



命令: (xdrx_setpropertyvalue (entlast))

Class AcDbEllipse:

  ├─Center(Point)
  ├─EndAngle(Real)
  ├─Normal(Point)
  ├─RadiusRatio(Real)
  ├─StartAngle(Real)


点评

很好奇xdrx_getpropertyvalue 和xdrx_setpropertyvalue 这两个函数arx代码是如何实现的?不会是逐个实体,逐个属性一一对应写出来的吧,要是这样得多大的代码量啊!老大太牛了!  详情 回复 发表于 2013-11-15 22:14
差好多呢 http://bbs.xdcad.net/thread-671624-1-1.html 这个帖子的一些操作,本来想用 API ,没有找到,暂时用VLA  详情 回复 发表于 2013-11-14 23:34
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

 楼主| 发表于 2013-11-14 23:34:39 | 显示全部楼层
XDSoft 发表于 2013-11-14 23:17
基本全了啊,还差什么?
命令: (xdrx_getpropertyvalue (entlast))

差好多呢

http://bbs.xdcad.net/thread-671624-1-1.html

这个帖子的一些操作,本来想用 API ,没有找到,暂时用VLA

点评

[attachimg]6577[/attachimg] 这个图是ARX带的,API基本都有了。其他的如果VLA有都是根据这些能算出来的。  详情 回复 发表于 2013-11-14 23:47
你那几个VLA的,上面都有啊。  详情 回复 发表于 2013-11-14 23:43
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 145个

财富等级: 日进斗金

发表于 2013-11-14 23:43:09 | 显示全部楼层

你那几个VLA的,上面都有啊。

(xdrx_getpropertyvalue ent "MajorAxis")
(xdrx_getpropertyvalue ent "MinorAxis")


(xdrx_setproepertyvalue ent "radiusratio"

点评

Getpropertyvalue 选择对象: Class AcDbEllipse: ├─Center ├─EndAngle ├─MajorAxis ├─MinorAxis ├─Normal ├─RadiusRatio ├─StartAngle Setpropertyvalue  详情 回复 发表于 2013-11-14 23:49
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 145个

财富等级: 日进斗金

发表于 2013-11-14 23:47:05 | 显示全部楼层
st788796 发表于 2013-11-14 23:34
差好多呢

http://bbs.xdcad.net/thread-671624-1-1.html

QQ截图20131114234711.png

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

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

 楼主| 发表于 2013-11-14 23:49:56 | 显示全部楼层
本帖最后由 st788796 于 2013-11-14 23:53 编辑
XDSoft 发表于 2013-11-14 23:43
你那几个VLA的,上面都有啊。

(xdrx_getpropertyvalue ent "MajorAxis")

Getpropertyvalue
选择对象:
Class AcDbEllipse:
    ├─Center
    ├─EndAngle
    ├─MajorAxis
    ├─MinorAxis
    ├─Normal
    ├─RadiusRatio
    ├─StartAngle

Setpropertyvalue

命令: (xdrx_setpropertyvalue (car (Entsel)))
选择对象:
Class AcDbEllipse:
  ├─Center(Point)
  ├─EndAngle(Real)
  ├─Normal(Point)
  ├─RadiusRatio(Real)
  ├─StartAngle(Real)

majorRadius
This is majorRadius, a member of class AcDbEllipse.
minorRadius
This is minorRadius, a member of class AcDbEllipse.
isNull
Returns Adesk::kTrue
if this Ellipse has no gelib object within itself.

majorAxis
Returns the major axis vector (in WCS coordinates) of the ellipse.
The major axis vector is the vector from the Ellipse's center point to its start point. The major axis vector's magnitude represents 1/2 the length of the major axis.

set
This function sets the properties of the ellipse to the values specified in the arguments.
center, unitNormal, and majorAxis are in WCS coordinates. startAngle and endAngle are in radians, in the range -pi to pi. Positive angles are counter-clockwise when looking down the normal vector (that is, right-hand rule). A closed Ellipse will have a startAngle of 0 and an endAngle of 2pi.
radiusRatio must be in the range 1E-6 to 1.0.
The dot product of normal with itself and majorAxis with itself must be greater than 1E-12.
majorAxis must perpendicular to normal within 1E-6.
The difference between...
minorAxis
Returns the minor axis vector (in WCS coordinates) of the ellipse.
The minor axis vector is perpendicular to the major axis vector. Its magnitude represents half the length of the minor axis.

setCenter
Sets center (in WCS coordinates) to be the center point of the ellipse.
Returns Acad::eOk if successful, otherwise Acad::eGeneralModelingFailure is returned.

normal
Returns the unit normal vector (in WCS coordinates) of the ellipse.
The normal vector specifies the plane that contains the ellipse.

setMajorRadius
This is setMajorRadius, a member of class AcDbEllipse.
paramAtAngle
Returns the first period parameter value at angle (in radians). The parameter value is in the range 0 to 2pi.
The ellipse's majorAxis vector is the zero angle for angle. Positive angles are counter-clockwise when looking down the ellipse's normal vector (that is, right-hand rule).

setMinorRadius
This is setMinorRadius, a member of class AcDbEllipse.
radiusRatio
Returns the ratio of the ellipse's major radius to its minor radius. The returned value will be in the range 1e-6 to 1.0.

subGetClassID
Override this virtual function in a AcDbEntity-derived class to provide your custom implementation for  
setEndAngle
Sets endAngle to be the end angle of the ellipse.
Returns Acad::eOk if successful.
If the Ellipse has no gelib object (that is, AcDbEllipse::isNull() returns Adesk::kTrue), then Acad::eDegenerateGeometry is returned.

setEndParam
Sets endParam to be the new end parameter of the ellipse. If endParam is less than the current start parameter, then it is incremented in steps of 2pi until it is larger than the current start parameter.
Returns Acad::eOk if successful.
If the Ellipse has no gelib object (that is, AcDbEllipse::isNull() returns Adesk::kTrue), then Acad::eDegenerateGeometry is returned.

setRadiusRatio
Sets ratio to be the new radius ratio for the ellipse. ratio must be a value between 1e-6 and 1.0.
Returns Acad::eOk if successful.
If the Ellipse has no gelib object (that is, AcDbEllipse::isNull() returns Adesk::kTrue), then Acad::eDegenerateGeometry is returned.

setStartAngle
Sets startAngle to be the new start angle for the ellipse.
Returns Acad::eOk if successful.
If the Ellipse has no gelib object (that is, AcDbEllipse::isNull() returns Adesk::kTrue), then Acad::eDegenerateGeometry is returned.

setStartParam
Sets startParam to be the new start parameter of the ellipse. If startParam is larger than the current end parameter, then it is decremented in steps of 2pi until it is less than the current end parameter.
Returns Acad::eOk if successful, otherwise Acad::eGeneralModelingFailure is returned.

startAngle

点评

(setq mVec (xdrx_getpropertyvalue ent "MajorAxis") major-radius (* 2 (xdrx_vector_length mVec)) )  详情 回复 发表于 2013-11-15 00:26
你这个是高版本CAD的吧,低版本没这么多,低版本这些也足够做了。 高版本那些设置半径啥的,都可以通过 setRadiusRatio 来实现 majorAxis 是 (mapcar '- cen startpt) 是长轴半径的一半 minorAxis 是短轴的一半  详情 回复 发表于 2013-11-14 23:55
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 145个

财富等级: 日进斗金

发表于 2013-11-14 23:55:27 | 显示全部楼层
st788796 发表于 2013-11-14 23:49
Getpropertyvalue
选择对象:
Class AcDbEllipse:

你这个是高版本CAD的吧,低版本没这么多,低版本这些也足够做了。
高版本那些设置半径啥的,都可以通过 setRadiusRatio 来实现

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

使用道具 举报

已领礼包: 145个

财富等级: 日进斗金

发表于 2013-11-15 00:26:07 | 显示全部楼层
st788796 发表于 2013-11-14 23:49
Getpropertyvalue
选择对象:
Class AcDbEllipse:

(setq mVec (xdrx_getpropertyvalue ent "MajorAxis")
         major-radius (xdrx_vector_length mVec)
)

点评

可以设置 RadiusRatio , 但这个只能改变其长宽比,要把 Ellipse 扩大或者缩小,需要修改 MajorAxis 及 MinorAxis , 这个两个修改了 Ellipse 就等同于原 Ellipse 的平行线了,API 只能改 RadiusRatio ,不能改 MajorA  详情 回复 发表于 2013-11-15 16:58
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

 楼主| 发表于 2013-11-15 16:58:28 | 显示全部楼层
XDSoft 发表于 2013-11-15 00:26
(setq mVec (xdrx_getpropertyvalue ent "MajorAxis")
         major-radius (xdrx_vector_length mVec ...

可以设置 RadiusRatio , 但这个只能改变其长宽比,要把 Ellipse 扩大或者缩小,需要修改 MajorAxis 及 MinorAxis , 这个两个修改了 Ellipse 就等同于原 Ellipse 的平行线了,API 只能改 RadiusRatio ,不能改 MajorAxis 和 MinorAxis

点评

这个落了,等下版本提供,把高版本那几个也一起写到低版本下。  详情 回复 发表于 2013-11-15 17:01
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 145个

财富等级: 日进斗金

发表于 2013-11-15 17:01:19 | 显示全部楼层
st788796 发表于 2013-11-15 16:58
可以设置 RadiusRatio , 但这个只能改变其长宽比,要把 Ellipse 扩大或者缩小,需要修改 MajorAxis 及 Mi ...

这个落了,等下版本提供,把高版本那几个也一起写到低版本下。

点评

这样就可以写两个函数 Ellipse Spline Offset后保持原对象类型, 不会增加节点  详情 回复 发表于 2013-11-15 17:06
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

 楼主| 发表于 2013-11-15 17:06:58 | 显示全部楼层
XDSoft 发表于 2013-11-15 17:01
这个落了,等下版本提供,把高版本那几个也一起写到低版本下。


这样就可以写两个函数 Ellipse Spline Offset后保持原对象类型, 不会增加节点

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

使用道具 举报

已领礼包: 344个

财富等级: 日进斗金

发表于 2013-11-15 22:14:44 来自手机 | 显示全部楼层
XDSoft 发表于 2013-11-14 23:17
基本全了啊,还差什么?
命令: (xdrx_getpropertyvalue (entlast))


很好奇xdrx_getpropertyvalue 和xdrx_setpropertyvalue 这两个函数arx代码是如何实现的?不会是逐个实体,逐个属性一一对应写出来的吧,要是这样得多大的代码量啊!老大太牛了!

点评

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

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

 楼主| 发表于 2013-11-15 22:21:31 | 显示全部楼层
牢固 发表于 2013-11-15 22:14
很好奇xdrx_getpropertyvalue 和xdrx_setpropertyvalue 这两个函数arx代码是如何实现的?不会是逐个实体 ...

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-24 05:48 , Processed in 0.422537 second(s), 55 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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