找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

楼主: --@-----

[求助] 带记忆的连续复制

[复制链接]
发表于 2013-7-14 12:20:07 来自手机 | 显示全部楼层
--@----- 发表于 6 分钟前

大侠你的代码:方向和上一次一样的时候才可以默认上次的距离,  比如上次是竖直方向的连续复制,下次要是水平方向的连续复制就不行了。加油大侠,呵呵

方向是鼠标指示方向来自: Android客户端

点评

是的 要的就是鼠标指向方向的 ,st788796的代码 , 当和上次的方向指向不一样时,就不能记忆上次的距离了 。  详情 回复 发表于 2013-7-14 12:33
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-7-14 12:22:17 | 显示全部楼层
ysq101 发表于 2013-7-14 12:11
而且退出也不够人性化!!!要按E键

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

使用道具 举报

 楼主| 发表于 2013-7-14 12:33:28 | 显示全部楼层
Free-Lancer 发表于 2013-7-14 12:20
方向是鼠标指示方向

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

使用道具 举报

已领礼包: 394个

财富等级: 日进斗金

发表于 2013-7-14 13:15:37 来自手机 | 显示全部楼层
2014的copy后输入a就可以等距多重复制了,
其他版本没试,

点评

如果能增加的还有记忆来的功能就太好了 比如批量的改某些东西  详情 回复 发表于 2013-7-14 13:22
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-7-14 13:22:15 | 显示全部楼层
kwok 发表于 2013-7-14 13:15
2014的copy后输入a就可以等距多重复制了,
其他版本没试,

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

使用道具 举报

发表于 2013-7-14 14:36:26 来自手机 | 显示全部楼层
--@----- 发表于 1 小时前

如果能增加的还有记忆来的功能就太好了 比如批量的改某些东西  

虽然一直用2014但还没有注意这个功能,回头试试
lisp的机制也没法改变,响应事件,如果没有动作,软件也不知到你要干啥,st的程序第一次空格知道取上次默认距离了,可是方向不知道来自: Android客户端

点评

方向是鼠标拖动的方向(如果拖动不行的话,那就点击两点代表方向。其实操作中拖的是比较快的,哈哈 点击是在拖动的时候还要在点击下)  详情 回复 发表于 2013-7-14 15:36
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-7-14 15:36:44 | 显示全部楼层
Free-Lancer 发表于 2013-7-14 14:36
虽然一直用2014但还没有注意这个功能,回头试试
lisp的机制也没法改变,响应事件,如果没有动作,软件也 ...

方向是鼠标拖动的方向(如果拖动不行的话,那就点击两点代表方向。其实操作中拖的是比较快的,哈哈 点击是在拖动的时候还要在点击下)

点评

getpoint 即可以输入距离同时鼠标位置指示了方向,但是第二次你要回车取距离,此时没有了方向,Grread可以获取光标点坐标,但是要加一次回车  详情 回复 发表于 2013-7-14 23:02
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

