找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 4727|回复: 36

[图块] 修复问题图块,比例极小图块到正常单位比例图块

[复制链接]

已领礼包: 145个

财富等级: 日进斗金

发表于 2013-9-30 23:08:31 | 显示全部楼层 |阅读模式
  • 插件名称 : 修复问题图块,比例极小图块到正常单位比例图块
  • 作  者 : XDSoft
  • 运行环境 :XDRX API 
  • 发布时间 :2013-10-01
  • 命令名称 :XDTB_BlockAdjust
  • 插件介绍 :修复问题图块,比例极小图块到正常单位比例图块
  • 备  注 : (点击图片可以放大)
(点击图片可以放大)

晓东温馨提示 1、运行环境为 晓东工具箱XDRX API 的插件,请下载最新版本的 晓东工具箱XDRX API开发环境 一键安装
2、在ACAD中如何加载插件,请看 论坛插件使用方法
3、如果您有要求需要定制插件,请到 编程申请 论坛发帖求助

插件详细内容

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

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

×
问题提出:

在工作中,有时候遇到一些图块,我们用程序处理时候会发生错误,原因主要是制作图块时候的实体坐标非常大,或者非常小,还有插入比例非常小,比如做个很大的块,然后用0.0001的比例插入,这时候ACAD图形数据库对它的操作会发生错误,怎么解决这类问题呢?

解决思路:

1、比例调整:

我们动态的在图中对这里块进行调整,把他们的插入比例设置成单位比例(X,Y,Z其中一个为1.0),对于插入比例很小的图块,我们设置比例为单位比例后,图块会变大,那么就需要我们在块定义中,把块容器内的实体缩小相应的倍数。

2、插入点调整

    如果制作图块的时候,插入点坐标值很大,比如大于1e7次方以上,那么很多时候会出现错误,那么我们动态的在图中把这类块的插入点移动到0,0,0,插入点变了,图中的引用INSERT实体位置肯定要跟着变化,那么就需要我们把所有的INSERT实体的插入点按照相反的位移移动回来。

经过上面两步调整,图块就变成插入比例为单位比例,插入点在坐标原点的块了,这样的块是非常“健康”的。

完整代码如下:



  1. ;|
  2. 对比例小于1的INSERT调整到X,Y,Z比例最小为1
  3. |;
  4. (defun c:XDTB_BlockAdjust ( / blk blkent blkname box cen e ents mat0 mat1 mat2 mat4 position position1 scl scl-l v x)
  5.   (if (and
  6.         (setq e (car (xdrx_entsel "\n拾取图块<退出>:" '((0 . "INSERT")))))
  7.         (setq scl-l (xdrx_getpropertyvalue e "scalefactors")
  8.               scl (apply
  9.                     'min
  10.                     scl-l
  11.                   )
  12.         )
  13.         (< scl 1.0)
  14.       )
  15.     (progn
  16.       (setq box (XD::Entity:BoxAtEcs e e)
  17.             box (XD::Geom:Box->9PT box)
  18.             position (nth 4 box)
  19.             blk (xdrx_getpropertyvalue e "BlockTableRecord")
  20.             blkname (car blk)
  21.             blkent (cadr blk)
  22.             scl-l (mapcar
  23.                     '(lambda (x)
  24.                        (* x (/ 1 scl))
  25.                      )
  26.                     scl-l
  27.                   )
  28.             mat0 (xdrx_matrix_identity 3)
  29.             mat1 (xdrx_matrix_setscale mat0 scl '(0 0 0))
  30.             ents (xdrx_getpropertyvalue blkent "Entities")
  31.             box (xdrx_entity_box ents)
  32.             box (XD::Geom:Box->9PT box)
  33.             cen (nth 4 box)
  34.             v (mapcar
  35.                 '-
  36.                 '(0 0 0)
  37.                 cen
  38.               )
  39.             mat2 (xdrx_matrix_settranslation mat0 v)
  40.       )
  41.       (princ "lxd")
  42.       (xdrx_entity_transform ents (xdrx_matrix_product mat1 mat2))
  43.       (xdrx_setpropertyvalue blkent "Origin" '(0 0 0))
  44.       (xdrx_block_update e)
  45.       (setq position1 (xdrx_getpropertyvalue e "Position")
  46.             v (mapcar
  47.                 '-
  48.                 position
  49.                 position1
  50.               )
  51.             mat4 (xdrx_matrix_settranslation mat0 v)
  52.       )
  53.       (setq ents (xdrx_getpropertyvalue blkent "BlockReferenceEntities"))
  54.       (mapcar
  55.         '(lambda (x)
  56.            (xdrx_entity_transform x mat4)
  57.            (xdrx_setpropertyvalue x "scalefactors" scl-l)
  58.          )
  59.         ents
  60.       )
  61.       (prompt "\n图块调整比例成功.")
  62.     )
  63.     (progn
  64.       (if scl
  65.         (prompt "\n拾取的图块比例不小于1,不需要调整.")
  66.       )
  67.     )
  68.   )
  69.   (princ)
  70. )



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

使用道具 举报

已领礼包: 8611个

财富等级: 富甲天下

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

使用道具 举报

已领礼包: 2476个

财富等级: 金玉满堂

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

使用道具 举报

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

使用道具 举报

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

使用道具 举报

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

使用道具 举报

发表于 2014-7-26 16:36:03 | 显示全部楼层
看看,学习学习。
- 本文出自晓东CAD家园-论坛,原文地址:http://bbs.xdcad.net/thread-670850-1-1.html
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

使用道具 举报

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

使用道具 举报

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

使用道具 举报

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

使用道具 举报

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

使用道具 举报

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

使用道具 举报

已领礼包: 8个

财富等级: 恭喜发财

发表于 2017-3-17 11:03:16 | 显示全部楼层
修复问题图块,比例极小图块到正常单位比例图块
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-19 07:09 , Processed in 0.487207 second(s), 64 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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