关于改变线宽,求高手帮忙优化
本帖最后由 baiyier1112 于 2013-4-21 16:11 编辑改变线宽,谁能帮优化一下:
1.在输入线宽的时候,默认值是30,输入线宽后具有记忆功能。
2.输入命令后,如果不选择,直接回车,程序中断退出。
代码如下:
(defun C:bx () ;
(setq ss (ssget))
(prompt "\n请选择改变线宽的线<退出>:")
(SETQ WIDTH (GETREAL "\n请输入宽度:"))
(command "_pedit" "M" ss "" "_w" WIDTH "j" "" "")
(princ)
) ;;改变线宽
以下是改完的
(defun C:bbxx (/ WIDTH ss)
(if oldWIDTH
(SETQ WIDTH (GETREAL (strcat "\n请输入粗线宽度<" (rtos oldWIDTH 2 2) ">:"))
)
(SETQ WIDTH (GETREAL "\n请输入粗线宽度:"))
)
(if WIDTH (setq oldWIDTH WIDTH)
(setq WIDTH oldWIDTH)
)
(if
(progn (prompt "\n请选择改变线宽的线<退出>:")
(setq ss (ssget))
)
(command "_pedit" "M" ss "" "_w" WIDTH "j" "" "")
(princ)
)
)
(defun C:bx (/ ss WIDTH)
(while (progn (prompt "\n请选择改变线宽的线<退出>:")
(setq ss (ssget))
)
(if oldWIDTH
(SETQ
WIDTH (GETREAL (strcat "\n请输入宽度<" (rtos oldWIDTH 2 2) ">:"))
)
(SETQ WIDTH (GETREAL "\n请输入宽度:"))
)
(if WIDTH
(setq oldWIDTH WIDTH)
(setq WIDTH oldWIDTH)
)
(command "_pedit" "M" ss "" "_w" WIDTH "j" "" "")
(princ)
)
) 本帖最后由 baiyier1112 于 2013-4-11 22:06 编辑
Gu_xl 发表于 2013-4-11 13:42 http://bbs.mjtd.com/static/image/common/back.gif
万分感谢版主的无私帮助
今天我使用了一下,想将程序改一下:
第一步,输入调用命令bx:
第二步:输入线宽,显示为"输入粗线宽度<0.3>:”如回车则默认为0.3,输入新值为0.5,则线宽为0.5
第三步:提示“选择要改变线宽的实体<退出>:”,如果回车则退出。选择则执行
由于lsp编程的逻辑关系我不会,希望版主帮忙实现一下,拜谢
baiyier1112 发表于 2013-4-11 21:46 static/image/common/back.gif
万分感谢版主的无私帮助
今天我使用了一下,想将程序改一下:
第一步,输入调用命令bx:
到我的网络U盘去下载一个pew.lsp试试。 本帖最后由 baiyier1112 于 2013-4-12 00:53 编辑
我自己调整了一下位置,但是有问题,
1.操作结束后,会提示“选择对象:”,需要输入回车才结束
(defun C:bbxx (/ WIDTH ss)
(if oldWIDTH
(SETQ WIDTH (GETREAL (strcat "\n请输入粗线宽度<" (rtos oldWIDTH 2 2) ">:"))
)
(SETQ WIDTH (GETREAL "\n请输入粗线宽度:"))
)
(if WIDTH (setq oldWIDTH WIDTH)
(setq WIDTH oldWIDTH)
)
(while
(progn (prompt "\n请选择改变线宽的线<退出>:")
(setq ss (ssget))
)
(command "_pedit" "M" ss "" "_w" WIDTH "j" "" "")
)
(princ)
)
ll_j 发表于 2013-4-11 22:14 static/image/common/back.gif
到我的网络U盘去下载一个pew.lsp试试。
下载了,但是执行的时候出现问题,cad操作及提示如下:
命令: pew
Change Pline/Line/Arc/Circle/<ALL>:
Select objects to change width:
选择对象: 指定对角点: 找到 5 个
选择对象:
Give pline width <30.0>:
----- 5
无效的选项关键字。
输入选项
[闭合(C)/合并(J)/宽度(W)/编辑顶点(E)/拟合(F)/样条曲线(S)/非曲线化(D)/线型生成(L)
/放弃(U)]: *取消* 本帖最后由 baiyier1112 于 2013-4-12 08:52 编辑
调整后的在8楼。
换了个语句,差不多搞定了。(defun C:bbxx (/ WIDTH ss)
(if oldWIDTH
(SETQ WIDTH (GETREAL (strcat "\n请输入粗线宽度<" (rtos oldWIDTH 2 2) ">:"))
)
(SETQ WIDTH (GETREAL "\n请输入粗线宽度:"))
)
(if WIDTH (setq oldWIDTH WIDTH)
(setq WIDTH oldWIDTH)
)
(if
(progn (prompt "\n请选择改变线宽的线<退出>:")
(setq ss (ssget))
)
(command "_pedit" "M" ss "" "_w" WIDTH "j" "" "")
(princ)
)
) 第一次允许没老线宽,让你给定线宽又不给肯定出错啊!有老线宽后就可以不给了。
你可再加一句假如输入的为空且没有老线宽就默认多少线宽,那么就不怕第一次运行出错拉 wowan1314 发表于 2013-4-12 01:39 static/image/common/back.gif
第一次允许没老线宽,让你给定线宽又不给肯定出错啊!有老线宽后就可以不给了。
你可再加一句假如输入的 ...
默认线宽我不会加。8楼的是我调整后的程序,有空请帮忙给加一下默认线宽,谢谢
页:
[1]
2