发表于 2013-7-14 23:02:25 | 显示全部楼层
--@----- 发表于 2013-7-14 15:36
方向是鼠标拖动的方向(如果拖动不行的话,那就点击两点代表方向。其实操作中拖的是比较快的,哈哈 点击 ...

getpoint 即可以输入距离同时鼠标位置指示了方向,但是第二次你要回车取距离,此时没有了方向,Grread可以获取光标点坐标,但是要加一次回车

点评

为啥不能拾取鼠标拖动的方向呢 ,CAD的COP复制过程就是拾取鼠标拖动的方向  详情 回复 发表于 2013-7-14 23:40
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

发表于 2013-7-14 23:33:26 | 显示全部楼层
--@----- 发表于 2013-7-14 12:02
如果用这个命令 出现这个对话框然后在去选择物体,就很麻烦了 。所以网上很多人需要阵列的或者连续复制的 ...

在 lisp 是不会出现对话框的
  1. (if (setq ss (ssget))
  2.    (vl-cmdf ".-array" ss "" "r" pause 1 pause pause)
  3. )

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

使用道具 举报

 楼主| 发表于 2013-7-14 23:40:12 | 显示全部楼层
st788796 发表于 2013-7-14 23:02
getpoint 即可以输入距离同时鼠标位置指示了方向,但是第二次你要回车取距离,此时没有了方向,Grread可 ...

为啥不能拾取鼠标拖动的方向呢 ,CAD的COP复制过程就是拾取鼠标拖动的方向{:soso_e100:}

点评

拾取的时候就不是上次的距离了, 机子上调试不出来获取生成的最后选择集,只好用 xdapi 写了,运行前加载 xdrxapi  详情 回复 发表于 2013-7-15 00:20
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

发表于 2013-7-15 00:20:22 | 显示全部楼层
本帖最后由 st788796 于 2013-7-15 00:25 编辑
--@----- 发表于 2013-7-14 23:40
为啥不能拾取鼠标拖动的方向呢 ,CAD的COP复制过程就是拾取鼠标拖动的方向

拾取的时候就不是上次的距离了, 机子上调试不出来获取生成的最后选择集,只好用 xdapi 写了,运行前加载  xdrxapi
  1. (defun c:fz (/ getlastss ss p1 p2 an dis tf p mat0 mat)
  2.   (if (and (setq ss (ssget))
  3.     (setq p1 (getpoint "\n起点:"))
  4.       )
  5.     (progn
  6.       (setq
  7. p2 (getpoint p1
  8.        (if $discopy
  9.          (strcat "\n第二点<" (rtos $discopy 2 2) ">:")
  10.          "\n第二点: "
  11.        )
  12.     )
  13.       )
  14.       (if (= p2 nil)
  15. (setq p2 (cadr (grread t))
  16.        p2 (polar p1 (angle p1 p2) $discopy)
  17. )
  18.       )
  19.       (setq an      (angle p1 p2)
  20.      dis      (distance p1 p2)
  21.      $discopy dis
  22.      s      (entlast)
  23.       )
  24.       (setq mat0 (xdrx_matrix_identity 3)
  25.      mat  (xdrx_matrix_settranslation mat0 (mapcar '- p2 p1))
  26.       )
  27.       (setq ss  (xdrx_entity_transformedcopy ss mat)
  28.      tf t
  29.      p1 p2
  30.       )
  31.       (while tf
  32. (setq
  33.    p (getstring (strcat "\n任意键退出/空格键继续[或输入距离]<"
  34.           (rtos dis 2 2)
  35.           ">:"
  36.          )
  37.      )
  38. )
  39. (cond
  40.    ((= p "") (setq p dis))
  41.    ((numberp (distof p))
  42.     (setq dis (distof p)
  43.    $discopy dis
  44.     )
  45.    )
  46.    (t
  47.     (setq dis nil
  48.    tf  nil
  49.     )
  50.    )
  51. )
  52. (if dis
  53.    (progn
  54.      (setq p2  (polar p1 an dis)
  55.     mat (xdrx_matrix_settranslation mat0 (mapcar '- p2 p1))
  56.      )
  57.      (setq ss (xdrx_entity_transformedcopy ss mat)
  58.       p1 p2
  59.      )
  60.    )
  61. )
  62.       )
  63.     )
  64.   )
  65.   (princ)
  66. )

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

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

发表于 2013-7-15 12:01:36 | 显示全部楼层
在 垂直模式打开情况下还有 Bug,需要有个判断修正 Grread 点

点评

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

使用道具 举报

 楼主| 发表于 2013-7-15 12:50:50 | 显示全部楼层
st788796 发表于 2013-7-15 12:01
在 垂直模式打开情况下还有 Bug,需要有个判断修正 Grread 点

看来这个难度很大哦

点评

调整了下程序,适应第二次应用时直接回车打开 Ortho 模式情况,楼上的帖子保留,可以对比看看改了哪些  详情 回复 发表于 2013-7-16 00:04
简单,垂直打开时 an 是象限角,不是(angle p1 p2)  详情 回复 发表于 2013-7-15 13:10
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 593个

财富等级: 财运亨通

发表于 2013-7-15 13:10:15 来自手机 | 显示全部楼层
--@----- 发表于 2013-7-15 12:50
看来这个难度很大哦

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

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

发表于 2013-7-16 00:04:02 | 显示全部楼层
--@----- 发表于 2013-7-15 12:50
看来这个难度很大哦

调整了下程序,适应第二次应用时直接回车打开 Ortho 模式情况,楼上的帖子保留,可以对比看看改了哪些
  1. (defun c:fz (/ ss p1 p2 an dis tf p mat0 mat)
  2.   (if (and (setq ss (ssget))
  3.     (setq p1 (getpoint "\n起点:"))
  4.       )
  5.     (progn
  6.       (setq
  7. p2 (getpoint p1
  8.        (if $discopy
  9.          (strcat "\n第二点<" (rtos $discopy 2 2) ">:")
  10.          "\n第二点: "
  11.        )
  12.     )
  13.       )
  14.       (if (= p2 nil)
  15. (progn
  16.    (setq p2 (cadr (grread t)))
  17.    (if (= (getvar "orthomode") 1)
  18.      (cond
  19.        ((<= (* 0.25 pi) (angle p1 p2) (* 0.75 pi))
  20.         (setq an (/ pi 2))
  21.        )
  22.        ((< (* 0.75 pi) (angle p1 p2) (* 1.25 pi))
  23.         (setq an pi)
  24.        )
  25.        ((<= (* 1.25 pi) (angle p1 p2) (* 1.75 pi))
  26.         (setq an (* 1.5 pi))
  27.        )
  28.        (t (setq an 0.))
  29.      )
  30.      (setq an (angle p1 p2))
  31.    )
  32.    (setq p2 (polar p1 an $discopy))
  33. )
  34.       )
  35.       (setq an      (angle p1 p2)
  36.      dis      (distance p1 p2)
  37.      $discopy dis
  38.      mat0     (xdrx_matrix_identity 3)
  39.      mat      (xdrx_matrix_settranslation mat0 (mapcar '- p2 p1))
  40.      ss      (xdrx_entity_transformedcopy ss mat)
  41.      tf      t
  42.      p1      p2
  43.       )
  44.       (while tf
  45. (setq
  46.    p
  47.     (getstring (strcat "\n任意键退出/空格键继续[或输入新距离]<"
  48.          (rtos dis 2 2)
  49.          ">:"
  50.         )
  51.     )
  52. )
  53. (cond
  54.    ((= p "") (setq p dis))
  55.    ((numberp (distof p))
  56.     (setq dis (distof p)
  57.    $discopy dis
  58.     )
  59.    )
  60.    (t
  61.     (setq dis nil
  62.    tf  nil
  63.     )
  64.    )
  65. )
  66. (if dis
  67.    (setq p2  (polar p1 an dis)
  68.   mat (xdrx_matrix_settranslation mat0 (mapcar '- p2 p1))
  69.   ss  (xdrx_entity_transformedcopy ss mat)
  70.   p1  p2
  71.    )
  72. )
  73.       )
  74.     )
  75.   )
  76.   (princ)
  77. )

点评

用晓东API提供的DRAG函数,很方便的。 (xdrx_drag_move "\n提示" ss pj) 第一次复制后,(xdrx_drag_getlastpoint) 得到上次鼠标点,就能确定和开始的基点的方向了。 (xdrx_drag_getlastmatrix) ; 获得上次  详情 回复 发表于 2013-7-16 00:34
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-9-25 10:38 , Processed in 0.319640 second(s), 65 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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