带圆角矩形
本帖最后由 tfanghui 于 2022-9-1 00:41 编辑此程序借鉴
怎么在新图层进行标注完成后返回当前图层
http://bbs.mjtd.com/forum.php?mo ... 137&fromuid=7330607
(出处: 明经CAD社区)
图层返回但是没有成功,不知道少了什么代码。
带圆角的矩形,美中不足的是:
1、画这完这个带圆角矩形要重新设置矩形的圆角,才可以画正常不带圆角的矩形,
2、不可以返回原来的图层,返回图层的代码在别的程序可以运行,在这里似乎不起作用。
(defun c:R5(/ old_lay vv layer)
(setq old_lay (getvar "clayer")) ;保存当前图层
(setq vv (getvar "osmode")) ;保存当前捕捉方式
(command "layer" "m" "矩形" "c" "3" "" "")
(command "RECTANG" "F" 5 "")
(command "RECTANG" "F" 0 "")
(setvar "osmode" vv) ;恢复原先捕捉方式
(setvar "clayer" old_lay) ;恢复原先图层
(princ)
)
哪位大神指点一下!!谢谢!!
再提供一种思路吧!
(defun c:R5(/ old_lay)
(setq old_lay (getvar "clayer")) ;保存当前图层
(vl-cmdf "layer" "m" "矩形" "c" "3" "" "")
(vl-cmdf "RECTANG" pause pause)
(vl-cmdf "fillet" "p" "r" 5 (entlast))
(setvar "clayer" old_lay) ;恢复原先图层
(princ)
) 这样应该可以了:
(defun c:R5 (/ old_lay vv layer)
(setq old_lay (getvar "clayer")) ;保存当前图层
(setq vv (getvar "osmode")) ;保存当前捕捉方式
(command "layer" "m" "矩形" "c" "3" "" "")
(command "RECTANG" "F" 5)
(while (> (getvar "CMDACTIVE") 0) (command PAUSE))
(setvar "osmode" vv) ;恢复原先捕捉方式
(setvar "clayer" old_lay) ;恢复原先图层
(command "RECTANG" "F" 0)
(command)
(princ)
) 是不是这样:
(defun c:R5 (/ old_lay vv layer)
(setq old_lay (getvar "clayer")) ;保存当前图层
(setq vv (getvar "osmode")) ;保存当前捕捉方式
(command "layer" "m" "矩形" "c" "3" "" "")
(command "RECTANG" "F" 5 pause)
(setvar "osmode" vv) ;恢复原先捕捉方式
(setvar "clayer" old_lay) ;恢复原先图层
(princ)
) ssyfeng 发表于 2022-9-1 09:10
是不是这样:
(defun c:R5 (/ old_lay vv layer)
(setq old_lay (getvar "clayer")) ;保存当前图层
你好,大神,图层可以返回了,感谢指点,但是恢复圆角为直角,还是不行, ssyfeng 发表于 2022-9-1 11:16
这样应该可以了:
(defun c:R5 (/ old_lay vv layer)
(setq old_lay (getvar "clayer")) ;保存当前图层
...
原理是你 多用用F快捷键就知道,每一次调用F圆角命令,系统都会自动记录上次设定R半径,要想恢复原来都R,必须记录原先的R,然后再恢复。你原先都R正好是0而已 liuhe 发表于 2022-9-1 14:54
原理是你 多用用F快捷键就知道,每一次调用F圆角命令,系统都会自动记录上次设定R半径,要想恢复原来都R ...
是的,所以这个代码就比较长,后面的是画好矩形再倒角,省去了恢复的步骤。 (defun c:JLQ (/ old_lay vv layer)
(setq old_lay (getvar "clayer")) ;保存当前图层
(setq vv (getvar "osmode")) ;保存当前捕捉方式
(setq rad (getdist "输入直径<0>::"))
(if (not rad)(setq rad 0));设置默认值为0
(command "layer" "m" "矩形" "c" "3" "" "")
(command "rectang" "F" rad)
(while (> (getvar "cmdactive") 0) (command pause))
(setvar "osmode" vv) ;恢复原先捕捉方式
(setvar "clayer" old_lay) ;恢复原先图层
(command)
(princ)
)
页:
[1]