明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 4246|回复: 13

[讨论] 命令循环执行大集合!

[复制链接]
发表于 2014-9-21 11:06 | 显示全部楼层 |阅读模式
大师们不要说我是标题党哦!
我想做一个集合贴,对我们新手很有帮助!希望大师们不吝赐教!谢谢!
例1:画圆
  先输入命令:circle→指定点→输半径→结束
那么我们要画同样直径的圆就要重复执行上面3步,通过LISP简化,我们可以省去两步,指定点就好了!
  1. (defun c:tt1 (/ os ce dd b pt rr)
  2.   (setq os (getvar "osmode")
  3.         ce (getvar "cmdecho")
  4.   )
  5.   (setvar "osmode" 39)
  6.   (setvar "cmdecho" 0)
  7.   (setq dd (getreal "\n输入圆直径<1>:"))
  8.   (if (= dd nil)
  9.     (setq dd 1.0)
  10.   )
  11.   (setq rr (/ dd 2))
  12.   (setq b 1)
  13.   (while (<= b 100)
  14.     (setq pt (getpoint "\n选择放置点,空格退出:"))
  15.     (if (not (null pt))
  16.       (progn
  17.         (command "circle" pt rr)
  18.         (setq b (+ 1 b))
  19.         (princ)
  20.       )
  21.       (setq b 101)
  22.     )
  23.   )
  24.   (princ "\n程序退出!")
  25.   (setvar "osmode" os)
  26.   (setvar "cmdecho" ce)
  27.   (princ)
  28. )

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x

点评

学习下菜单宏的知识,就不需要写这么多代码了。*^C^Cc;\1;  发表于 2014-9-21 12:10
"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2018-4-25 07:58 | 显示全部楼层
来晚了也要标记下
发表于 2019-8-23 16:58 | 显示全部楼层
学习了,谢谢楼主!
 楼主| 发表于 2014-9-21 11:07 | 显示全部楼层
本帖最后由 xiaolong1487 于 2014-9-21 11:12 编辑

例2. 再来一个,重复执行对齐标注的!
引用“http://bbs.mjtd.com/thread-111429-1-1.html
在这里感谢SunSpring 琴剑江山_10184 两位朋友的帮助
  1. (defun c:dli ( / bpt ent f str)
  2.   (prompt "创建线性标注")
  3.   (setq f t)
  4.   (setq str "或 <选择对象>")
  5.   (while (setq bpt (getpoint (strcat "\n指定第一条尺寸界线原点" str ":")))
  6.     (setq f nil)
  7.     (setq str "")
  8.     (command ".dimlinear")
  9.     (setvar "cmdecho" 1)
  10.     (command bpt)
  11.     (while (> (getvar "cmdactive") 0)
  12.       (command pause)
  13.     )
  14.     (setvar "cmdecho" 0)
  15.   )
  16.   (while (and f (setq ent (entsel "\n选择标注对象:")))
  17.     (command ".dimlinear" "")
  18.     (setvar "cmdecho" 1)
  19.     (command (cadr ent))
  20.     (while (> (getvar "cmdactive") 0)
  21.       (command pause)
  22.     )
  23.     (setvar "cmdecho" 0)
  24.   )
  25.   (princ)
  26. )

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
 楼主| 发表于 2014-9-21 11:13 | 显示全部楼层
本帖最后由 xiaolong1487 于 2014-9-21 11:26 编辑

这个是在群里请教时,llsheng_73 兄弟教我的,我运用的还不是很好!例3. 连续坐标标注
  1. (defun c:tt3()
  2.   (while t
  3.     (command "_dimordinate"(setq pt(getpoint))(getpoint pt))
  4.     (command "_dimordinate"pt(getpoint pt)))
  5.   )

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
 楼主| 发表于 2014-9-21 11:16 | 显示全部楼层
方法应该有很多,而且更简单,可是我都不知道,欢迎各位大大指教!
发表于 2014-9-21 11:38 | 显示全部楼层
还不错!!!!由帮助
发表于 2014-9-21 16:34 | 显示全部楼层
又来学会一招
发表于 2014-9-24 08:17 | 显示全部楼层
我也发一个,论坛上谁写的我不记得了,很早以前下的
(defun c:mdimlinear ();;线性标注
(setq        ent (entlast)
        key t
  )
  (if ent
    (setq jb (cdr (assoc 5 (entget ent))))
  )
  (while key
    (command "dimlinear" pause pause pause)
    (command "chprop" (entlast) "" "c" "BYLAYER" "lt" "BYLAYER" "la" "03-标注层" "")
   (if        (setq ent1 (entlast))
     (progn
        (if (/= (cdr (assoc 5 (entget ent1))) jb)
          (progn
            (setq key t)
            (setq jb (cdr (assoc 5 (entget ent1))))
          )
          (setq key nil)
        )
     )
     (setq key nil)
    )
  )
  (princ)
)
 楼主| 发表于 2014-9-24 09:22 | 显示全部楼层
zkq1212 发表于 2014-9-24 08:17
我也发一个,论坛上谁写的我不记得了,很早以前下的
(defun c:mdimlinear ();;线性标注
(setq        en ...

很好,谢谢!
发表于 2014-10-8 00:37 | 显示全部楼层
其实这种效果cad自带的就有了,根本不用去编个lisp实现。
圆:指定一次半径之后,再次画圆就会有一个默认半径,直接确定就行。
标注:命令-->>确定-->>点你要标注的线
 楼主| 发表于 2014-10-11 19:43 | 显示全部楼层
好吧,可能是我多此一举了!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-5-5 23:29 , Processed in 0.775465 second(s), 30 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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