找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 2457|回复: 24

[ARX函数]:缓和曲线实体

[复制链接]
发表于 2003-10-28 14:11:19 | 显示全部楼层 |阅读模式

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

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

×
如果创建一个缓和曲线自定义实体,那么在以后的ARX程序开发过程中,将会节约大量的时间。
下面是本人的看法,望各们提出意见
class SPIRAL: public AcDbEntity
{
public:
        void GetItem(double &AA,double &RR,AcGePoint3d &ssPt0,double &fwj,double &startl,int &lr);//查询缓和曲线要素
        double getFwj(int i);//0-base查询某点方位角
        AcGePoint3d getPoint(int i);//查询一点
        int logicalLength();//查询缓和曲线上关键点个数
        void TrimLine(AcDbLine*);//用于修剪直线
        void TrimARC(AcDbArc*);//用于修剪圆弧
        OBJARRAY pObjAy;//需要修剪的实体
        void worldDraw(int mode=0);
        void Revise_EndPoint(AcGePoint3d ENDPOINT);//修正最后一点
        void AddReviseItem(AcDbObject*);//需要修正的实体
        void Revise(AcDbObject*);
        void ReviseLine(AcDbLine*);
        void ReviseCircle(AcDbCircle*);
        ACRX_DECLARE_MEMBERS(SPIRAL);
        SPIRAL();
        SPIRAL(AcGePoint3d sPt,AcGePoint3d ePt,double sa,double ea,double R1,double R2,double L,int ZRflag);
        SPIRAL(double AA,double RR,AcGePoint3d ssPt0,double fwj,double sstartl,int lr);
        virtual ~SPIRAL();
        virtual Adesk::Boolean worldDraw(AcGiWorldDraw* mode);
        virtual Acad::ErrorStatus dwgInFields(AcDbDwgFiler*);
    virtual Acad::ErrorStatus dwgOutFields(AcDbDwgFiler*) const;
    virtual Acad::ErrorStatus dxfInFields(AcDbDxfFiler*);
    virtual Acad::ErrorStatus dxfOutFields(AcDbDxfFiler*) const;

    virtual Acad::ErrorStatus        intersectWith(
        const AcDbEntity*   ent,
        AcDb::Intersect     intType,
        AcGePoint3dArray&      points,
        int                 thisGsMarker  = 0,
        int                 otherGsMarker = 0)
        const;



    virtual Acad::ErrorStatus        intersectWith(
          const AcDbEntity*   ent,
          AcDb::Intersect     intType,
          const AcGePlane&    projPlane,
          AcGePoint3dArray&      points,
          int                 thisGsMarker  = 0,
          int                 otherGsMarker = 0)
          const;

        virtual Acad::ErrorStatus   transformBy(const AcGeMatrix3d& xform);
       
private:
        AcDbLine *Line;//缓和曲线半径无穷大处切线 
        AcDbSpline *SPLINE;
        AcGePoint3d sPt0;//直缓点坐标
        double Buchang,startl,endl,R,A;
        void huanhequxian();
        double *pspir;
        double fx0;///缓和曲线半径无穷大处切线处切线方向fwj
        Adesk::Int16 NUM;
        Adesk::Int16 lrRot;//左偏为-1,右偏为+1;
};
SPIRAL.cpp在附件中
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2003-10-28 18:44:23 | 显示全部楼层
不错,建议加入一些计算功能
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

使用道具 举报

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

使用道具 举报

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

使用道具 举报

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

使用道具 举报

 楼主| 发表于 2003-11-7 17:16:30 | 显示全部楼层
展开式用到第四项精度可达0.0001
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2003-11-11 16:42:56 | 显示全部楼层
四项的精度太低,一般公路建议11项以上
最好再增强修改功能
最后感谢你的共享
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2003-11-11 19:25:44 | 显示全部楼层
四项确实比较低,对于转角很大的回旋线,可能无法满足精度要求,建议修改
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2003-11-17 12:41:10 | 显示全部楼层
在这个程序中,展开式用几项是可以设置:SPIRLA_X(A,L);SPIRLA_Y(A,L);由自己可以完成
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2003-11-17 18:52:39 | 显示全部楼层
我有一个曲线的自定义实体,可计算等长和不等长缓和曲线,估计比你这个好,但我们单位不让外传
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2003-11-24 14:21:13 | 显示全部楼层
没必要吧,现在能人多了,只要提出要求,大家肯定能做的出来。
这个缓和曲线实体只是做S型曲线,C,卵,凸,普通型的一个工具,各种模型的求解方法,估计有很多人都做出来了。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2003-11-25 13:26:12 | 显示全部楼层
求X、Y的展开式,自已可扩充后面项数
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2003-11-26 19:44:19 | 显示全部楼层
最初由 wuweifan 发布
[B]我有一个曲线的自定义实体,可计算等长和不等长缓和曲线,估计比你这个好,但我们单位不让外传 [/B]


"估计"?好不好要检验一下才知道。
我的邮箱:darcy_liu@163.com.可以探讨一下相关内容。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2003-11-27 16:25:54 | 显示全部楼层
请问有没有更好的缓和曲线方程?

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-22 03:58 , Processed in 0.467147 second(s), 60 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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