命令循环执行大集合!
大师们不要说我是标题党哦!我想做一个集合贴,对我们新手很有帮助!希望大师们不吝赐教!谢谢!
例1:画圆
先输入命令:circle→指定点→输半径→结束
那么我们要画同样直径的圆就要重复执行上面3步,通过LISP简化,我们可以省去两步,指定点就好了!(defun c:tt1 (/ os ce dd b pt rr)
(setq os (getvar "osmode")
ce (getvar "cmdecho")
)
(setvar "osmode" 39)
(setvar "cmdecho" 0)
(setq dd (getreal "\n输入圆直径<1>:"))
(if (= dd nil)
(setq dd 1.0)
)
(setq rr (/ dd 2))
(setq b 1)
(while (<= b 100)
(setq pt (getpoint "\n选择放置点,空格退出:"))
(if (not (null pt))
(progn
(command "circle" pt rr)
(setq b (+ 1 b))
(princ)
)
(setq b 101)
)
)
(princ "\n程序退出!")
(setvar "osmode" os)
(setvar "cmdecho" ce)
(princ)
)
虽然不会用到,但是还是点个赞 来晚了也要标记下 学习了,谢谢楼主! 本帖最后由 xiaolong1487 于 2014-9-21 11:12 编辑
例2. 再来一个,重复执行对齐标注的!
引用“http://bbs.mjtd.com/thread-111429-1-1.html”
在这里感谢SunSpring 琴剑江山_10184 两位朋友的帮助(defun c:dli ( / bpt ent f str)
(prompt "创建线性标注")
(setq f t)
(setq str "或 <选择对象>")
(while (setq bpt (getpoint (strcat "\n指定第一条尺寸界线原点" str ":")))
(setq f nil)
(setq str "")
(command ".dimlinear")
(setvar "cmdecho" 1)
(command bpt)
(while (> (getvar "cmdactive") 0)
(command pause)
)
(setvar "cmdecho" 0)
)
(while (and f (setq ent (entsel "\n选择标注对象:")))
(command ".dimlinear" "")
(setvar "cmdecho" 1)
(command (cadr ent))
(while (> (getvar "cmdactive") 0)
(command pause)
)
(setvar "cmdecho" 0)
)
(princ)
) 本帖最后由 xiaolong1487 于 2014-9-21 11:26 编辑
这个是在群里请教时,llsheng_73 兄弟教我的,我运用的还不是很好!例3. 连续坐标标注(defun c:tt3()
(while t
(command "_dimordinate"(setq pt(getpoint))(getpoint pt))
(command "_dimordinate"pt(getpoint pt)))
) 方法应该有很多,而且更简单,可是我都不知道,欢迎各位大大指教! 还不错!!!!由帮助 又来学会一招 我也发一个,论坛上谁写的我不记得了,很早以前下的
(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)
) zkq1212 发表于 2014-9-24 08:17 static/image/common/back.gif
我也发一个,论坛上谁写的我不记得了,很早以前下的
(defun c:mdimlinear ();;线性标注
(setq en ...
很好,谢谢! 其实这种效果cad自带的就有了,根本不用去编个lisp实现。
圆:指定一次半径之后,再次画圆就会有一个默认半径,直接确定就行。
标注:命令-->>确定-->>点你要标注的线 好吧,可能是我多此一举了!
页:
[1]
2