明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1403|回复: 3

[基础] 求助:关于地层钻孔标注的lisp,有点问题

[复制链接]
发表于 2010-7-25 20:42:00 | 显示全部楼层 |阅读模式

我编了一个自动画钻孔的lisp,就是那种地质图上标注钻孔符号,是两个同心圆,两侧各带一个横线,加载这个命令后,在cad上随便点一点,横线未画出来,后来我发现,只有用鼠标滚轮把图拉近,然后再执行这个命令,横线才能画出来了,不知怎么回事,本人刚涉足lisp,还望高手出招。

 

;;画钻孔,以1:2000图为例
;;1:2000比例图中,内圆直径2,外圆直径3.5

(defun c:zk()
  (setq n 2)  ;;设定图纸比例,1:1000 n=1;1:2000 n=2;1:5000 n=5
  (setq pt0 (getpoint "钻孔中心:"))
  (command "circle" pt0 (* 1 n))  ;;画内圆
  (setq en1 (entlast))
  (command "bhatch" "P" "solid" "s" en1 "" "")   ;;填充内圆
  (command "circle" pt0 (* 1.75 n))    ;;画外圆
  (setq pt1 (polar pt0 pi (* 1.75 n)))
  (setq pt2 (polar pt1 pi (* 8 n)))
  (setq pt3 (polar pt0 0 (* 1.75 n)))

  (setq pt4 (polar pt3 0 (* 8 n))) 

  (command "line" pt1 pt2 "")    ;;画左侧横线
  (command "line" pt3 pt4 "")    ;;画右侧横线
  (prin1)
)

 

发表于 2010-7-25 21:06:00 | 显示全部楼层

捕捉关掉就好了

在开头加上 (setq osmode (getvar "osmode"))

                (setvar "osmode" 0)

 

在末尾加上 (setvar "osmode" osmode)

 

这样就没问题了

发表于 2010-7-26 07:31:00 | 显示全部楼层
  1. ;;画钻孔,以1:2000图为例
  2. ;;1:2000比例图中,内圆直径2,外圆直径3.5
  3. (defun c:tt ()
  4.   (setvar "osmode" 0)
  5.   (setq n  2 ; 设定图纸比例, 1:1000 n=1;1:2000 n=2;1:5000 n=5
  6. l1 (* 1.75 n)
  7. l2 (* 4 n)
  8.   )
  9.   (while (setq pt0 (getpoint "\n钻孔中心<退出>: "))
  10.     (command "donut" 0 (* 2 n) pt0 "")
  11.     (command "circle" pt0 l1)
  12.     (setq pt1 (polar pt0 pi l1))
  13.     (setq pt2 (polar pt1 pi l2))
  14.     (setq pt3 (polar pt0 0 l1))
  15.     (setq pt4 (polar pt3 0 l2))
  16.     (command "line" pt1 pt2 "")
  17.     (command "line" pt3 pt4 "")
  18.   )
  19.   (princ)
  20. )
 楼主| 发表于 2010-7-26 16:26:00 | 显示全部楼层

谢谢一楼的piao1887大侠,问题完美解决。

谢谢二楼的xyp1964版主,您修改之后,程序更简洁,且可以连续画钻孔,更高效了,让我理解了while的用法,真羡慕你们呀。

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

本版积分规则

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

GMT+8, 2024-10-2 08:32 , Processed in 0.178092 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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