找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 3751|回复: 19

[他山之石] 哪些实体支持非等比缩放矩阵变换?

[复制链接]
发表于 2013-5-25 09:31:52 | 显示全部楼层 |阅读模式

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

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

×
What entities support a non-uniform scale matrix?By Gopinath Taget
AutoCAD has a number of entity types and you might wonder which entities support non-uniform scaling.
As a general rule, the AutoCAD built-in entity classes for entity types that existed before R13 (such as AcDbCircle, AcDbLine, AcDbArc, AcDb2dPolyline, etc.) require that the transformation matrix represent a uniformly scaling orthogonal transformation (if it is not, then Acad::eCannotScaleNonUniformly will be returned). Other AutoCAD built-in classes typically does not have this restrictions.
Also, here is more specific information on commonly used AutoCAD entities:

The following are entities that have a scaling restriction: (以下是有比例限制的实体)

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.

The entities that support non-uniform scale matrix are: (支持非等比矩阵的实体是:)
AcDbLeader, AcDbMLine, AcDbMText, AcDbOle2Frame, AcDbPloyFaceMesh, AcDbPolygonMesh, AcDbRay, AcDbXline, AcDbFcf, AcDbSolid, AcDbEllipse, AcDbSpline, AcDbImage



评分

参与人数 2D豆 +10 贡献 +1 收起 理由
Highflybird + 5 + 1 好主题奖!
牢固 + 5 很给力!经验;技术要点;资料分享奖!

查看全部评分

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

已领礼包: 344个

财富等级: 日进斗金

发表于 2013-5-25 11:04:59 | 显示全部楼层
学习了!我还以为所有实体都不支持不等比矩阵变换呢!原来还是有部分实体是可以的!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 145个

财富等级: 日进斗金

发表于 2013-5-25 13:10:59 | 显示全部楼层
记得前几天做那个XREF拷贝实体的时候就不等比变换过TEXT实体,刚才又测试了下,TEXT可以不等比例变换,怎么回事?


                               
登录/注册后可看大图


[pcode=lisp,true]
(defun c:tt()
  (if (and (setq e (car (entsel "\n拾取实体做非等比变换:<退出>")))
           (or (setq xscl (getreal "\nX比例<1.0>:"))
               (setq xscl 1.0)
           )
           (or (setq yscl (getreal "\nY比例<2.0>:"))
               (setq yscl 2.0)
           )
      )
     (progn
        (setq box (xdrx_entity_box e)
              pj (car box)
              mat ($xdlsp_matrix_setScale pj (list xscl yscl 1.0))
        )
        (xdrx_entity_transformedcopy e mat)
        (xdrx_entity_setcolor (entlast) 1)
     )
  )
  (princ)
)

[/pcode]

点评

我不知道为什么 看到你们都能有一部分实体非等比变换 我所有的物体只要用xdrx_entity_transformedcopy进行非等比变换就会跳出提示 说violate access 非法访问内存地址之类 但是关闭提示以后不会退出 仍旧一切正常 我  详情 回复 发表于 2013-9-3 01:54
我测试Text不可以不等比变换!  发表于 2013-5-25 20:20
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 145个

财富等级: 日进斗金

发表于 2013-5-25 13:15:30 | 显示全部楼层
测试SPLINE,支持


                               
登录/注册后可看大图

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

使用道具 举报

已领礼包: 145个

财富等级: 日进斗金

发表于 2013-5-25 13:20:13 | 显示全部楼层
POLYLINE不支持


                               
登录/注册后可看大图

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

使用道具 举报

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

使用道具 举报

已领礼包: 145个

财富等级: 日进斗金

发表于 2013-5-25 13:23:59 | 显示全部楼层
尺寸 支持


                               
登录/注册后可看大图

点评

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

使用道具 举报

已领礼包: 145个

财富等级: 日进斗金

发表于 2013-5-25 13:25:54 | 显示全部楼层

COPY应该是一样的。COPY能行,矩阵作用能生成实体,说明可以变换。至于MOVE不行,应该是有其他考虑。

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

