明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1855|回复: 5

求助:捕捉的问题

[复制链接]
发表于 2012-3-3 23:43:01 | 显示全部楼层 |阅读模式
  1. (Defun C:v ()  (setvar "cmdecho" 0)  (menucmd "P0=bpf.FM")  (menucmd "P0=*")  (setq famen (getstring (strcat "\阀门类型:")))  (cfm_zhs))(defun cfm_zhs()  (setvar "cmdecho" 0)  (setvar "OSMODE" 16383)  (initget " ")                                          (setq guan (entsel "\n右键退出/拾取管线<支持line或pline>:"))  (cond                                 ( (= guan "") nil)                                          ( (and (= (type guan) 'LIST)                                       (or (= (cdr (assoc 0 (entget (car guan)))) "LINE")               (= (cdr (assoc 0 (entget (car guan)))) "LWPOLYLINE")        )       )   (setq point (cadr guan))  (setq en (entget (car guan)))  (setq en5 (cdr (assoc 0 en)))  (if (= en5 "LINE")  (progn     (setq old (cdr (assoc 10 en)))     (setq old1 (cdr (assoc 11 en)))   )  (progn  (setq snn (assoc 10 en))  (setq old (cdr snn))  (setq sn3 (member snn en))(setq sn4 (cdr sn3))(setq sn5 (assoc 10 sn4))(setq sn6 (member sn5 sn4))(setq sn7 (car sn6))(setq old1 (cdr sn7))  )  )  (setq jiao (angle old old1))  (if (< 1.57 jiao 4.71)  (setq jiao (+ jiao 3.14159)))  (setq jiao1 (angtos jiao 0 4))  (command "insert" famen point "1" "1" jiao1)  (if (= famen "f_fm_jzfx")  (progn  (princ)   )  (progn  (setq en3 (polar point jiao 175))  (setq en4 (polar point (+ pi jiao) 175))  (command "break" guan "f" en3 en4)  )  )                                                    (cfm_zhs)                                                  )    (t (cfm_zhs))                                         )  (princ))

主程序如上,问题是:
1)想要的效果为附件1那样子,但是程序运行,很多时候会出现附件2和附件3的样子,
    也就是说插入块的点(command "insert" famen point "1" "1" jiao1)和打断的起始点(command "break" guan "f" en3 en4)
    en3和en4为polar函数经过变量point计算而得,但是从附件2和3中看出:两个point不是同一点,这就纠结了?
2)假如程序中没有(setvar "OSMODE" 16383),当关闭cad中的捕捉时候,运行程序会出现附件4那个样子,加上去了,就没事了
   所以我猜想为题1)很有可能也是捕捉的问题,可能弄了好多天都没弄出来,希望论坛里的高手帮忙解决下!


本帖子中包含更多资源

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

x
 楼主| 发表于 2012-3-3 23:45:24 | 显示全部楼层
不好意思,住程序上传的太乱了
源码:
(Defun C:v ()
  (setvar "cmdecho" 0)
  (menucmd "P0=bpf.FM")
  (menucmd "P0=*")
  (setq famen (getstring (strcat "\阀门类型:")))
  (cfm_zhs)
)
(defun cfm_zhs()
  (setvar "cmdecho" 0)
  (setvar "OSMODE" 16383)
  (initget " ")                                       
  (setq guan (entsel "\n右键退出/拾取管线<支持line或pline>:"))
  (cond                             
    ( (= guan "") nil)                                      
    ( (and (= (type guan) 'LIST)                           
           (or (= (cdr (assoc 0 (entget (car guan)))) "LINE")
               (= (cdr (assoc 0 (entget (car guan)))) "LWPOLYLINE")
       )
      )
  (setq point (cadr guan))
  (setq en (entget (car guan)))
  (setq en5 (cdr (assoc 0 en)))
  (if (= en5 "LINE")
  (progn
     (setq old (cdr (assoc 10 en)))
     (setq old1 (cdr (assoc 11 en)))
   )
  (progn
  (setq snn (assoc 10 en))
  (setq old (cdr snn))
  (setq sn3 (member snn en))
(setq sn4 (cdr sn3))
(setq sn5 (assoc 10 sn4))
(setq sn6 (member sn5 sn4))
(setq sn7 (car sn6))
(setq old1 (cdr sn7))
  )
  )
  (setq jiao (angle old old1))
  (if (< 1.57 jiao 4.71)
  (setq jiao (+ jiao 3.14159))
)
  (setq jiao1 (angtos jiao 0 4))
  (command "insert" famen point "1" "1" jiao1)
  (if (= famen "f_fm_jzfx")
  (progn
  (princ)
   )
  (progn
  (setq en3 (polar point jiao 175))
  (setq en4 (polar point (+ pi jiao) 175))
  (command "break" guan "f" en3 en4)
  )
  )                                             
      (cfm_zhs)                                             
    )
    (t (cfm_zhs))                                       
  )
  (princ)
)
发表于 2012-3-4 12:17:11 | 显示全部楼层
各点计算全部使用计算所得,前面不要(setvar "OSMODE" 16383)
关闭捕捉试试.
不要依靠捕捉设置.
仅提供建议和思路,程序自行解决.
 楼主| 发表于 2012-3-4 12:34:42 | 显示全部楼层
很感谢你的建议
不使用(setvar "OSMODE" 16383),当关闭cad的捕捉时:
(setq guan (entsel "\n右键退出/拾取管线<支持line或pline>:"))
(setq point (cadr guan))
得到的point并不在guan上,如附件4,但是(command "break" guan "f" en3 en4)打断的点竟然又会正常
这就奇怪了,难道一定要再加一句getpoint函数取代(setq point (cadr guan))吗?
这样就增加了实际的工作量了
发表于 2012-3-4 20:14:45 | 显示全部楼层
应该完成输入后关闭捕捉
 楼主| 发表于 2012-3-4 20:36:31 | 显示全部楼层
zdqwy19 发表于 2012-3-4 20:14
应该完成输入后关闭捕捉

谢谢你,能说的具体点么?
我测试了下只有在 (command "insert" famen point "1" "1" jiao1)前必须打开捕捉才不会出现附件4那样的情况
假如在 程序运行到 (command "insert" famen point "1" "1" jiao1),捕捉是关闭的,必定会出现附件4那样的情况,不知道是什么原因
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-24 16:39 , Processed in 0.159712 second(s), 29 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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