找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 560|回复: 11

[BUG报告] 64位的cad2014,xdrx_PickSet_dragGen输入距离没有返回值

[复制链接]

已领礼包: 8612个

财富等级: 富甲天下

发表于 2017-8-20 11:14:29 | 显示全部楼层 |阅读模式

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

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

×
先(xdrx_drag_initget (+ 2 4 8 16 128 512 65536) st),xdrx_PickSet_dragGen函数R18x64的可以直接输入距离,再用xdrx_drag_getlastMatrix得到一个矩阵,但R19x64返回值为nil。0818的API仍未解决,自由拷贝和自由移动无法输入距离。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 40个

财富等级: 招财进宝

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

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

发表于 2017-8-20 12:49:58 | 显示全部楼层
你自己修改了 自由拷贝的代码?

现在工具箱的自由拷贝也不让输入距离啊。

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

使用道具 举报

已领礼包: 8612个

财富等级: 富甲天下

 楼主| 发表于 2017-8-20 13:34:30 | 显示全部楼层
修改的地方请N版多指教
  1. (defun XD::Pickset:Drag        (ss          pj           mode            cursor   tf              /
  2.                          ang          box           initget-str             k1              k2
  3.                          k3          m           mmatrot  mmattrans              mrmatrix
  4.                          mtmatrix mtmatrix0            mtmatrix2              n
  5.                          pj1          prompt1  promptl  pt             pt1      pt2
  6.                          pt3          pt4           scl            ss1             tf1
  7.                          escape-down           entlist  entlist1 entlist2 vdir
  8.                          zdir1
  9.                         )
  10.   (xdrx_begin)
  11.   (xdrx_SysVar_Push '("osmode" 2727) '("CURSORSIZE" 5))
  12.   (xdrx_document_ucson)
  13.   (if (not pj)
  14.     (progn (setq box (xdrx_entity_box ss)
  15.                  pj  (car box)
  16.            )
  17.     )
  18.   )
  19.   (setq        promptl        (list '(1 "改基点[T]" "T")
  20.                       '(2 "改转角[R]" "R")
  21.                       '(4 "转90度[A]" "A")
  22.                       '(8 "镜像[M]" "M")
  23.                       '(16 "左右翻[S]" "S")
  24.                       '(32 "上下翻[D]" "D")
  25.                       '(256 "缩放[L]" "L")
  26.                       '(512 "对齐[F]" "F")
  27.                       '(4096 "回退[U]" "U")
  28.                      )
  29.   )
  30.   (setq prompt1 "\n插入点或{")
  31.   (setq initget-str " ")
  32.   (setq mode (+ 4096 mode))
  33.   (foreach n promptl
  34.     (setq k1 (car n)
  35.           k2 (cadr n)
  36.           k3 (caddr n)
  37.     )
  38.     (if        (/= (logand mode k1) 0)
  39.       (setq initget-str        (strcat initget-str k3 " ")
  40.             prompt1        (strcat prompt1 k2 "/")
  41.       )
  42.     )
  43.   )
  44.   (setq initget-str (xdrx_string_trimleft (xdrx_string_trimright initget-str)))
  45.   (setq prompt1 (strcat prompt1 "}<退出>:"))
  46.   (setq        mRMatrix  t
  47.         tf1          t
  48.         mTMatrix0 (xdrx_matrix_identity 3)
  49.         mRMatrix  t
  50.   )
  51.   (xdrx_pickset_redraw ss)
  52.   (xdrx_drag_setmatrix mTMatrix0 t)
  53.   (setq undo-mark 0)
  54.   (while mRMatrix
  55.     (xdrx_drag_initget (+ 2 4 8 16 128 512 65536) initget-str)
  56.     (xdrx_initget "T R A M S D L F U")
  57.     (xdrx_drag_setmode "Move")
  58.     (setq mRMatrix (xdrx_PickSet_dragGen prompt1 ss pj cursor nil))
  59.     (if        (= mRMatrix -4)
  60.       (progn (if (< (ACET-SYS-KEYSTATE 27) 0)
  61.                (setq escape-down T
  62.                      mRMatrix nil
  63.                )
  64.                (setq mRMatrix (xdrx_drag_getLastMatrix))
  65.              )
  66.       )
  67.     )
  68.     (cond
  69.       ((= mRMatrix "A")
  70.        (setq mTMatrix (xdrx_matrix_setRotation
  71.                         mTMatrix0
  72.                         (/ pi 2)
  73.                         '(0 0 1)
  74.                         (trans pj 1 0)
  75.                       )
  76.        )
  77.        (xdrx_drag_setmatrix mTMatrix nil)
  78.       )
  79.       ((= mRMatrix "S")
  80.        (setq
  81.          mTMatrix (xdrx_matrix_setMirror
  82.                     mTMatrix0
  83.                     (list (trans pj 1 0) (trans (polar pj (/ pi 2) 100) 1 0))
  84.                   )
  85.        )
  86.        (xdrx_drag_setmatrix mTMatrix nil)
  87.       )
  88.       ((= mRMatrix "D")
  89.        (setq mTMatrix (xdrx_matrix_setMirror
  90.                         mTMatrix0
  91.                         (list (trans pj 1 0) (trans (polar pj 0.0 100) 1 0))
  92.                       )
  93.        )
  94.        (xdrx_drag_setmatrix mTMatrix nil)
  95.       )
  96.       ((= mRMatrix "F")
  97.        (setq mTMatrix2 (xdrx_drag_getLastMatrix)
  98.              pj               (xdrx_drag_getLastPoint)
  99.        )
  100.        (setq ss1 (xdrx_entity_TransFormedcopy ss mTMatrix2))
  101.        (if (and        (setq pt1 (getpoint "\n请拾取对齐源参考点:"))
  102.                 (setq pt2 (getpoint pt1 "\n请拾取另一定确定对齐参考轴:"))
  103.                 (setq pt3 (getpoint "\n请拾取目标参考点:"))
  104.                 (setq pt4 (getpoint pt3 "\n请拾取另一点确定目标参考轴:"))
  105.            )
  106.          (progn        (setq mMatRot (XD::Matrix:Align pt1 pt1 pt3 pt2 pt4))
  107.                 (setq mMatRot (XD::Matrix:Align pj pt1 pt3 pt2 pt4))
  108.                 (setq mMatRot
  109.                        (xdrx_matrix_product
  110.                          (xdrx_matrix_setTransLation mTMatrix0 (mapcar '- pj pt4))
  111.                          mMatRot
  112.                        )
  113.                 )
  114.                 (setq pj1 (xdrx_point_transform pj mMatRot))
  115.                 (setq m              (xdrx_matrix_settranslation mTMatrix0 (mapcar '- pj pj1))
  116.                       mMatRot (xdrx_matrix_product mMatrot mTMatrix2)
  117.                 )
  118.                 (xdrx_drag_setmatrix mMatRot t)
  119.          )
  120.        )
  121.        (command ".erase" ss1 "")
  122.       )
  123.       ((= mRMatrix "R")
  124.        (setq mTMatrix2 (xdrx_drag_getLastMatrix))
  125.        (setq ss1 (xdrx_entity_TransFormedcopy ss mTMatrix2))
  126.        (xdrx_pickset_redraw ss1 3)
  127.        (xdrx_drag_setmatrix mTMatrix0 t)
  128.        (xdrx_drag_SetMode "Rotate")
  129.        (xdrx_drag_initget (+ 2 4 8 16 128 512 65536))
  130.        (setq mTMatrix (xdrx_pickset_draggen
  131.                         "\n旋转角度[回车输入]:"
  132.                         ss1
  133.                         (setq pj1 (trans (xdrx_drag_getLastPoint) 0 1))
  134.                         2
  135.                       )
  136.        )
  137.        (if (= mTMatrix -4)
  138.          (if (< (ACET-SYS-KEYSTATE 27) 0)
  139.            (setq mRMatrix nil)
  140.          )
  141.        )
  142.        (if (= mTMatrix -1)
  143.          (progn        (if (not (setq ang (getangle "\n请输入旋转角度<0>:")))
  144.                   (setq ang 0.0)
  145.                 )
  146.                 (setq mTMatrix (xdrx_matrix_setRotation
  147.                                  mTMatrix0
  148.                                  ang
  149.                                  '(0 0 1)
  150.                                  (trans pj1 1 0)
  151.                                )
  152.                 )
  153.          )
  154.          (progn        (setq mMatTrans        (xdrx_matrix_setTranslation mTMatrix0 (mapcar '- pj pj1))
  155.                       mTMatrix        (xdrx_matrix_product mMatTrans mTMatrix)
  156.                       mTMatrix        (xdrx_matrix_product mTMatrix mTMatrix2)
  157.                 )
  158.          )
  159.        )
  160.        (xdrx_drag_setmatrix mTMatrix t)
  161.        (command ".erase" ss1 "")
  162.       )
  163.       ((= mRMatrix "M")
  164.        (setq mTMatrix2 (xdrx_drag_getLastMatrix))
  165.        (setq ss1 (xdrx_entity_TransFormedcopy ss mTMatrix2))
  166.        (xdrx_pickset_redraw ss1 3)
  167.        (xdrx_drag_setmatrix mTMatrix0 t)
  168.        (xdrx_drag_SetMode "Mirror")
  169.        (xdrx_drag_initget (+ 2 4 8 16 128 512 65536))
  170.        (if (and        (setq pj1 (getpoint "\n请拾取镜像参考基点<退出>:"))
  171.                 (setq mTMatrix (xdrx_pickset_draggen
  172.                                  "\n\n请拾取另一点定确定镜像轴<退出>:"
  173.                                  ss1
  174.                                  pj1
  175.                                  2
  176.                                )
  177.                 )
  178.            )
  179.          (progn        (setq mMatTrans        (xdrx_matrix_setTranslation mTMatrix0 (mapcar '- pj pj1))
  180.                       mTMatrix        (xdrx_matrix_product mMatTrans mTMatrix)
  181.                       mTMatrix        (xdrx_matrix_product mTMatrix mTMatrix2)
  182.                 )
  183.          )
  184.          (progn (setq mTMatrix mTMatrix2))
  185.        )
  186.        (xdrx_drag_setmatrix mTMatrix nil)
  187.        (command ".erase" ss1 "")
  188.       )
  189.       ((= mRMatrix "L")
  190.        (setq mTMatrix2 (xdrx_drag_getLastMatrix))
  191.        (setq ss1 (xdrx_entity_TransFormedcopy ss mTMatrix2))
  192.        (xdrx_pickset_redraw ss1 3)
  193.        (xdrx_drag_setmatrix mTMatrix0 t)
  194.        (setq box (xdrx_entity_box ss1)
  195.              scl (- (caadr box) (caar box))
  196.        )
  197.        (xdrx_drag_SetMode "Scale" (/ scl 2.0))
  198.        (xdrx_drag_initget (+ 2 4 8 16 128 512 65536))
  199.        (setq mTMatrix (xdrx_pickset_draggen
  200.                         "\n缩放比例[回车输入]:"
  201.                         ss1
  202.                         (setq pj1 (trans (xdrx_drag_getLastPoint) 0 1))
  203.                         2
  204.                       )
  205.        )
  206.        (if (= mTMatrix -4)
  207.          (if (< (ACET-SYS-KEYSTATE 27) 0)
  208.            (setq mRMatrix nil)
  209.          )
  210.        )
  211.        (if (= mTMatrix -1)
  212.          (progn        (initget 6)
  213.                 (if (not (setq scl (getreal "\n请输入缩放比例<1>:")))
  214.                   (setq scl 1.0)
  215.                 )
  216.                 (if (/= scl 1.0)
  217.                   (progn
  218.                     (setq
  219.                       mTMatrix (xdrx_matrix_setScale mTMatrix0 scl (trans pj1 1 0))
  220.                     )
  221.                   )
  222.                 )
  223.          )
  224.        )
  225.        (setq mMatTrans (xdrx_matrix_setTranslation mTMatrix0 (mapcar '- pj pj1))
  226.              mTMatrix  (xdrx_matrix_product mMatTrans mTMatrix)
  227.              mTMatrix  (xdrx_matrix_product mTMatrix mTMatrix2)
  228.        )
  229.        (xdrx_drag_setmatrix mTMatrix nil)
  230.        (command ".erase" ss1 "")
  231.       )
  232.       ((= mRMatrix "T")
  233.        (setq mTMatrix2 (xdrx_drag_getLastMatrix))
  234.        (setq ss1 (xdrx_entity_TransFormedcopy ss mTMatrix2))
  235.        (initget 2)
  236.        (if (setq pj1 (getpoint "\n请输入新的基点:"))
  237.          (progn (setq pj pj1) (xdrx_drag_setmatrix mTMatrix2 T))
  238.        )
  239.        (command ".erase" ss1 "")
  240.       )
  241.       ((= mRMatrix -1) (setq mRMatrix nil))
  242.       ((= mRMatrix "U")
  243.        (if (> undo-mark 0)
  244.          (progn        (setq undo-mark (1- undo-mark))
  245.                 (if (>= undo-mark 0)
  246.                   (vl-cmdf ".undo" 1)
  247.                 )
  248.                 (if (= undo-mark 0)
  249.                   (princ "\n所有操作已经回退完毕。")
  250.                 )
  251.          )
  252.          (princ "\r所有操作已经回退完毕。")
  253.        )
  254.       )
  255.       ((or (= (type mRMatrix) 'LIST) (not escape-down))
  256.        (XD::UndoMark)
  257.        (setq undo-mark (1+ undo-mark))
  258.        (if tf
  259.          (progn
  260.            (setq entlist
  261.                   (xd::list:groupbyindex
  262.                     (mapcar
  263.                       '(lambda (x) (list (xdrx_getpropertyvalue x "IsA") x))
  264.                       (xdrx_pickset->ents
  265.                         (xdrx_entity_TransFormedcopy
  266.                           ss
  267.                           (xdrx_drag_getLastMatrix)
  268.                         )
  269.                       )
  270.                     )
  271.                     0
  272.                   )
  273.            )
  274.            (setq entlist1 (cdr (assoc "AcDbText" entlist))
  275.                  entlist2 (cdr (assoc "AcDbMText" entlist))
  276.            )
  277.            (if (setq entlist (append entlist1 entlist2))
  278.              (progn (setq vdir (getvar "viewdir"))
  279.                     (mapcar
  280.                       '(lambda (x)
  281.                          (setq zdir1 (xdrx_getpropertyvalue x "normal")
  282.                                pt    (xd::geom:get9pt x 5)
  283.                          )
  284.                          (if (and (equal vdir '(0.0 0.0 1.0) 1e-5)
  285.                                   (equal zdir1 '(0.0 0.0 -1.0) 1e-5)
  286.                              )
  287.                            (progn (xdrx_setpropertyvalue
  288.                                     x
  289.                                     "normal"
  290.                                     (xdrx_vector_negate zdir1)
  291.                                   )
  292.                                   (vl-cmdf ".Move" x "" (xd::geom:get9pt x 5) pt)
  293.                            )
  294.                          )
  295.                        )
  296.                       entlist
  297.                     )
  298.              )
  299.            )
  300.          )
  301.          (progn        (xdrx_entity_TransForm ss (xdrx_drag_getLastMatrix))
  302.                 (setq mRMatrix nil)
  303.          )
  304.        )
  305.        (XD::UndoEnd)
  306.       )
  307.     )
  308.   )
  309.   (xdrx_pickset_redraw ss t)
  310.   (xdrx_document_ucsoff)
  311.   (xdrx_SysVar_Pop)
  312.   (xdrx_end)
  313.   (princ)
  314. )

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

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

发表于 2017-8-20 14:42:05 | 显示全部楼层

(xdrx_drag_initget (+ 2 4 8 16 128 512 65536) st) , ST是什么?

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

使用道具 举报

已领礼包: 8612个

财富等级: 富甲天下

 楼主| 发表于 2017-8-20 15:06:48 | 显示全部楼层
  1. (defun c:XDTB_FREECOPY (/ pj ss)
  2.   (if (and (princ "\n选取要拷贝的实体<退出>:")
  3.            (setq ss (ssget ":L"))
  4.            (setq pj (getpoint "\n拾取基点<退出>:"))
  5.       )
  6.     (XD::Pickset:Drag ss pj (+ 1 2 4 8 16 32 64 128 256 512) 2 t)
  7.   )
  8.   (princ)
  9. )
  10. (defun c:XDTB_FREEMOVE (/ pj ss)
  11.   (if (and (princ "\n选取要拷贝的实体<退出>:")
  12.            (setq ss (ssget ":L"))
  13.            (setq pj (getpoint "\n拾取基点<退出>:"))
  14.       )
  15.     (XD::Pickset:Drag ss pj (+ 1 2 4 8 16 32 64 128 256 512) 2 nil)
  16.   )
  17.   (princ)
  18. )


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

使用道具 举报

已领礼包: 8612个

财富等级: 富甲天下

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

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

发表于 2017-8-21 11:31:50 | 显示全部楼层

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

使用道具 举报

已领礼包: 8612个

财富等级: 富甲天下

 楼主| 发表于 2017-8-21 11:47:36 | 显示全部楼层
单位的电脑只装了2012,回家再试试。不过就是xdrx_drag_jig可以输入距离,难道要改成用它的不用矩阵?xdrx_drag_jig还有个问题,2012下总是出现,就是光标从块或参照上移动时,尤其是比较复杂的块,总出现什么内部错误,退出还无法存盘,所以我后来避免用它。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 145个

财富等级: 日进斗金

发表于 2017-8-21 12:19:44 | 显示全部楼层
(xdrx_drag_initget (+ 2 4 8 16 128 512 65536) st) 改成

(xdrx_drag_initget (+ 2 4 8 16 128 512) st)

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

使用道具 举报

已领礼包: 8612个

财富等级: 富甲天下

 楼主| 发表于 2017-8-21 13:08:02 | 显示全部楼层
那这个65536代表什么?一直没太弄明白。有些xdrx_drag_jig也有这个参数,是不是同样的功能?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 145个

财富等级: 日进斗金

发表于 2017-8-21 13:14:30 | 显示全部楼层

拖动类,只要是用户控制的参数,都一样的。

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-19 18:29 , Processed in 0.221692 second(s), 51 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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