用lisp语言给多段线段点画圆

用lisp语言给多段线段点画圆,第1张

(defun C:HZY ( / #os1 #p &k1 &kw1 l1 p1 x)

 (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的输入行,回车即可。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11734093.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-18
下一篇 2023-05-18

发表评论

登录后才能评论

评论列表(0条)

保存