找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 742|回复: 5

[求助]:一个简单问题!!关于箭头的程序。。

[复制链接]
发表于 2004-6-10 15:30:22 | 显示全部楼层 |阅读模式

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

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

×
本人绘制出了平面中给直线加箭头的一个简单程序,现在给空间直线加个箭头。不知道该怎么做!!以下是平面箭头程序。。。

double slopy , cosy , siny;
          double Par=20,radius=15;//length of Arrow (>)

          pointcenter.x=(point[1].x+point[0].x)/2.00;
          pointcenter.y=(point[1].y+point[0].y)/2.00;
          pointcenter.z=0.00;
    //Par=(sqrt((pointcenter.x-point[0].x)*(pointcenter.x-point[0].x)+(pointcenter.y-point[0].y)*(pointcenter.y-point[0].y)))/16;
          slopy = atan2( ( point[0].y-pointcenter.y   ),( point[0].x - pointcenter.x  ) );
          cosy = cos( slopy );
          siny = sin( slopy );

                point1.x=pointcenter.x + int( Par * cosy - ( Par / 2.0 * siny ) );
                point1.y=pointcenter.y + int( Par * siny + ( Par / 2.0 * cosy ) );
                point1.z=0.00;

                point2.x=pointcenter.x + int( Par * cosy + Par / 2.0 * siny );
                point2.y=pointcenter.y - int( Par / 2.0 * cosy - Par * siny );
                point2.z=0.00;

                point3.x=point[0].x-radius*cosy;
                point3.y=point[0].y-radius*siny;
                point3.z=0.00;

                point4.x=point[1].x+radius*cosy;
                point4.y=point[1].y+radius*siny;
                point4.z=0.00;
AcDbLine *Line= new AcDbLine(point3,point4);//画线
            AcDbObjectId  id;
            postToDatabase(Line,id);

                AcDbLine *Line1= new AcDbLine(pointcenter,point1);
                AcDbObjectId  id1;
                postToDatabase(Line1,id1);

                AcDbLine *Line2 = new AcDbLine(pointcenter,point2);
                AcDbObjectId  id2;
                postToDatabase(Line2,id2);

                AcDbCircle *Cire = new AcDbCircle(point[1],normal,radius);
                AcDbObjectId circleId;
                postToDatabase(Cire,circleId);
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2004-6-10 19:13:31 | 显示全部楼层
箭头可以用AcDbPolyline实现,使用函数
Acad::ErrorStatus

addVertexAt(

unsigned int index,

const AcGePoint2d& pt,

double bulge = 0.,

double startWidth = -1.,

double endWidth = -1);

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

使用道具 举报

发表于 2004-6-10 19:46:10 | 显示全部楼层
对,我同意上述说法,我就是这么弄的,何必弄得那么复杂啊,就是用PL线就解决了
简洁又快
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2006-6-28 14:04:31 | 显示全部楼层
具体怎么做呀,得按不同的方向来做的呀,2楼和3楼说得简单,顶点怎么确定呀!?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

使用道具 举报

发表于 2008-7-13 09:23:47 | 显示全部楼层
最初由 andyfayong 发布
[B]对,我同意上述说法,我就是这么弄的,何必弄得那么复杂啊,就是用PL线就解决了
简洁又快 [/B]

binbin同志说的很有道理。
顶点可以取直线延伸线的一点。
你刚入门,可以用现有直线构造一XLine,始点和直线的一样。
这样你可以用长度求XLine上任一点作顶点。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-9-24 06:25 , Processed in 0.378447 second(s), 41 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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