求lisp程序,根据圆自动绘制圆弧

详细要求见附图,要求加载lisp程序后,我输入yh后,点击屏幕中原,自动画圆弧并自动填充,能自动画圆弧是基本要求,能自动填充更好,如果能同时选择多个圆并填充更好。(def... 详细要求见附图,要求加载lisp程序后,我输入yh后,点击屏幕中原,自动画圆弧并自动填充,能自动画圆弧是基本要求,能自动填充更好,如果能同时选择多个圆并填充更好。
(defun C:YH(/ origin radius i-radius half-r origin-x origin-y os) (setq ent (car (entsel "\n请选择圆>")));提取实体圆 (setq entdata (entget ent(list "*"))) (setq origin (cdr (assoc 10 entdata)));;提取圆心点坐标 (setq radius (cdr (assoc 40 entdata)));;提取圆半径 (setq half-r (/ radius 2)) (setq sep (/ radius 5)) (setq sepp (* sep 4)) (setq origin-x (car origin)) ;取中心点的X坐标值 (setq origin-y (cadr origin)) ;取中心点的Y坐标值 (command "ARC" ;圆圆弧命令 (list origin-x (+ origin-y radius)) ;圆弧起点 (list (- origin-X SEPP) origin-y) (list origin-x (- origin-y radius)) ;圆弧终点 ) (princ) ;静默退出 )

我上面弄的,只能达到基本要求,求实现能自动填充,并一开始就能同时选择多个圆。
展开
 我来答
dnbc1
2013-07-11 · TA获得超过977个赞
知道小有建树答主
回答量:1235
采纳率:92%
帮助的人:404万
展开全部
;用下面程序一试
(defun C:YH()
(setq cm (getvar "cmdecho")
os (getvar "osmode")
)
(setvar "cmdecho" 0)
(command "_undo" "be")
(princ "\n请选择圆")
(if (setq ssa (ssget '((0 . "circle"))))
(progn
(setvar "osmode" 0)
(setq n (sslength ssa) i 0)
(repeat n
(setq ent (ssname ssa i)
dxf (entget ent)
r (cdr (assoc 40 dxf))
po (cdr (assoc 10 dxf))
i (1+ i)
)

(setq p1 (mapcar '+ po (list 0.0 r))
p2 (mapcar '+ po (list (* (1- 0.2) r) 0.0))
p3 (mapcar '+ po (list 0.0 (- r)))
p4 (mapcar '+ po (list (* (1- 0.1) r) 0.0))
)
(command "_arc" p1 p2 p3)
(command "_bhatch" "p" "ANSI31" (* 0.04 r) "" p4 "")
)
)
)
(command "_undo" "e")
(setvar "osmode" os) (setvar "cmdecho" cm)
(princ)
)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
AiPPT
2024-09-19 广告
随着AI技术的飞速发展,如今市面上涌现了许多实用易操作的AI生成工具1、简介:AiPPT: 这款AI工具智能理解用户输入的主题,提供“AI智能生成”和“导入本地大纲”的选项,生成的PPT内容丰富多样,可自由编辑和添加元素,图表类型包括柱状图... 点击进入详情页
本回答由AiPPT提供
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式