明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1028|回复: 9

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

[复制链接]
发表于 2019-5-10 08:42:24 | 显示全部楼层 |阅读模式
命令: 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)
  )

"觉得好,就打赏"
还没有人打赏,支持一下
 楼主| 发表于 2019-5-10 14:59:14 | 显示全部楼层
群好冷清阿
发表于 2019-5-11 08:00:20 | 显示全部楼层
本帖最后由 USER2128 于 2019-5-11 08:02 编辑

估计是"fillet"命令存在版本更新
 楼主| 发表于 2019-5-11 08:07:46 | 显示全部楼层
那请问,、
会有办法吗?
发表于 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)
)

 楼主| 发表于 2019-5-19 10:44:20 | 显示全部楼层
   谢谢网友的帮助!!!谢谢

我明白了为什么会丢失了,就是我的习惯用ESC 按键时丢失的,有办法吗
发表于 2019-5-19 11:09:26 | 显示全部楼层
发表于 2019-5-20 11:04:05 | 显示全部楼层
lzg8877 发表于 2019-5-19 10:44
谢谢网友的帮助!!!谢谢

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

你确定过了没有 改过了以后 你按ESC还会丢失捕捉?
 楼主| 发表于 2019-5-20 13:58:45 | 显示全部楼层
是的 我的坏习惯
 楼主| 发表于 2019-5-30 11:49:40 | 显示全部楼层
; 错误: AutoCAD 变量设置被拒绝: "osmode" nil
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2025-4-30 14:33 , Processed in 0.183612 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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