乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 26|回复: 1

[原创]更改线的宽度.欢迎指点

[复制链接]

30

主题

123

帖子

8

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
241
发表于 2003-8-31 14:57:00 | 显示全部楼层 |阅读模式
;;;更改线的宽度
;;;本程序只线.多义线.圆.圆弧适用
;;;2003.08.08 by Mr.zhong
(defun cno(/ ss pw entyp rr cen)
    (setvar "cmdecho" 0)
    (setq ss (entsel "\n选择线/多义线/圆/圆弧:"))
    (while (= ss nil)
    (setq ss (entsel "\n选择线/多义线/圆/圆弧:"))
    )
    (setq pw (getdist "\n点选或输入宽度:"))
    (if (= pw nil) (setq pw 0))
    (setq entyp (cdr (assoc 0 (entget (car ss)))))
    (cond ((= entyp "LINE") (command "pedit" ss "y" "w" pw ""))
          ((= entyp "ARC")  (command "pedit" ss "y" "w" pw ""))
          ((= entyp "LWPOLYLINE") (command "pedit" ss "w" pw ""))
          ((= entyp "CIRCLE")
          (setq rr  (cdr (assoc 40 (entget (car ss)))))
          (while (> pw rr)
                 (prompt "\n你的宽度大于圆或圆弧的半径,重新输入...")
                 (setq pw (getdist "\n点选或输入宽度:"))
          )
          (setq cen (trans (cdr (assoc 10 (entget (car ss)))) 0 1))
          (command "donut" (* 2 (- rr (/ pw 2))) (* 2 (+ rr (/ pw 2))) cen "")
          (command "erase" ss "")
          )
    )
    (while (/= ss nil)
           (setq ss (entsel "\n选择线/多义线/圆/圆弧:"))
           (while (= ss nil)
           (setq ss (entsel "\n选择线/多义线/圆/圆弧:"))
           )
           (setq entyp (cdr (assoc 0 (entget (car ss)))))
           (cond ((= entyp "LINE") (command "pedit" ss "y" "w" pw ""))
                 ((= entyp "ARC")  (command "pedit" ss "y" "w" pw ""))
                 ((= entyp "LWPOLYLINE") (command "pedit" ss "w" pw ""))
                 ((= entyp "CIRCLE")
                  (setq rr  (cdr (assoc 40 (entget (car ss)))))
                  (while (> pw rr)
                         (prompt "\n你的宽度大于圆或圆弧的半径,重新输入...")
                         (setq pw (getdist "\n点选或输入宽度:"))
                  )
                  (setq cen (trans (cdr (assoc 10 (entget (car ss)))) 0 1))
                  (command "donut" (* 2 (- rr (/ pw 2))) (* 2 (+ rr (/ pw 2))) c
en "")
                  (command "erase" ss "")
                 )
            )
    )
    (princ)
)
本程序循环的这一段和退出写的不太好,要强行退出.
大家如有需要可和我E_MAIL联系.ZYS@ROSSMAX.COM.TW
望大家多多指点.谢谢.
回复

使用道具 举报

26

主题

3072

帖子

10

银币

社区元老

Rank: 75Rank: 75Rank: 75

铜币
3177
发表于 2003-8-31 16:38:00 | 显示全部楼层
不是很实用,2000以后版本中可以直接修改宽度,也可以根据层的设定等来确定宽度。虽然这些宽度不能是任意值,但应该能满足平常使用要求了。
单从程序上说,不算很完整,比如修改圆你是用DONUT代替圆,这样在画圆环会造成选中心点位置捕捉错误,须加(setvar "osmode" 0),结束后恢复。
你的退出处理是你的程序设计思路的问题,你想不停地选择修改,并且如未选中继续循环选择,但你又想选不中时退出,这两者矛盾。可以参考一些命令的设计思路来设计程序的退出
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-7-5 03:13 , Processed in 0.462808 second(s), 56 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表