找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 5253|回复: 26

[求助] 图形每个坐标等倍缩小这样子写难道有错吗?怎么就不行呢,求救。。

[复制链接]
发表于 2013-8-19 21:44:17 | 显示全部楼层 |阅读模式

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

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

×
int l1=1;
for(int m=0;m<n;m++)   
{
pPoly->getPointAt(m,pt1[m]);   
pt1[m].x=l1*pt1[m].x;
pt1[m].y=l1*pt1[m].y;
acutPrintf(_T("X%.3fY%.3f\n"),pt1[m].x,pt1[m].y);
l1=l1-0.2;
}
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 40个

财富等级: 招财进宝

发表于 2013-8-20 00:04:28 | 显示全部楼层
实践是检验真理的唯一标准,既然结果不行了,那肯定就是有错了。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 13个

财富等级: 恭喜发财

发表于 2013-8-20 00:43:22 | 显示全部楼层
如果你都对0,0点缩放,这样写结果对,但是不是0,0点呢, 你缩放要有个基点啊。

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

使用道具 举报

已领礼包: 13个

财富等级: 恭喜发财

发表于 2013-8-20 00:44:49 | 显示全部楼层
AcGePoint3d::scaleBy Function AcGePoint3d &

scaleBy(

double scaleFactor,

const AcGePoint3d& wrtPoint = AcGePoint3d::kOrigin);

scaleFactor Input scale factor
wrtPoint Input center of scaling

Returns 3D point that is the result of scaling of this point with respect to the 3D point wrtPoint by scale factor scaleFactor.

不会用AcGe几何库,就相当于不会ARX。

点评

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

使用道具 举报

 楼主| 发表于 2013-8-20 09:39:11 | 显示全部楼层
LoveArx 发表于 2013-8-20 00:44
AcGePoint3d::scaleBy Function AcGePoint3d &

