lzg8877 发表于 2019-5-10 08:42:24

2014版本正常使用,2014以后捕捉丢失,经多次尝试没能修正。望友人出手相助!

命令: FD 0.0
选择要打断(延伸)的线:
选择另一条线:
选择要打断(延伸)的线:*取消*

调用(*push-error-using-command*)前无法从 *error* 调用(command)。
建议将(command)调用转换为(command-s)。

(defun c:fd (/ rr backup_rr ent1 ent2 ent3)
(setq *error*_bak *error*)
        (setq *error* *error*_non)
(setvar "osmode" 951)

(setvar "CMDECHO" 0)
(princ)

(vl-load-com)
(setq backup_rr (getvar "FILLETRAD"))
(princ backup_rr)

(initget 4)

(command "undo" "be")
(setvar "OSMODE" 0)
(while (and (setq ent1 (entsel "\n选择要打断(延伸)的线:"))
            (setq ent2 (entsel "\n选择另一条线:"))
         )
    (command "copy" (car ent2) "" '(0 0) '(0 0))
    (setq ent3          (entlast)
          obj3          (vlax-ename->vla-object ent3)
          len3          (vlax-curve-getdistatparam
                  obj3
                  (vlax-curve-getendparam obj3)
                  )
    )
    (command "fillet" "T" "T" ent1 ent2)
    (setq obj2 (vlax-ename->vla-object (car ent2))
          len2 (vlax-curve-getdistatparam
               obj2
               (vlax-curve-getendparam obj2)
               )
    )


    (if      (<= len2 len3)
      (vla-delete obj2)
      (vla-delete obj3)
    )
    (princ)
)
(command "undo" "e")
   (setvar "osmode" 951)
(princ)
)
(defun *error*_non (msg)
        (command)
        (setq *error* *error*_bak)
        (setvar "osmode" 951)
        (print msg)
)

lzg8877 发表于 2019-5-10 14:59:14

群好冷清阿:'(

USER2128 发表于 2019-5-11 08:00:20

本帖最后由 USER2128 于 2019-5-11 08:02 编辑

估计是"fillet"命令存在版本更新

lzg8877 发表于 2019-5-11 08:07:46

那请问,、
会有办法吗?

wen1235 发表于 2019-5-16 17:30:23

;;;改了一下 2014 捕捉不会丢失

(defun c:fd (/ rr backup_rr ent1 ent2 ent3)
(vl-load-com) (setq *error*_bak *error*)
(defun *error* (msg) (command) (setq *error* *error*_bak) (setvar "osmode" 951) (print msg))
(setvar "osmode" 951)
(setvar "CMDECHO" 0)
(setq backup_rr (getvar "FILLETRAD"))
(princ backup_rr)
(initget 4)
(command "undo" "be")
(setvar "OSMODE" 0)
(while (and (setq ent1 (entsel "\n选择要打断(延伸)的线:")) (setq ent2 (entsel "\n选择另一条线:")))
    (command "copy" (car ent2) "" '(0 0) '(0 0))
    (setq ent3 (entlast)
          obj3 (vlax-ename->vla-object ent3)
          len3 (vlax-curve-getdistatparam obj3 (vlax-curve-getendparam obj3))
    )
    (command "fillet" "T" "T" ent1 ent2)
    (setq obj2 (vlax-ename->vla-object (car ent2))
          len2 (vlax-curve-getdistatparam obj2 (vlax-curve-getendparam obj2))
    )
    (if        (<= len2 len3)
      (vla-delete obj2)
      (vla-delete obj3)
    )
)
(command "undo" "e")
(setvar "osmode" 951)
(princ)
)

lzg8877 发表于 2019-5-19 10:44:20

   谢谢网友的帮助!!!谢谢

我明白了为什么会丢失了,就是我的习惯用ESC 按键时丢失的,有办法吗

Andyhon 发表于 2019-5-19 11:09:26

Ref:
http://bbs.mjtd.com/forum.php?mod=viewthread&tid=179509

wen1235 发表于 2019-5-20 11:04:05

lzg8877 发表于 2019-5-19 10:44
谢谢网友的帮助!!!谢谢

我明白了为什么会丢失了,就是我的习惯用ESC 按键时丢失的,有办法吗

你确定过了没有 改过了以后 你按ESC还会丢失捕捉?

lzg8877 发表于 2019-5-20 13:58:45

是的 我的坏习惯

lzg8877 发表于 2019-5-30 11:49:40

; 错误: AutoCAD 变量设置被拒绝: "osmode" nil
页: [1]
查看完整版本: 2014版本正常使用,2014以后捕捉丢失,经多次尝试没能修正。望友人出手相助!