找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1426|回复: 3

[已解决] xd::drag:simplemove拖动点异常

[复制链接]

已领礼包: 202个

财富等级: 日进斗金

发表于 2020-6-19 07:51:53 | 显示全部楼层 |阅读模式
悬赏20D豆已解决
本帖最后由 dyjwyqz5221 于 2020-6-19 07:54 编辑

20.06.18lsp通用函数库覆盖后,这个函数是能用了,但是拖动点不对了。拖动点距离拖动对象很远。
(xd::drag:simplemove (entlast) "\n表格插入点:" 6 t)
测试下,这个原先拖动点在entlast的右侧中点,现在在很远的下方了。
这个函数的用法变了吗?

另,用xdrx-drag-move做了一个函数,这样也能实现XD::Drag:SimpleMove的功能。
(defun yqz::drag:move(str ss n / pt mat)
        (cond
                ((= (type ss) 'ENAME)
                        (setq ss (xd::entity->pickset (list ss)))
                )
                ((eq (type ss) 'LIST)
                        (setq ss (xd::entity->pickset ss))
                )
        )
        (setq pt (xd::geom:get9pt ss n)
                mat (xdrx-drag-move str ss pt)
        );;;setq
        (xdrx_entity_transform ss mat)
)

参数:
str--提示字符串
ss--图元、图元表或选择集
n---ss包围盒的1-9中的某一点



最佳答案

查看完整内容

请重新下载 通用LISP函数库

评分

参与人数 1D豆 +20 贡献 +1 收起 理由
XDSoft + 20 + 1 很给力!经验;技术要点;资料分享奖!

查看全部评分

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

已领礼包: 145个

财富等级: 日进斗金

发表于 2020-6-19 07:51:54 | 显示全部楼层
请重新下载 通用LISP函数库

点评

我设计的这个函数咋样,评价一下  详情 回复 发表于 2020-6-19 15:40

评分

参与人数 1D豆 +10 收起 理由
dyjwyqz5221 + 10 热心帮忙奖!

查看全部评分

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

使用道具 举报

已领礼包: 202个

财富等级: 日进斗金

 楼主| 发表于 2020-6-19 15:40:00 | 显示全部楼层
XDSoft 发表于 2020-6-19 15:26
请重新下载 通用LISP函数库

我设计的这个函数咋样,评价一下

点评

写的函数很好,很简洁,看来API上下的功夫很多,有问题多发帖交流。 xd::drag:simplemove 现在支持关键字回调,你用它可以写 点监视器版的 “自由移动”和“自由拷贝”了,下面是示例代码,自由移动实现了旋转、  详情 回复 发表于 2020-6-19 21:36
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复

使用道具 举报

已领礼包: 145个

财富等级: 日进斗金

发表于 2020-6-19 21:36:39 | 显示全部楼层
dyjwyqz5221 发表于 2020-6-19 15:40
我设计的这个函数咋样,评价一下

写的函数很好,很简洁,看来API上下的功夫很多,有问题多发帖交流。

xd::drag:simplemove 现在支持关键字回调,你用它可以写 点监视器版的 “自由移动”和“自由拷贝”了,下面是示例代码,自由移动实现了旋转、改基点、转90度功能,你试试,把未完成的的部分写好,这样你就会对矩阵应用的理解很有帮助。镜像功能写好,你就会对文字的镜像处理有很大的理解和提高。试试看,随时发帖交流。

你可能需要再去重新下载下 通用LISP函数库

点监视器自由移动.gif

  1. (defun c:tt ()
  2.   (defun _keyword (kw)
  3.     (defun _rcallback (dynpt)
  4.       (if (not lastang)
  5.         (setq lastang (angle p1 dynpt))
  6.       )
  7.       (setq an        (- (setq an1 (angle p1 dynpt)) lastang)
  8.             mat        (xdrx-matrix-setrotation an '(0 0 1) p1)
  9.       )
  10.       (xdrx-entity-transform ss mat)
  11.       (setq mat1 (xdrx-matrix-product mat mat1))
  12.       (setq lastang an1)
  13.     )
  14.     (setq p1 (xd::drag:getbasepoint))
  15.     (cond
  16.       ((= kw "T")
  17.        (if (setq pt (getpoint "\n新的基点<退出>:"))
  18.          (progn (xd::drag:setbasepoint pt))
  19.        )
  20.       )
  21.       ((= kw "A")
  22.        (setq mat (xdrx-matrix-setrotation (/ pi 2.0) '(0 0 1) p1))
  23.        (xdrx-entity-transform ss mat)
  24.       )
  25.       ((= kw "R")
  26.        (setq p1          (xd::drag:getbasepoint)
  27.              mat1 (xdrx-matrix-identity 3)
  28.        )
  29.        (xdrx-pointmonitor "_rcallback")
  30.        (if (not (setq p2 (getpoint p1 "\n旋转轴第二点<退出>:")))
  31.          (progn        (xdrx-entity-transform ss (xdrx-matrix-inverse mat1))
  32.          )
  33.        )
  34.        (xdrx-pointmonitor)
  35.       )
  36.       ((= kw "M")
  37.        (xdrx-prompt "\n*镜像*功能待完成.")
  38.       )
  39.       ((= kw "S")
  40.        (xdrx-prompt "\n*左右翻*功能待完成.")
  41.       )
  42.       ((= kw "D")
  43.        (xdrx-prompt "\n*上下翻*功能待完成.")
  44.       )
  45.       ((= kw "L")
  46.        (xdrx-prompt "\n*缩放*功能待完成.")
  47.       )
  48.       ((= kw "F")
  49.        (xdrx-prompt "\n*对齐*功能待完成.")
  50.       )
  51.     )
  52.   )
  53.   (setq lastang nil)
  54.   (and
  55.     (setq ss (xdrx-ssget "\n选择要处理的对象<退出>:"))
  56.     (xd::doc:setkeyword "R T A M S D L F")
  57.     (xd::drag:callbacksetkeyword "_keyword")
  58.     (xd::drag:simplemove
  59.       ss
  60.       "\n〖移动〗插入点或{改基点[T]/改转角[R]/转90度[A]/镜像[M]/左右翻[S]/上下翻[D]/缩放[L]/对齐[F]/}<退出>:"
  61.       6
  62.       t
  63.     )
  64.   )
  65.   (princ)
  66. )


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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-12-23 01:44 , Processed in 0.393410 second(s), 37 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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