找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 3125|回复: 18

[矩形] 图像矩形动态裁剪

[复制链接]

已领礼包: 1268个

财富等级: 财源广进

发表于 2014-11-23 18:52:09 | 显示全部楼层 |阅读模式
  • 插件名称 : 矩形裁剪
  • 作  者 : st788796
  • 运行环境 :XDRX API 
  • 发布时间 :2014-11-23
  • 命令名称 :c:XDTB_ImageRectangClip
  • 插件介绍 :图像矩形动态裁剪
  • 备  注 : (点击图片可以放大)
(点击图片可以放大)

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

插件详细内容

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

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

×
  1. (defun c:XDTB_ImageRectangClip (/           olderr     myerr
  2.                                 _CornerToBoundBlock   e
  3.                                 pts           ln              p1
  4.                                 p2           oBoundary  cBoundary
  5.                                 bpl           vec              pvec
  6.                                 oBoundBlock              lst
  7.                                )
  8.   (defun myerr (msg)
  9.     (princ "\n*cancel*")
  10.     (xdrx_pointmonitor)
  11.     (if        cBoundary
  12.       (xdrx_setpropertyvalue e "ClipBoundary" cBoundary)
  13.     )
  14.     (setq *error* olderr)
  15.     (princ)
  16.   )
  17.   (defun _CornerToBoundBlock (p1 p2 vx vy /)
  18.     (list p1
  19.           (inters p1 (mapcar '+ p1 vy) p2 (mapcar '+ p2 vx) nil)
  20.           p2
  21.           (inters p1 (mapcar '+ p1 vx) p2 (mapcar '+ p2 vy) nil)
  22.     )
  23.   )
  24.   (defun callback (dynpt / box ptl cBox)
  25.     (redraw)
  26.     (setq box (xd::pnts:ucs2wcs (XD::DOC:GetView4Pnt))
  27.           ptl (xdrx_curve_getinters pts (xd::pnts:close box) 1)
  28.     )
  29.     (apply 'xdrx_grdraw (cons 1 (cons 1 ptl)))
  30.     (apply 'xdrx_grdraw (cons 1 (cons 1 oBoundary)))
  31.     (setq cBox (_CornerToBoundBlock (car pts) dynpt vec pvec))
  32.     (if
  33.       (apply 'and
  34.              (mapcar '(lambda (x)
  35.                         (> (apply 'xdrx_point_getRelationAtClosedCurve
  36.                                   (cons x oBoundary)
  37.                            )
  38.                            1
  39.                         )
  40.                       )
  41.                      cbox
  42.              )
  43.       )
  44.        (xdrx_setpropertyvalue e "ClipBoundary" cBox)
  45.     )
  46.   )
  47.   (if (and (setq e (car (xdrx_entsel "\n选择图像: " '((0 . "IMAGE")))))
  48.            (if (xdrx_getpropertyvalue e "IsClipped")
  49.              (xdrx_setpropertyvalue e "removeClipBoundary" t)
  50.              t
  51.            )
  52.            (setq oBoundary (xdrx_image_boundary e))
  53.            (setq cBoundary (xdrx_getpropertyvalue e "ClipBoundary"))
  54.            (if (and (setq p1 (getpoint "\n基准点: "))
  55.                     (setq p2 (getpoint p1 "\n方向: "))
  56.                )
  57.              (setq pts (list (trans p1 1 0) (trans p2 1 0)))
  58.            )
  59.       )
  60.     (progn
  61.       (if (< (apply 'xdrx_point_getRelationAtClosedCurve
  62.                     (cons (car pts) oBoundary)
  63.              )
  64.              2
  65.           )
  66.         (progn
  67.           (setq lst (xdrx_curve_getinters pts oBoundary 1))
  68.           (if (< (distance (car pts) (car lst))
  69.                  (distance (car pts) (cadr lst))
  70.               )
  71.             (setq pts (cons (car lst) (cdr pts)))
  72.             (setq pts (cons (cadr lst) (cdr pst)))
  73.           )
  74.         )
  75.       )
  76.       (setq olderr  *error*
  77.             *error* myerr
  78.             vec            (mapcar '- p2 p1)
  79.             pvec    (xdrx_vector_perpvector vec)
  80.       )
  81.       (xdrx_pointmonitor "callback")
  82.       (setq p (getpoint "\n对角点: "))
  83.       (xdrx_pointmonitor)
  84.       (redraw)
  85.       (setq *error* olderr)
  86.     )
  87.   )
  88.   (princ)
  89. )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 40个

财富等级: 招财进宝

发表于 2014-11-23 19:19:27 | 显示全部楼层
能不能多个选择,保持和原来图像的长宽比,找到最大的倾斜矩形,然后这个矩形就不变了,拖动这个矩形到合适位置裁剪?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

 楼主| 发表于 2014-11-23 20:51:28 | 显示全部楼层
newer 发表于 2014-11-23 19:19
能不能多个选择,保持和原来图像的长宽比,找到最大的倾斜矩形,然后这个矩形就不变了,拖动这个矩形到合适 ...

不一定要最大矩形吧,不过可以写一个另外方式的,指定一个边,然后显示和原图像等比矩形,还可以用键盘控制缩放,拖动这个框找合适位置

点评

基于以下几点考虑: 1、原来图像的长宽比例肯定是用户已经满意的比例。 2、新裁剪的图像也要保持这个比例。 2、用户想按某个角度重新裁剪下图像,比如卫星地图的处理,裁剪后图像还是要水平的,这就要于原来的  详情 回复 发表于 2014-11-23 21:08
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

发表于 2014-11-23 21:08:21 | 显示全部楼层
st788796 发表于 2014-11-23 20:51
不一定要最大矩形吧,不过可以写一个另外方式的,指定一个边,然后显示和原图像等比矩形,还可以用键盘控 ...

基于以下几点考虑:

1、原来图像的长宽比例肯定是用户已经满意的比例。
2、新裁剪的图像也要保持这个比例。
2、用户想按某个角度重新裁剪下图像,比如卫星地图的处理,裁剪后图像还是要水平的,这就要于原来的图像的底边对齐,这时候北方向就变了,裁剪后的图像应该加个指北针。
3、保持最大可用矩形,是希望图像尽可能的包括图像中的所有元素,对齐后的矩形,如果用户以后需要在裁剪,另外提供工具处理。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

 楼主| 发表于 2014-11-23 21:31:18 | 显示全部楼层
newer 发表于 2014-11-23 21:08
基于以下几点考虑:

1、原来图像的长宽比例肯定是用户已经满意的比例。

指定角度后最大矩形就确定了,也就没有拖动可能

点评

黄色的是极限,中间都是可移动位置。 [attachimg]11542[/attachimg]  详情 回复 发表于 2014-11-23 21:48
最大矩形不是唯一的,可以移动,右下角只要在大矩形框内,就还可以移动。  详情 回复 发表于 2014-11-23 21:42
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 145个

财富等级: 日进斗金

发表于 2014-11-23 21:42:30 | 显示全部楼层
st788796 发表于 2014-11-23 21:31
指定角度后最大矩形就确定了,也就没有拖动可能

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

使用道具 举报

已领礼包: 145个

财富等级: 日进斗金

发表于 2014-11-23 21:48:45 | 显示全部楼层
st788796 发表于 2014-11-23 21:31
指定角度后最大矩形就确定了,也就没有拖动可能

黄色的是极限,中间都是可移动位置。

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

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

 楼主| 发表于 2014-11-23 21:51:09 | 显示全部楼层
XDSoft 发表于 2014-11-23 21:48
黄色的是极限,中间都是可移动位置。

指定一个角度,需要的矩形怎么确定?没有这方面应用经验
20141123214933.jpg

点评

应该有个约定,拉的那条线应该对应原图形的底边。因为结果要和底边对齐。  详情 回复 发表于 2014-11-23 21:56
红色的可以往右边移。  详情 回复 发表于 2014-11-23 21:54
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 145个

财富等级: 日进斗金

发表于 2014-11-23 21:54:48 | 显示全部楼层
st788796 发表于 2014-11-23 21:51
指定一个角度,需要的矩形怎么确定?没有这方面应用经验

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

使用道具 举报

已领礼包: 145个

财富等级: 日进斗金

发表于 2014-11-23 21:56:34 | 显示全部楼层
st788796 发表于 2014-11-23 21:51
指定一个角度,需要的矩形怎么确定?没有这方面应用经验

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

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

 楼主| 发表于 2014-11-23 21:58:14 | 显示全部楼层
XDSoft 发表于 2014-11-23 21:48
黄色的是极限,中间都是可移动位置。

这样需要先确定一个边的长度和角度,而且这个矩形不一定和原图像是一个比例

点评

要保证一个比例,否则结果太多了。这个工具主要是旋转对齐图像(尽可能保证最大的范围)。用户有别的需要,另行处理。  详情 回复 发表于 2014-11-23 22:00
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 145个

财富等级: 日进斗金

发表于 2014-11-23 22:00:57 | 显示全部楼层
st788796 发表于 2014-11-23 21:58
这样需要先确定一个边的长度和角度,而且这个矩形不一定和原图像是一个比例

要保证一个比例,否则结果太多了。这个工具主要是旋转对齐图像(尽可能保证最大的范围)。用户有别的需要,另行处理。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

 楼主| 发表于 2014-11-23 22:10:58 | 显示全部楼层
本帖最后由 st788796 于 2014-11-23 22:12 编辑
XDSoft 发表于 2014-11-23 22:00
要保证一个比例,否则结果太多了。这个工具主要是旋转对齐图像(尽可能保证最大的范围)。用户有别的需要 ...

还有个问题,按比例匹配这两个取哪个呢
20141123220843.jpg

点评

对齐底边,拉线的方向和原来矩形图像的底边对齐。另外一个方向按 大矩形的比例定。应该是第一个。  详情 回复 发表于 2014-11-23 22:14
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 145个

财富等级: 日进斗金

发表于 2014-11-23 22:14:41 | 显示全部楼层
st788796 发表于 2014-11-23 22:10
还有个问题,按比例匹配这两个取哪个呢

对齐底边,拉线的方向和原来矩形图像的底边对齐。另外一个方向按 大矩形的比例定。应该是第一个。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

 楼主| 发表于 2014-11-23 22:20:47 | 显示全部楼层
XDSoft 发表于 2014-11-23 22:14
对齐底边,拉线的方向和原来矩形图像的底边对齐。另外一个方向按 大矩形的比例定。应该是第一个。

那规则就是按底边,对齐角度只能用白线示意的方向
20141123221840.jpg

点评

这个底边是个方向,可以移动,右边那个矩形随着移动可以放大,直到最大矩形。  详情 回复 发表于 2014-11-23 22:28
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-5 02:12 , Processed in 0.287199 second(s), 62 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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