- UID
- 4379
- 积分
- 120
- 精华
- 贡献
-
- 威望
-
- 活跃度
-
- D豆
-
- 在线时间
- 小时
- 注册时间
- 2002-4-26
- 最后登录
- 1970-1-1
|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
dadao 说:
问个问题,如何对实体在X、Y、Z方向上分别缩放
XDSoft说:
块?
dadao 说:
单个的实体
XDSoft说:
试试建立个转换矩阵
XDSoft说:
然后pEnt->transFrom(...)
XDSoft说:
比例系数自己填
XDSoft说:
用AcGeMatrix3d: setToScaling(..)是设置的整体比例
dadao 说:
我是这样做的
dadao 说:
AcGeMatrix3d xform;
scale.getMatrix(xform);
pEnt->transformBy(xform);
XDSoft说:
把矩阵对角线X,Y,Z分别手工设置
XDSoft说:
getMatrix是设置整体的比例吧?
dadao 说:
打印出来的矩阵是
3 0 0 0
0 2 0 0
0 0 1 0
0 0 0 1
XDSoft说:
没有效果?
dadao 说:
是呀,没有任何效果
XDSoft说:
那AUTOCAD不支持不同一的比例?
XDSoft说:
是什么实体?
dadao 说:
line,pline和text
XDSoft说:
AcDbLeader, AcDbMLine, AcDbMText, AcDbOle2Frame, AcDbPloyFaceMesh, AcDbPolygonMesh,
AcDbRay, AcDbXline, AcDbFcf, AcDbSolid, AcDbEllipse, AcDbSpline, AcDbImage
XDSoft说:
只有这些实体支持non-uniform scale matrix
dadao 说:
没有别的办法了么?
XDSoft说:
试试这些实体,看看是否有效果?
XDSoft说:
AcDb2dPolyine, AcDb3dPolyine, AcDbDimension and derived classes, AcDbArc, AcDbCircle,
AcDbBlockReference, AcDbMInsert, AcDbFace, AcDbLine, AcDbPloyline, AcDbPoint,
AcDbPoint, AcDbHatch, AcDbShape, AcDbText and derived classes, AcDbTrace, AcDbViewport,
AcDbRegion, AcDb3dSolid, and AcDbBody.
XDSoft说:
这些是限制的,不让的
XDSoft说:
你看看LINE返回是不是Acad::eCannotScaleNonUniformly ?
dadao 说:
对,我一直没检查返回值,不过我想应该是不行了
XDSoft说:
你要做什么?
dadao 说:
就象块一样对一些实体分别在X、Y方向上进行缩放
XDSoft说:
LINE可以变通下
dadao 说:
如何做?
XDSoft说:
先得到AcDbEntity::getGeomExtents
XDSoft说:
然后缩放这个包围盒子
XDSoft说:
然后找顶点,给连上
dadao 说:
这样也行,不过其他的实体就不能这样处理了
XDSoft说:
其他实体可以建立个临时的INSERT啊?
XDSoft说:
缩放完,再给炸开
XDSoft说:
这个要有炸开不同比例块的算法
dadao 说:
呵呵!这样就有些复杂了
XDSoft说:
是啊
dadao 说:
我再想想,不行的话我把这些实体重画一遍
XDSoft说:
对
XDSoft说:
用几何类
XDSoft说:
getMatrix..
XDSoft说:
得到参数后,自己重新见个实体
XDSoft说:
AcGeEntity3d::transformBy
XDSoft说:
你试试这个,能不能做
XDSoft说:
若能,最后在把GE实体转换成DB实体
dadao 说:
DB类型的pline可以转为AcGeEntity3d么
XDSoft说:
可以
XDSoft说:
根据参数构建啊
XDSoft说:
AcGeCurve3d
XDSoft说:
有了这个转换,
XDSoft说:
很多DB实体都可以用几何实体来代替运算
dadao 说:
:)
XDSoft说:
几何实体提供的图形学算法多
XDSoft说:
而且效率高
dadao 说:
我以前用得很少
XDSoft说:
因为没有AcDbEntity类的ID,层,线性等通用属性
XDSoft说:
几何库是ARX最好的地方
XDSoft说:
不用在考虑什么图形算法了,基本上都包括了
XDSoft说:
复杂的组合下就可以了
dadao 说:
好的
XDSoft说:
比如AcDbPolyline-->AcGeCompositeCurve2d后
XDSoft说:
对POLYLINE几何模型操作很方便
XDSoft说:
DB实体没有提供isOn方法
XDSoft说:
用几何AcGeEntity就有
XDSoft说:
还有求曲线间距的
XDSoft说:
DB就没有 |
|