明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 3060|回复: 12

[讨论] 关于改变线宽,求高手帮忙优化

[复制链接]
发表于 2013-4-11 12:53:36 | 显示全部楼层 |阅读模式
本帖最后由 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)
) ;;改变线宽

以下是改完的

  1. (defun C:bbxx (/ WIDTH ss)                                             
  2.                 (if oldWIDTH
  3.                         (SETQ WIDTH (GETREAL (strcat "\n请输入粗线宽度<" (rtos oldWIDTH 2 2) ">:"))
  4.                         )
  5.                         (SETQ WIDTH (GETREAL "\n请输入粗线宽度:"))
  6.                           )
  7.                 (if WIDTH (setq oldWIDTH WIDTH)
  8.                         (setq WIDTH oldWIDTH)
  9.                      )
  10.         (if
  11.                   (progn (prompt "\n请选择改变线宽的线<退出>:")
  12.                         (setq ss (ssget))
  13.                 )
  14.                 (command "_pedit" "M" ss "" "_w" WIDTH "j" "" "")
  15.                  (princ)
  16.         )
  17. )

发表于 2013-4-11 13:42:56 | 显示全部楼层
  1. (defun C:bx (/ ss WIDTH)                                             
  2.   (while (progn (prompt "\n请选择改变线宽的线<退出>:")
  3.                 (setq ss (ssget))
  4.                 )
  5.     (if oldWIDTH
  6.       (SETQ
  7.         WIDTH (GETREAL (strcat "\n请输入宽度<" (rtos oldWIDTH 2 2) ">:"))
  8.         )
  9.       (SETQ WIDTH (GETREAL "\n请输入宽度:"))
  10.       )
  11.     (if WIDTH
  12.       (setq oldWIDTH WIDTH)
  13.       (setq WIDTH oldWIDTH)
  14.       )
  15.     (command "_pedit" "M" ss "" "_w" WIDTH "j" "" "")
  16.     (princ)
  17.     )
  18.   )

点评

平面内很好使,三维线未果  发表于 2013-11-27 09:51
 楼主| 发表于 2013-4-11 21:46:56 | 显示全部楼层
本帖最后由 baiyier1112 于 2013-4-11 22:06 编辑
Gu_xl 发表于 2013-4-11 13:42


万分感谢版主的无私帮助
今天我使用了一下,想将程序改一下:
第一步,输入调用命令bx:
第二步:输入线宽,显示为"输入粗线宽度<0.3>:”如回车则默认为0.3,输入新值为0.5,则线宽为0.5
第三步:提示“选择要改变线宽的实体<退出>:”,如果回车则退出。选择则执行
由于lsp编程的逻辑关系我不会,希望版主帮忙实现一下,拜谢

点评

在程序最前面加一句即可: (if (null oldWIDTH) (setq oldWIDTH 0.3))  发表于 2013-4-12 09:35
发表于 2013-4-11 22:14:36 | 显示全部楼层
baiyier1112 发表于 2013-4-11 21:46
万分感谢版主的无私帮助
今天我使用了一下,想将程序改一下:
第一步,输入调用命令bx:

到我的网络U盘去下载一个pew.lsp试试。
 楼主| 发表于 2013-4-11 22:21:10 | 显示全部楼层
本帖最后由 baiyier1112 于 2013-4-12 00:53 编辑

我自己调整了一下位置,但是有问题,
1.操作结束后,会提示“选择对象:”,需要输入回车才结束

  1. (defun C:bbxx (/ WIDTH ss)                                             

  2.     (if oldWIDTH
  3.       (SETQ WIDTH (GETREAL (strcat "\n请输入粗线宽度<" (rtos oldWIDTH 2 2) ">:"))
  4.       )
  5.                   (SETQ WIDTH (GETREAL "\n请输入粗线宽度:"))
  6.                     )
  7.     (if WIDTH (setq oldWIDTH WIDTH)
  8.                   (setq WIDTH oldWIDTH)
  9.                )
  10.     (while
  11.       (progn (prompt "\n请选择改变线宽的线<退出>:")
  12.                         (setq ss (ssget))
  13.                 )

  14.     (command "_pedit" "M" ss "" "_w" WIDTH "j" "" "")
  15.    )
  16.    (princ)
  17. )

 楼主| 发表于 2013-4-11 22:37:35 | 显示全部楼层
ll_j 发表于 2013-4-11 22:14
到我的网络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)]: *取消*
 楼主| 发表于 2013-4-11 22:42:55 | 显示全部楼层
本帖最后由 baiyier1112 于 2013-4-12 08:52 编辑

调整后的在8楼。
 楼主| 发表于 2013-4-12 01:06:14 | 显示全部楼层
换了个语句,差不多搞定了。
  1. (defun C:bbxx (/ WIDTH ss)                                             

  2.                 (if oldWIDTH
  3.                         (SETQ WIDTH (GETREAL (strcat "\n请输入粗线宽度<" (rtos oldWIDTH 2 2) ">:"))
  4.                         )
  5.                         (SETQ WIDTH (GETREAL "\n请输入粗线宽度:"))
  6.                           )
  7.                 (if WIDTH (setq oldWIDTH WIDTH)
  8.                         (setq WIDTH oldWIDTH)
  9.                      )
  10.         (if
  11.                  (progn (prompt "\n请选择改变线宽的线<退出>:")
  12.                         (setq ss (ssget))
  13.                 )

  14.                 (command "_pedit" "M" ss "" "_w" WIDTH "j" "" "")
  15.                 (princ)
  16.         )

  17. )
发表于 2013-4-12 01:39:22 | 显示全部楼层
第一次允许没老线宽,让你给定线宽又不给肯定出错啊!有老线宽后就可以不给了。

你可再加一句假如输入的为空且没有老线宽就默认多少线宽,那么就不怕第一次运行出错拉
 楼主| 发表于 2013-4-12 08:51:38 | 显示全部楼层
wowan1314 发表于 2013-4-12 01:39
第一次允许没老线宽,让你给定线宽又不给肯定出错啊!有老线宽后就可以不给了。

你可再加一句假如输入的 ...

默认线宽我不会加。8楼的是我调整后的程序,有空请帮忙给加一下默认线宽,谢谢
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-25 18:20 , Processed in 0.179180 second(s), 37 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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