找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 2390|回复: 5

[教学] 点监视器通用拖动函数XD::Drag:GMove的具体应用代码(1)

[复制链接]

已领礼包: 40个

财富等级: 招财进宝

发表于 2016-5-25 13:25:27 | 显示全部楼层 |阅读模式

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

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

×
短短的代码,实现了 复杂的功能。

通用拖动函数见: http://bbs.xdcad.net/thread-704335-1-1.html

点监视器通用拖动演示.gif

  1. (defun c:tt()
  2.    (defun _callback22(pt) ;;拖动中的回调处理函数
  3.       (mapcar 'set '(p-1 p-2) (XD::Pnts:OrthoProject (list p1 p2) pt (mapcar '+ pt v1)))
  4.       (setq ints (xdrx_curve_getinters (list p-1 p-2) e 3) ;;**裁剪向量和多边形的所有交点
  5.             ints (mapcar 'cadr (xdrx_points_sortoncurve (list p1 p2) ints))
  6.             ints (xd::list:dotPair ints)  ;;交点集排序后,两两组合
  7.             intsdim (XD::Pnts:OrthoProject (list p-1) (car box1)(last box1)) ;;尺寸线的基线位置
  8.       )
  9.       (mapcar '(lambda(x)(xdrx_grdraw 2 0 (car x)(cadr x))) ints) ;;绘制裁剪后的**向量
  10.       (xdrx_setpropertyvalue edim "xLINE2Point" (car intsdim))    ;;拖动生成尺寸标注
  11.    )
  12.    (if (setq e (xdrx_entsel "\n拾取封闭的多边形<退出>:" '((0 . "LWPOLYLINE")(-4 . "&=")(70 . 1))))
  13.      (progn
  14.         (setq inx (XD::Polyline:OnSegAt (car e) (cadr e))
  15.               e (car e)
  16.               p1 (xdrx_getpropertyvalue e "PointAt" inx)
  17.               p1 (XD::Pnts:Setz p1 0.0)
  18.               p2 (xdrx_getpropertyvalue e "PointAt" (1+ inx))
  19.               p2 (XD::Pnts:Setz p2 0.0)
  20.               pt1 (xdrx_midp p1 p2)
  21.               v1 (xdrx_vector_normalize (mapcar '- p2 p1))
  22.               v2 (xdrx_vector_perpvector v1)
  23.               box (xdrx_entity_box e v1)
  24.               box1 (xdrx_points_offset (/ (distance (car box)(cadr box)) 10.0) (xd::pnts:close box))
  25.               box2 (xdrx_points_offset (/ (distance (car box)(cadr box)) 3.0) box1)
  26.               pdim-1 (inters p1 p2 (car box1)(last box1) nil)
  27.         )
  28.         (setq edim (xdrx_dimension_makerotate pdim-1 pdim-1 (car box2) (+ (angle p1 p2) (/ pi 2.0))))
  29.          (if (setq pt2 (XD::DRAG:GMOVE pt1 "\n边线的位置<退出>:" -1 v2  nil "_callback22")) ;;动态拖动
  30.           (progn
  31.              (xdrx_grdraw 1 1 pt1 pt1)
  32.           )
  33.         )           
  34.      )
  35.    )
  36.    (princ)
  37. )



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

已领礼包: 8612个

财富等级: 富甲天下

发表于 2016-5-25 15:02:00 | 显示全部楼层
试过拖动时没有演示的效果

点评

多段线要封闭,点直线段,并且上面的代码没考虑UCS,要在WCS下操作,再试试。还不行,把你的图形截图贴上来。  详情 回复 发表于 2016-5-25 15:11
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

 楼主| 发表于 2016-5-25 15:11:50 | 显示全部楼层
liuyj 发表于 2016-5-25 15:02
试过拖动时没有演示的效果

多段线要封闭,点直线段,并且上面的代码没考虑UCS,要在WCS下操作,再试试。还不行,把你的图形截图贴上来。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 8612个

财富等级: 富甲天下

发表于 2016-5-25 15:35:11 | 显示全部楼层
这次可以了,多谢

点评

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

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

 楼主| 发表于 2016-5-25 15:43:59 | 显示全部楼层
liuyj 发表于 2016-5-25 15:35
这次可以了,多谢

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

使用道具 举报

已领礼包: 8612个

财富等级: 富甲天下

发表于 2016-5-25 15:56:32 | 显示全部楼层
原因没找到,也是闭合的多边形,但标注不能随着拖动变化,也看不到平行于边的移动的线。重开cad后又试了一次,可以了
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-18 04:45 , Processed in 0.192255 second(s), 46 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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