scaleBy(

我就一菜鸟,恳请指教

点评

上面的函数名都已经告诉你了,你要变换AcGePoint3d 点, 去查看帮助里面的,scaleBy,rotateBy等方法。 你想缩放点pt, 就 pt.scaleBy(缩放比例,基点)  详情 回复 发表于 2013-8-20 09:44
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 13个

财富等级: 恭喜发财

发表于 2013-8-20 09:44:58 | 显示全部楼层
yzf_fs 发表于 2013-8-20 09:39
我就一菜鸟,恳请指教

上面的函数名都已经告诉你了,你要变换AcGePoint3d 点, 去查看帮助里面的,scaleBy,rotateBy等方法。

你想缩放点pt, 就 pt.scaleBy(缩放比例,基点)

点评

是这样写吗?好像也不行,出现负数了 double s=1; for(m=0;mgetPointAt(m,pt1[m]); pt1[m].scaleBy(s,AcGePoint2d::kOrigin); acutPrintf(_T("X%.3f,Y%.3f\n"),pt1[m].x,pt1[m].y); s=s-0.2;  详情 回复 发表于 2013-8-20 10:23
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-8-20 10:23:06 | 显示全部楼层
LoveArx 发表于 2013-8-20 09:44
上面的函数名都已经告诉你了,你要变换AcGePoint3d 点, 去查看帮助里面的,scaleBy,rotateBy等方法。

...

是这样写吗?好像也不行,出现负数了
double s=1;
for(m=0;m<n;m++)   
    {
     pPoly->getPointAt(m,pt1[m]);
     pt1[m].scaleBy(s,AcGePoint2d::kOrigin);
      acutPrintf(_T("X%.3f,Y%.3f\n"),pt1[m].x,pt1[m].y);
     s=s-0.2;
}

点评

虽然不懂ARX,但点坐标出现负数很正常啊。另外,提问问题,不要把局部的代码拿上来,也不要试图用你的思维去解释什么,这样容易误导帮你的人,既然你没弄出来,那么你的思维肯定是不对的。 你就正确、客观的把想法,  详情 回复 发表于 2013-8-20 10:34
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

发表于 2013-8-20 10:34:47 | 显示全部楼层
yzf_fs 发表于 2013-8-20 10:23
是这样写吗?好像也不行,出现负数了
double s=1;
for(m=0;mgetPointAt(m,pt1[m]);

虽然不懂ARX,但点坐标出现负数很正常啊。另外,提问问题,不要把局部的代码拿上来,也不要试图用你的思维去解释什么,这样容易误导帮你的人,既然你没弄出来,那么你的思维肯定是不对的。 你就正确、客观的把想法,想要的东西,错误的内容老老实实的还原。等着别人帮你。

这个问题,首先你应该说下,你想做什么,别说只缩放点,为什么要缩放点。

点评

还要怎么获取自定义图形的中心点?  详情 回复 发表于 2013-8-20 10:56
其实我是随便画了一个封闭的polyline图形,然后得到它各点坐标,之后缩小0.8倍,0.6倍,0.4倍,都是以画的图形中心为缩放原点。现在各个坐标我已经得到了,但不知道怎么缩放。  详情 回复 发表于 2013-8-20 10:41
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-8-20 10:41:38 | 显示全部楼层
newer 发表于 2013-8-20 10:34
虽然不懂ARX,但点坐标出现负数很正常啊。另外,提问问题,不要把局部的代码拿上来,也不要试图用你的思 ...

其实我是随便画了一个封闭的polyline图形,然后得到它各点坐标,之后缩小0.8倍,0.6倍,0.4倍,都是以画的图形中心为缩放原点。现在各个坐标我已经得到了,但不知道怎么缩放。
11.jpg
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-8-20 10:56:49 | 显示全部楼层
newer 发表于 2013-8-20 10:34
虽然不懂ARX,但点坐标出现负数很正常啊。另外,提问问题,不要把局部的代码拿上来,也不要试图用你的思 ...

还要怎么获取自定义图形的中心点?

点评

pt1[m].scaleBy(s,AcGePoint2d::kOrigin); 你这是以原点0,0,0缩放的啊,你要给你的矩形的中心点啊。就是你以哪个点为基点缩放,你应该会求吧,你自己画的多边形。  详情 回复 发表于 2013-8-20 11:04
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 13个

财富等级: 恭喜发财

发表于 2013-8-20 11:04:04 | 显示全部楼层
yzf_fs 发表于 2013-8-20 10:56
还要怎么获取自定义图形的中心点?

pt1[m].scaleBy(s,AcGePoint2d::kOrigin);

你这是以原点0,0,0缩放的啊,你要给你的矩形的中心点啊。就是你以哪个点为基点缩放,你应该会求吧,你自己画的多边形。

点评

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

使用道具 举报

 楼主| 发表于 2013-8-20 14:52:58 | 显示全部楼层
LoveArx 发表于 2013-8-20 11:04
pt1[m].scaleBy(s,AcGePoint2d::kOrigin);

你这是以原点0,0,0缩放的啊,你要给你的矩形的中心点啊。就 ...

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

使用道具 举报

已领礼包: 13个

财富等级: 恭喜发财

发表于 2013-8-20 15:53:52 | 显示全部楼层
newer说的好,你不要预设你的观点,既然你画出POLYLINE了,直接用实体变换就是了
构建缩放矩阵,看下 AcGeMatrix3d类下面的 scale相关的方法,设置下变换矩阵,然后用实体的 pEnt->transformBy()缩放多段线。
要弄清楚想缩放点还是缩放实体能达到你的要求。

点评

是缩放实体,不过坐标也要随着缩放,这是我获取图形坐标的代码,应该怎样缩放才行呢??? AcGeMatrix3d xform; xform.scaling(0.5); for(int l=1,m=0;mtransformBy(xform); }  详情 回复 发表于 2013-9-14 11:56
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-9-14 11:56:44 | 显示全部楼层
LoveArx 发表于 2013-8-20 15:53
newer说的好,你不要预设你的观点,既然你画出POLYLINE了,直接用实体变换就是了
构建缩放矩阵,看下 AcGe ...

是缩放实体,不过坐标也要随着缩放,这是我获取图形坐标的代码,应该怎样缩放才行呢???
       
                       AcGeMatrix3d xform;
                        xform.scaling(0.5);       
                        for(int l=1,m=0;m<n;m++,l++)//图形坐标                       
                        {
                                  acutprintf((X%.3f,Y%.3f"),pt3[m].x,pt3[m].y);
                                m_AddCode.AddString(str);
                                if (pPoly->segType(m)==AcDbPolyline::kArc)
                                {                                       
                                        pPoly->getArcSegAt(m,arc);
                                        R=arc.radius();
                                        ptCen=arc.center();
                                        double dStartAngle =arc.startAng();                       
                                        double dEndAngle = arc.endAng();
                                        double dAlfa = Ccalculation::RtoG(dEndAngle - dStartAngle);
                                        pPoly->getBulgeAt(m,gBulge);
                               

                                        if (gBulge<0)
                                                {                                               
                                                         if (dAlfa==180)
                                                        {
                                                                acutprintf((X%.3f,Y%.3fR%.3"),pt3[m].x,pt3[m].y,R);
                                                                                                               
                                                        }
                                                }
                                m=l-1;                                               
                                        }       

                pPoly->transformBy(xform);
                }



点评

你的代码没贴全,m是什么,完整代码贴上来吧,贴个图,你想缩放什么,以什么为基点等等都说清楚。  详情 回复 发表于 2013-9-14 12:49
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

发表于 2013-9-14 12:49:07 | 显示全部楼层
yzf_fs 发表于 2013-9-14 11:56
是缩放实体,不过坐标也要随着缩放,这是我获取图形坐标的代码,应该怎样缩放才行呢???
       
                 ...

你的代码没贴全,m是什么,完整代码贴上来吧,贴个图,你想缩放什么,以什么为基点等等都说清楚。

点评

图形是随便画的,没什么规定,封闭的polyline就行,以图形中心为缩放原点,接着将图形原点平移到世界坐标系的原点,并获得每一个缩放图形平移后在世界坐标系下的坐标。 double L,R,gBulge; AcDbEntit  详情 回复 发表于 2013-9-14 15:43
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-9-24 12:26 , Processed in 0.542810 second(s), 71 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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