找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 842|回复: 5

[求助] [求助]:怎样改变最后一个对象的宽度?

[复制链接]
发表于 2003-5-15 00:00:10 | 显示全部楼层 |阅读模式

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

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

×
  1. (if (car (atoms-family 1 '("vl-load-com")))
  2.   (vl-load-com)
  3. )

  4. (defun cw_ucs_2_ent (p1 /)
  5.   (setq p1 (strcat "*"
  6.      (rtos (car p1) 1 20)
  7.      ","
  8.      (rtos (cadr p1) 1 20)
  9.      ","
  10.      (rtos (caddr p1) 1 20)
  11.     )
  12.   )
  13.   (command "_.ucs" "_za" "*0.0,0.0,0.0" p1)
  14. )

  15. ;; Change Width of Polyline
  16. ;; Support:
  17. ;; line, arc, circle, polyline, lightweightpolyline
  18. (defun C:CHANGE-WIDTH
  19.        (/ i ss sslen obj pt cenpt thick width ucsicon rad entname lay)
  20.   (setq ss (ssget))
  21.   (if (null ss)
  22.     (exit)
  23.   )
  24.   (setq i     0
  25. sslen (sslength ss)
  26.   )

  27.   (if (null cw-width-save)
  28.     (progn    ;then
  29.       (setq width (getdist "\nNew Width:"))
  30.       (while (null width) (setq width (getdist "\nNew Width:")))
  31.     )
  32.     (setq width
  33.     (getdist (strcat "\nNew Width<" (rtos cw-width-save 2) ">:")
  34.     )
  35.     )
  36.   )
  37.   (if width
  38.     (setq cw-width-save width)
  39.   )
  40.   (if (and cw-width-save (null width))
  41.     (setq width cw-width-save)
  42.   )

  43.   (setvar "cmdecho" 0)
  44.   (command "_.UNDO" "Auto" "off")
  45.   (command "_.UNDO" "_GROUP")
  46.   (setq ucsicon (getvar "ucsicon"))
  47.   (setvar "ucsicon" 0)

  48.   (while (< i (sslength ss))
  49.     (setq entname (ssname ss i))
  50.     (setq obj (vlax-ename->vla-object entname))

  51.      ; change lines and arcs to polyline
  52.     (if (or (= "AcDbLine" (vla-get-objectname obj))
  53.      (= "AcDbArc" (vla-get-objectname obj))
  54. )
  55.       (progn
  56. (setq pt (vlax-safearray->list
  57.      (vlax-variant-value (vla-get-normal obj))
  58.    )
  59. )
  60. (cw_ucs_2_ent pt)
  61. (setq thick (vla-get-thickness obj))
  62. (command "_.pedit" entname "Y" "")
  63. (command "_.ucs" "_p")
  64. (setq obj (vlax-ename->vla-object (entlast)))
  65. (vla-put-thickness obj thick)
  66.       )
  67.     )

  68.      ; change circle to polyline
  69.     (if (= "AcDbCircle" (vla-get-objectname obj))
  70.       (progn
  71. (setq cenpt (vla-get-center obj)
  72.        rad   (vla-get-radius obj)
  73.        thick (vla-get-thickness obj)
  74.        lay   (vla-get-layer obj)
  75. )
  76. (setq cenpt (vlax-safearray->list (vlax-variant-value cenpt)))
  77. (setq pt (vlax-safearray->list
  78.      (vlax-variant-value (vla-get-normal obj))
  79.    )
  80. )
  81. (cw_ucs_2_ent pt)
  82. (setq cenpt (trans cenpt 0 1))
  83. (command "_.donut" (* 2 rad) (* 2 rad) "_non" cenpt "")
  84. (vla-delete obj)
  85. (command "_.ucs" "_p")
  86. (setq obj (vlax-ename->vla-object (entlast)))
  87. (vla-put-thickness obj thick)
  88. (vla-put-layer obj lay)
  89.       )
  90.     )

  91.      ; change polylines width
  92.     (if (member (vla-get-objectname obj)
  93.   '("AcDbPolyline" "AcDb2dPolyline")
  94. )
  95.       (vla-put-constantwidth obj width)
  96.     )
  97.     (setq i (1+ i))
  98.   )

  99.   (setvar "ucsicon" ucsicon)
  100.   (setvar "cmdecho" 0)
  101.   (command "_.UNDO" "END")
  102.   (setvar "cmdecho" 1)

  103.   (princ)
  104. )

这是别人编写的改编线宽的LISP,怎样在它的基础上编一个LISP改变最后一个物体的线宽(包括弧、圆等)?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 145个

财富等级: 日进斗金

发表于 2003-5-15 00:01:57 | 显示全部楼层

Re: [求助]:[LISP程序]:怎样改变最后一个对象的宽度?

最初由 madbull 发布
[B](if (car (atoms-family 1 '("vl-load-com")))
  (vl-load-com)
)

(defun cw_ucs_2_ent (p1 /)
  (setq p1 (strcat "*"
     (rtos (car p1) 1 20)
     ","
     (rtos (cadr p1) 1 20)
     ","
     ... [/B]


改变最后一个实体的线宽,怎么理解?详细解释下吧。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 488个

财富等级: 日进斗金

发表于 2003-5-15 20:32:39 | 显示全部楼层
(defun c:cha () (C:CHANGE-WIDTH(entlast)))
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2003-5-16 07:00:05 | 显示全部楼层
我的意思是:改变图面上最后一个画的line, arc, circle, polyline, lightweightpolyline的宽度。
to aeo  :您的(defun c:cha () (C:CHANGE-WIDTH(entlast)))放在哪个位置上才好使呀?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 488个

财富等级: 日进斗金

发表于 2003-5-16 20:53:19 | 显示全部楼层
上面的C:CHANGE-WIDTH你不是已经加载了么!
(setq ss (ssget))改为(setq ss(ssadd)ss(ssadd (entlast)ss) )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-9-26 14:27 , Processed in 0.192031 second(s), 42 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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