找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 4866|回复: 26

[LISP程序]:单侧或双侧加粗直线或多义线程序

[复制链接]
发表于 2005-11-27 11:38:33 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
这个小程序并不加粗直线或多义线本身,而是在原有线的一侧添加一根你指定宽度的线。
    天正绘制剖面的程序中,绘制楼板加粗步骤很复杂,且绘成的楼板是个块(好象还炸不掉),我干脆就用这个程序,加粗楼板很方便,也便于拉伸、剪断。此外,立面外包线、详图的加粗也很方便。
    该加粗线绘制在jiacu层,你可以在不需要的时候(例如在绘制结构图时不需要加粗线),用本人的“筛选删除”删掉加粗线,原有的细线则仍旧保留。

命令名:jiacu
使用步骤:1. 输入您要的线宽;
         2. 点取待加粗的线;
         3. 用鼠标点取要加粗在哪一侧(回车默认右上侧);
         4. 如要继续加粗其他的线,则继续点取第二根线,输入w则改变线宽;回车则结束程序。

单、双侧加粗请见下一页。


                               
登录/注册后可看大图


                               
登录/注册后可看大图
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2006-4-25 20:19:41 | 显示全部楼层
对我来说这是一个很方便的程序!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2006-4-28 21:25:34 | 显示全部楼层
樓主能不能向兩側同時加呀?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-4-29 12:29:15 | 显示全部楼层
可以。

)

  1.   [FONT=courier new]
  2. (defun c:nn(/ p1 ss sn en )
  3.   (setvar "osmode" 512)      
  4.   (setvar "cmdecho" 0)        
  5.   (graphscr)
  6.   (if (= xkuan nil) (setq xkuan 45))
  7.   (princ "\n线宽<") (princ xkuan)
  8.   (setq x (getint ">:") n (if x x xkuan))
  9.   (setq p1 (getpoint "\n选择要加粗的线:"))
  10.   (while p1
  11.     (setq ss (ssget p1) m 0 )
  12.     (setq sn (ssname ss m) en (entget sn))
  13.     (if (= "LINE" (cdr (assoc 0 en)))
  14.        (command "pedit" p1 "y" "w" n "")
  15.        (command "pedit" p1 "w" n "")
  16.     )
  17.     (initget "W")
  18.     (setq p1 (getpoint (strcat "\n(线宽为" (itoa n) ") 改线宽W/选择要加粗的线:")))
  19.     (if (eq "W" p1)
  20.       (progn
  21.         (princ "\n线宽<") (princ n)
  22.         (setq x (getint ">:") n (if x x n))
  23.         (setq p1 (getpoint "\n选择要加粗的线:"))
  24.       )
  25.     )
  26.   )
  27. (princ)
  28.   [/FONT]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2007-4-17 22:07:11 | 显示全部楼层
这个工具非常实用,尤其是在处理大批量的线宽时,显得非常方便、快捷。但有个缺点,也不是缺点,只要楼主稍作修改就能化解这个瑕疵-------输入的命令太长,不够快捷。

高山仰止
景行行止
未必能至
心向往之
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-5-1 10:02:00 | 显示全部楼层
打开 jiacu.lsp ,将文本中的c:jiacu改为c:j,存文件,以后执行j即可。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-5-1 11:05:39 | 显示全部楼层
打开 jiacu.lsp ,将文本中的c:jiacu改为c:j,存文件,以后执行j即可。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2007-6-11 17:21:59 | 显示全部楼层
正好我需要。谢谢分享!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2007-7-11 09:26:27 | 显示全部楼层
不错的程序,希望能多向楼主学习
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 2个

财富等级: 恭喜发财

发表于 2007-7-14 10:57:12 | 显示全部楼层
4楼代码,简化版:

  1. (defun C:NN (/ P1 SS LX)
  2.     (if        (= XK NIL)
  3.         (setq XK 45)
  4.     )
  5.     (while (progn
  6.                (princ "\n>>>当前设置:线宽=")
  7.                (princ XK)
  8.                (initget "W")
  9.                (setq PT1 (getpoint "\n选择要修改的线,或 [改变线宽(W)]:")
  10.                )
  11.            )
  12.         (if (= PT1 "W")
  13.             (progn
  14.                 (princ "\n线宽<")
  15.                 (princ XK)
  16.                 (if (setq TMP (getreal ">:"))
  17.                     (setq XK (abs TMP))
  18.                 )
  19.             )
  20.             (if        (setq SS (ssget PT1))
  21.                 (progn
  22.                     (setq LX (cdr (assoc 0
  23.                                          (entget (ssname SS 0))
  24.                                   )
  25.                              )
  26.                     )
  27.                     (cond
  28.                         ((or (= LX "LINE") (= LX "ARC"))
  29.                          (command "_.pedit" SS "y" "w" XK "")
  30.                         )
  31.                         ((= LX "LWPOLYLINE")
  32.                          (command "_.pedit" SS "w" XK "")
  33.                         )
  34.                         (t
  35.                          (princ
  36.                              "\n>>>对象类型应为:LINE / ARC / LWPOLYLINE"
  37.                          )
  38.                         )
  39.                     )
  40.                 )
  41.                 (princ "\n>>>未选取到对象。")
  42.             )
  43.         )
  44.     )
  45.     (princ)
  46. )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2007-7-14 11:23:27 | 显示全部楼层
该程序的精华是单侧加粗,而不是双侧加粗,如增加一个判断,让单双侧能根据需要进行,程序就完满了,
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-7-15 09:46:58 | 显示全部楼层
最初由 szx025 发布
[B]该程序的精华是单侧加粗,而不是双侧加粗,如增加一个判断,让单双侧能根据需要进行,程序就完满了, [/B]

以下为修改过的程序,可以进行单、双侧的加宽。这里参照了10楼的构思,在此一并感谢!

                               
登录/注册后可看大图


  1.   [FONT=courier new]
  2. (princ "\ngysjy0欢迎您使用加粗线程序!该程序命令名是jiacu。")  
  3. (defun c:jiacu(/ op oc p1 ss sn en n2 p2)
  4.   ;(setq oer *error* *error* myerr)
  5.   (setq op (getvar "plinewid") oc (getvar "clayer"))   
  6.   (setvar "cmdecho" 0)  
  7.   (command "undo" "g")      
  8.   (graphscr)
  9.   (if (= kuan nil) (setq kuan 45))
  10.   (princ "\n线宽<") (princ kuan)
  11.   (setq x (getint ">:") kuan (if x x kuan))
  12.   (while
  13.     (progn
  14.        (initget "W")
  15.        (setq sn (entsel (strcat "\n(线宽为" (itoa kuan) ") 改线宽W/选择要加粗的

  16. 线:")))
  17.     )   
  18.     (if (eq "W" sn)
  19.       (progn
  20.         (princ "\n线宽<") (princ kuan)
  21.         (setq x (getint ">:") kuan (if x x kuan))
  22.         (setq sn (entsel "\n选择要加粗的线:"))
  23.       )
  24.     )   
  25.     (setq n2 (* kuan 0.5) sn (car sn))
  26.     (setvar "osmode" 0)
  27.     (setq p2 (getpoint "\n哪一侧(请在加粗的一侧点取一点)<双侧加粗>:"))
  28.     (if p2 (progn
  29.         (command "offset" n2 sn p2 "")
  30.         (setq sn (entlast))
  31.     ))
  32.     (if (= (tblsearch "LAYER" "jiacu") nil) (command "layer" "n" "jiacu" ""))
  33.     (setq nam (cdr (assoc 0 (entget sn))))
  34.     (cond
  35.       ((or (= "LINE" nam) (= "ARC" nam))
  36.         (command "_.pedit" sn "y" "w" kuan "")
  37.         )
  38.       ((= nam "LWPOLYLINE")
  39.          (command "_.pedit" sn "w" kuan "")
  40.       )
  41.       (t
  42.          (princ "\n>>>对象类型应为:LINE / ARC / LWPOLYLINE")
  43.       )
  44.     )
  45.     (command "chprop" "l" "" "la" "jiacu" "")
  46.   )
  47.   (setvar "clayer" oc)      
  48.   (setvar "plinewid" op)  
  49.   (command "undo" "e")
  50.   (setq *error* oer)(princ)
  51. )
  52.   [/FONT]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 2个

财富等级: 恭喜发财

发表于 2007-7-15 12:53:12 | 显示全部楼层
楼主就是强。
建议将主程序与函数分离出来,这样可以为批量修改打基础。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-7-15 21:15:55 | 显示全部楼层
最初由 zml84 发布
[B]
建议将主程序与函数分离出来,这样可以为批量修改打基础。 [/B]

批量修改指的是什么,就这一程序而言,主程序与函数可以怎样分呢?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-7-15 21:51:13 | 显示全部楼层
最初由 zml84 发布
[B]
建议将主程序与函数分离出来,这样可以为批量修改打基础。 [/B]

批量修改指的是什么,就这一程序而言,主程序与函数可以怎样分呢?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-11-17 21:52 , Processed in 0.347302 second(s), 60 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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