找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 3596|回复: 16

[已解决] 求动态拖动矩形的一个角点或一条边的LISP代码

[复制链接]
发表于 2014-1-5 10:26:30 | 显示全部楼层 |阅读模式
悬赏50D豆已解决
请问,有没有动态拖动矩形的一个角点或一条边的LISP代码?我不会动态。
我碰到的问题是,我画了一个矩形A,我要微调它的大小,一动,它就变成了非矩形。我希望我拖动它一条边或一个角点时,它永远为矩形,这样就美观。
我希望代码对与坐标轴斜交的矩形也有效。当然如果只是对与坐标轴平行的有效也可以。
这个很有用途的啊。矩形多好看,歪多边形多难看

最佳答案

查看完整内容

函数发布里面有很多现成的啊 http://bbs.xdcad.net/forum.php?mod=viewthread&tid=669501
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 40个

财富等级: 招财进宝

发表于 2014-1-5 10:26:31 | 显示全部楼层
函数发布里面有很多现成的啊

http://bbs.xdcad.net/forum.php?mod=viewthread&tid=669501


点评

你发的网址是生成矩形,我要求的是在已有的矩形基础上拖动边或点去修改它。两码事  发表于 2014-1-5 15:01
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

发表于 2014-1-5 10:46:26 | 显示全部楼层
你用的CAD什么版本,如果有 GripPoint 用 API 写起来很简单,否则用 API 的 MoveStretchpoint 或者 Polyline_SetPointAt ,最麻烦的就是Grread + vla-put-coordinate 了

点评

Grread + vla-put-coordinate,好象这是所有版本都适合的,写好我给你再加10币  详情 回复 发表于 2014-1-5 10:57
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复

使用道具 举报

 楼主| 发表于 2014-1-5 10:49:22 | 显示全部楼层
我的是2005。
如果是各版本都适合就更好。
否则只适合2005也可以
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复

使用道具 举报

 楼主| 发表于 2014-1-5 10:57:13 | 显示全部楼层
st788796 发表于 2014-1-5 10:46
你用的CAD什么版本,如果有 GripPoint 用 API 写起来很简单,否则用 API 的 MoveStretchpoint 或者 Polylin ...

Grread + vla-put-coordinate,好象这是所有版本都适合的,写好我给你再加10币{:soso_e100:}
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

发表于 2014-1-5 12:05:16 | 显示全部楼层
清风明月10 发表于 2014-1-5 10:57
Grread + vla-put-coordinate,好象这是所有版本都适合的,写好我给你再加10币

先贴部分代码,点在中间位置单边拉伸
  1. (defun c:tt (/ callback callback1 e p pam lst dotn intn pts an an1 lst)
  2.   (defun XD::Polyline:SegIndex (e pam / nNums)
  3.     (setq nNums (xdrx_polyline_numverts e))
  4.     (if        (>= (1+ pam) nNums)
  5.       (list pam 0)
  6.       (list pam (1+ pam))
  7.     )
  8.   )
  9.   (defun callback (dynpt /)
  10.    (princ)
  11.   )
  12.   (defun callback1 (dynpt / d ptl)
  13.     (setq d (apply 'xdrx_point_dist2line (cons dynpt pts)))
  14.     (setq ptl (mapcar '(lambda (x)
  15.                          (polar x an1 d)
  16.                        )
  17.                       pts
  18.               )
  19.     )
  20.     (mapcar '(lambda (i x)
  21.                (xdrx_polyline_setpointat (car e) i x)
  22.              )
  23.             lst
  24.             ptl
  25.     )
  26.   )
  27.   (if (and (setq e (xdrx_entsel "\nPick Pline: " '((0 . "lwpolyline"))))
  28.            (xdrx_polyline_compress (car e))
  29.            (XD::Polyline:IsRectang (car e))
  30.       )
  31.     (progn
  32.       (xd::begin)
  33.       (setq p         (cadr e)
  34.             pam         (apply 'xdrx_curve_getparamatpoint e)
  35.             lst         (xdrx_math_modf pam)
  36.             dotn (car lst)
  37.             intn (cadr lst)
  38.             pts         (xdrx_polyline_getlinesegat (car e) (fix intn))
  39.             an         (apply 'angle pts)
  40.             an1         (- an _pi2)
  41.       )
  42.       (if (<= 0.34 dotn 0.67)
  43.         (progn
  44.           (setq lst (XD::Polyline:SegIndex (car e) (fix intn)))
  45.           (xdrx_pointmonitor "Callback1" (car e))
  46.           (getpoint p)
  47.         )
  48.         (progn
  49.           (setq lst (XD::Polyline:-Index+ (car e intn)))
  50.           (xdrx_pointmonitor "callback" (car e))
  51.           (getpoint p)
  52.         )
  53.       )
  54.       (xdrx_pointmonitor)
  55.       (xd::end)
  56.     )
  57.   )
  58.   (princ)
  59. )

点评

“PICK LINE: ; 错误: *error* 函数中出错参数太多” 我运行的结果显示,有时可以正常运行,有时显示上面的错误代码即不能运行。请你看看原因出在哪里。  详情 回复 发表于 2014-1-5 13:55
对不起。我再次试了,成功了。谢谢您!静候你拖动角点的部分代码!  发表于 2014-1-5 13:40
“(DEFUN $XDOB_REACTORS_DOCMANAGER_CALLBACK (REACTOR PARAMS) (XD::REACTOR:HELPER-OTHER-CALLBACK "DOCMANAGER" (VLR-current-reaction-name) PARAMS))” 好象无法运行啊。我选矩形,选择集总是0  发表于 2014-1-5 13:35
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复

使用道具 举报

 楼主| 发表于 2014-1-5 13:55:01 | 显示全部楼层
st788796 发表于 2014-1-5 12:05
先贴部分代码,点在中间位置单边拉伸

“PICK LINE: ; 错误: *error* 函数中出错参数太多”
我运行的结果显示,有时可以正常运行,有时显示上面的错误代码即不能运行。请你看看原因出在哪里。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复

使用道具 举报

 楼主| 发表于 2014-1-5 13:57:42 | 显示全部楼层
好象加载的第1次可以正常运行,后面就时而出错,时而可以正常运行
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复

使用道具 举报

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

使用道具 举报

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

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

发表于 2014-1-5 21:32:40 | 显示全部楼层
清风明月10 发表于 2014-1-5 13:59
你多去移动几次,就会产生问题。

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

使用道具 举报

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

使用道具 举报

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-26 00:57 , Processed in 0.259884 second(s), 56 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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