使用道具 举报

已领礼包: 145个

财富等级: 日进斗金

发表于 2013-5-25 13:30:28 | 显示全部楼层
HATCH 不行


                               
登录/注册后可看大图

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

使用道具 举报

已领礼包: 8121个

财富等级: 富甲天下

发表于 2013-5-25 14:52:45 | 显示全部楼层
这个帖子很有帮助,看来我的那个矩阵论又要增加内容了。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 344个

财富等级: 日进斗金

发表于 2013-5-25 20:22:46 | 显示全部楼层
  1. ;;非等比变换测试
  2. (vla-TransformBy
  3.   (vlax-ename->vla-object (car (entsel "\nSeletc Object:")))
  4.   (vlax-tmatrix
  5.     '((2.0 0.0 0.0 0.0)
  6.       (0.0 3.0 0.0 0.0)
  7.       (0.0 0.0 2.0 0.0)
  8.       (0.0 0.0 0.0 1.0)
  9.      )
  10.   )
  11. )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 33个

财富等级: 招财进宝

发表于 2013-9-3 01:54:37 | 显示全部楼层
XDSoft 发表于 2013-5-25 13:10
记得前几天做那个XREF拷贝实体的时候就不等比变换过TEXT实体,刚才又测试了下,TEXT可以不等比例变换,怎么 ...

我不知道为什么 看到你们都能有一部分实体非等比变换 我所有的物体只要用xdrx_entity_transformedcopy进行非等比变换就会跳出提示 说violate access 非法访问内存地址之类 但是关闭提示以后不会退出 仍旧一切正常 我实在是比较少见这种情况
我的版本是cad2010x64 已经一路用到了0825的api 一直都有这问题 还好非等比一般我都避免 不过有时候也免不了啊
我用的这种矩阵 '((1.0 0.0 0.0 0.0) (0.0 2.0 0.0 -3.0) (0.0 0.0 1.0 0.0) (0.0 0.0 0.0 1.0)) 应该不是矩阵的问题

点评

就用你这个矩阵,变换一个圆,成椭圆了,2008下。 [attachimg]5175[/attachimg]  详情 回复 发表于 2013-9-3 08:19
你可以装个2012的CAD,看看还有问题没。  详情 回复 发表于 2013-9-3 08:09
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 51个

财富等级: 招财进宝

发表于 2013-9-3 08:09:34 | 显示全部楼层
cre8o 发表于 2013-9-3 01:54
我不知道为什么 看到你们都能有一部分实体非等比变换 我所有的物体只要用xdrx_entity_transformedcopy进 ...

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

使用道具 举报

已领礼包: 51个

财富等级: 招财进宝

发表于 2013-9-3 08:19:26 | 显示全部楼层
cre8o 发表于 2013-9-3 01:54
我不知道为什么 看到你们都能有一部分实体非等比变换 我所有的物体只要用xdrx_entity_transformedcopy进 ...

就用你这个矩阵,变换一个圆,成椭圆了,2008下。

QQ截图20130903081838.jpg


  1. 命令: (setq mat '((1.0 0.0 0.0 0.0) (0.0 2.0 0.0 -3.0) (0.0 0.0 1.0 0.0) (0.0 0.0
  2. 0.0 1.0)))
  3. ((1.0 0.0 0.0 0.0) (0.0 2.0 0.0 -3.0) (0.0 0.0 1.0 0.0) (0.0 0.0 0.0 1.0))

  4. 命令: (xdrx_entity_transformedcopy (entlast) mat)
  5. <Selection set: 3>


点评

真奇怪 试了下椭圆 spline 和圆 又可以了..  详情 回复 发表于 2013-9-4 15:35
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 33个

财富等级: 招财进宝

发表于 2013-9-4 15:35:43 | 显示全部楼层
Lispboy 发表于 2013-9-3 08:19
就用你这个矩阵,变换一个圆,成椭圆了,2008下。

真奇怪 试了下椭圆 spline 和圆 又可以了..

点评

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-15 11:55 , Processed in 0.254270 second(s), 68 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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