明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 359|回复: 2

[提问] 求助关于子函数改造

[复制链接]
发表于 2019-7-25 17:35 | 显示全部楼层 |阅读模式
请教一下,如何把circle4改为子函数?
主要作用在于自动找圆离光标点最近的象限点


(defun c:13()
(setq p1 (getpoint"\n请指定基点标注第一点:"))


(if (setq ss (ssget p1 '((0 . "circle,arc"))) )
(progn
(setq i p1)
(circle4 ss)
(setq p1 i)
) )


(command "dimlinear" "non" p1 "\\""\\")
(while
(setq p2 (getpoint p1"\n请指定基点标注下一点:"))


(if (setq ss (ssget p2 '((0 . "circle,arc"))) )
(progn
(setq i p2)
(circle4 ss)
(setq p2 i)
) )
(command "dimlinear" "non" p1 "non" p2 "\\") )
(while (= 1 (getvar "cmdactive"))(command"\\"))
(timea);(c:001) ;0层前置
(princ))


(defun circle4(ss / c r) ;获取圆或圆弧四象限点
(setq ss (entget (ssname (ssget":e:s") 0)))
(setq c (cdr (assoc 10 ss)) ;圆心
r    (cdr (assoc 40 ss)) ;半径
o1 (mapcar '- c (list r 0)) ;左
o2 (mapcar '+ c (list 0 r)) ;上
o3 (mapcar '+ c (list r 0)) ;右
o4 (mapcar '- c (list 0 r)) ;下
)
(if (<= (distance i o1) (* r 0.3)) (setq i o1))
(if (<= (distance i o2) (* r 0.3)) (setq i o2))
(if (<= (distance i o3) (* r 0.3)) (setq i o3))
(if (<= (distance i o4) (* r 0.3)) (setq i o4))
(princ))


"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2019-7-25 18:29 | 显示全部楼层
(osnap p "qua")
 楼主| 发表于 2019-7-25 20:29 来自手机 | 显示全部楼层
自贡黄明儒 发表于 2019-7-25 18:29
(osnap p "qua")

有条件限制的,≤0.3r
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-5-4 14:39 , Processed in 0.247265 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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