明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 872|回复: 7

[提问] 求助,使用这个填充继承特性LSP老是自动取消几何中心捕捉点,有没有大神帮忙修改下

[复制链接]
发表于 2021-11-12 09:30:47 | 显示全部楼层 |阅读模式
2明经币
本帖最后由 pizi158545086 于 2021-11-12 09:49 编辑

求助,使用这个填充继承特性LSP老是自动取消几何中心捕捉点,有没有大神帮忙修改下,调整不影响捕捉,谢谢!
源码:
(defun c:R3(/ e en key n p ss tc_ang tc_col tc_e tc_la tc_name tc_scle tc_vlae)
  (cxsta)
  (vl-load-com)
  (setq en (entlast))
  (if (setq tc_e (car (entsel "\n选择填充源图案:")))
    (progn
      (IF (= (CDR (ASSOC 0 (ENTGET TC_E))) "HATCH")
(PROGN
   (setq tc_vlae (vlax-ename->vla-object tc_e)
  tc_name (vla-get-patternname tc_vlae)
  tc_scle (vla-get-patternscale tc_vlae)
  tc_ang (vla-get-patternangle tc_vlae)
  tc_la (vla-get-layer tc_vlae)
  tc_col (vla-get-color tc_vlae)
   )
   (if (= "_USER" tc_name)
     (command "bhatch"
       "p"
       "U"
       (* 180 (/ tc_ang pi))
       tc_scle
       "y"
       ""
     )
     (command "bhatch"
       "p"
       tc_name
       tc_scle
       (* 180 (/ tc_ang pi))
       ""
     )
   )
   (thpanduan)
   (if (setq ss (cx-en-ss en))
     (progn
       (cx-gs ss tc_col)
       (repeat (setq n (sslength ss))
  (vla-put-layer
    (vlax-ename->vla-object (ssname ss (setq n (1- N))))
    tc_la
  )
       )
     )
   )
)
      )
    )
    (PROMPT "选择的不是填充\n")
  )
  (cxend)
)
     ;api接口 填充判断
(defun thpanduan ()
  (if (setq ss (ssget))
    (command "bhatch" "s" ss "" "") ;如果选择集不为空,则执行对象填充
    (progn    ;如果选择集为空,则执行点选命令
      (prompt "\n请拾取填充内部点:\n")
      (command "bhatch" pause)
      (while (> (getvar "CMDACTIVE") 0) (command PAUSE))
    )
  )
)
     ;返回en之后的选择集
(defun cx-en-ss (en / ss)
  (if en
    (progn
      (setq ss (ssadd))
      (while (entnext en)
(setq ss (ssadd (entnext en) ss))
(setq en (entnext en))
      )
      (if (> (sslength ss) 0)
ss
nil
      )
    )
  )
)
(defun cx-gs (en clo / en clo)
  (cond
    ((= (type en) 'ENAMe)
     (vla-put-Color (vlax-ename->vla-object en) clo)
    )
    ((= (type en) 'PICKSET)
     (repeat (setq i (sslength en))
       (vla-put-Color
  (vlax-ename->vla-object (ssname en (setq i (1- i))))
  clo
       )
     )
    )
    ((= (type en) 'VLA-OBJECT)
     (vla-put-Color en clo)
    )
  )
)

(defun cxsta ()
  (setvar "cmdecho" 0)   ; 关闭命令响应
  (setq $orr *error*)
  (setq *error* #err2)   ; 当程序出错时就会执行#err函数
  (command ".UNDO" "BE")  ; 设置UNDO起点
)
(defun cxend ()
  (command ".UNDO" "E")   ; 设置UNDO终点
  (setq *error* $orr)
  (setvar "osmode" 15359)
  (princ)
)
;;; 出错处理函数
(defun #err2 (s)
  (command ".UNDO" "E")   ; 设置UNDO终点
  (redraw name1 4)
  (redraw name2 4)
  (princ)
  (setq *error* $orr)
)

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

最佳答案

查看完整内容

把这句删了看看 (setvar "osmode" 15359)
发表于 2021-11-12 09:30:48 | 显示全部楼层
把这句删了看看 (setvar "osmode" 15359)
回复

使用道具 举报

发表于 2021-11-12 09:44:08 | 显示全部楼层
什么是几何中心捕捉点?
回复

使用道具 举报

 楼主| 发表于 2021-11-12 09:48:36 | 显示全部楼层
alexmai 发表于 2021-11-12 09:44
什么是几何中心捕捉点?

不好意思  忘记点击上传图片了  就是这个捕捉点设置界面的几何中心

本帖子中包含更多资源

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

x
回复

使用道具 举报

 楼主| 发表于 2021-11-12 09:57:32 | 显示全部楼层
start4444 发表于 2021-11-12 09:53
把这句删了看看 (setvar "osmode" 15359)

可以了 谢谢  
回复

使用道具 举报

发表于 2021-11-12 09:59:59 | 显示全部楼层
我用旧版cad 不需要用这个捕捉

在  (princ) 前上一行,增加

(setvar "osmode" 16383);
回复

使用道具 举报

 楼主| 发表于 2021-11-12 10:06:48 | 显示全部楼层
alexmai 发表于 2021-11-12 09:59
我用旧版cad 不需要用这个捕捉

在  (princ) 前上一行,增加

谢谢帮忙  刚刚已经搞定了
回复

使用道具 举报

发表于 2023-3-22 20:32:54 | 显示全部楼层
不错,值得学习
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-16 12:51 , Processed in 0.175199 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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