(setvar "cmdecho" 0)
(setvar "blipmode" 0)
(setvar "dimzin" 0)
(vl-load-com) 加载vlax扩展函数
(setq #os1 (getvar "osmode"))取得捕捉设置
(princ "\n请选择多段线")
(setq &kw1 (ssget '((0 . "LWPOLYLINE"))))选择多段线
(if (/= &kw1 nil)如果选择了多段线
(progn
(setvar "osmode" 0)捕捉设置为0
(setq L1 (getdist (strcat "\n请输入圆半径<" "1" ">")))提示输入圆半径
(if (= L1 nil) (setq L1 1))默认输入为1
(if (> L1 0)确认输入的半径为正
(progn
(setq &k1 (ssname &kw1 0))取得一个对象
(while &k1循环绘制
(setq &kw1 (ssdel &k1 &kw1))选择集里面去掉这个对象
(setq #p (mapcar 'cdr (vl-remove-if '(lambda (X) (/= 10 (car x))) (entget &k1))))取得多段线里面的点
(setq p1 (car #p))取得其中一点
(while p1
(setq #p (cdr #p))
(command "circle" p1 L1)绘制圆
(setq p1 (car #p))
)
(setq &k1 (ssname &kw1 0))取得下一个对象
)
)
)
(setvar "osmode" #os1)绘制完成后还原捕捉设置
)
)
(prin1)
)复制到记事本以【.lsp】为后缀命名,加载到AutoCAD,命令为HZY
写了一下,这个程序主要是循环命令的应用以及car,cdr的应用,其它的很简单容易理解。
CAD中画圆弧有几种方法只介绍一种(圆心、起点、端点)。
要画圆弧就需要以上3个要素(圆心、起点、端点)有明确数值,这3个要素可以在程序中设定,也可以定义变量在 *** 作是一一再输入变量数值(输入数值方法与CAD内部命令相同)。
最后用COMMAND执行画弧命令。
代码:
(DEFUN
c:MARC(/
p0,p1,p2)
--MARC为本程序调用命令,也可设成其它字母,前提是不要与CAD内部命令冲突
(setq
p0
(getpoint"o点:"))
------------拾取原点
(setq
p1(getpoint"起点:"))
------------拾取起点
(setq
p2
(getpoint"端点:"))
------------拾取端点
(command
"osmode"
16575)
关掉捕捉以免在绘图时受到影响
(command
"_arc"
"c"
p0
p1
p2)
(command
"osmode"
191)
开捕捉
)
其它画法相似
你这个命令没有变量,可以直接复制程序的部分代码就可以实现你想要的功能。复制代码(setq cen (list 0 0)) (command "circle" cen 5)到cad的输入行,回车即可。欢迎分享,转载请注明来源:内存溢出
评论列表(0条)