找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 825|回复: 9

关于z坐标清零及线加粗程序

[复制链接]
发表于 2004-6-28 10:49:38 | 显示全部楼层 |阅读模式

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

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

×
在勘察资料图中,好多实体都含有不同值的z坐标(即z轴增量不为0),这样在编辑时(如延伸,修剪,加粗等)就提示出错,晓东工具箱里有“z坐标为0”的工具,但运行速度慢,下面这个语句特别简单,无论图形有多大,处理速度一瞬间,它其实利用计算机对数据的处理精度问题而达到目的,建议XD工具改为此代码。

(command "_.move" e0 "" '(0 0 1e99) ""  "_.move" e0 "" '(0 0 -1e99) "");e0为选择集[/SIZE][/COLOR]
XD站里也有好多线加粗小程序,但不能处理z轴增量不为0的情况,下面的能处理circle及上述等各种情况

  1. (defun FLATTEN (e0 /)
  2.   (command "_.UCS" "")
  3.   (command "_.move" e0 "" '(0 0 1e99) "" "_.move" e0 "" '(0 0 -1e99) "")
  4.   (princ)
  5. )

  6. (defun C:wd (/ olde p l n w0 e0 w e b d a r x y pt p1)
  7.   (setvar "cmdecho" 0)
  8.   (command "undo" "m")
  9.   (setq olde *error*
  10.         *error* clmerr
  11.   )                                       ; (if(null psc)(setq psc 100))(setq
  12.                                        ; w0 (* psc 0.6))
  13.   (setq w0 70)
  14.   (if (null p)
  15.     (setq p (ssget))
  16.   )
  17.   (setq l 0
  18.         n (sslength p)
  19.   )
  20.   (princ "\n宽度<")
  21.   (princ w0)
  22.   (setq w (getreal ">:"))
  23.   (if (null w)
  24.     (setq w w0)
  25.   )
  26.   (while (< l n)
  27.     (setq e0 (ssname p l))
  28.     (setq e (entget e0))
  29.     (setq b (cdr (assoc 0 e)))
  30.     (progn
  31.       (if (= "LWPOLYLINE" b)
  32.         (command "pedit" e0 "w" w "")
  33.       )
  34.       (if (= "ARC" b)
  35.         (command "pedit" e0 "" "w" w "")
  36.       )
  37.       (if (= "LINE" b)
  38.         (if (/= (nth 3 (assoc '10 e)) (nth 3 (assoc '11 e)))
  39.           (progn
  40.             (flatten e0)
  41.             (command "pedit" e0 "" "w" w "")
  42.           )
  43.           (command "pedit" e0 "" "w" w "")
  44.         )
  45.       )                                       ; end if
  46.       (if (= "CIRCLE" b)
  47.         (progn
  48.           (setq d (getstring "\n圆改<Y>es or No?"))
  49.           (if (or
  50.                 (= (strcase d) "Y")
  51.                 (= "" d)
  52.               )
  53.             (progn
  54.               (setq a (cdr (assoc 10 e)))
  55.               (setq r (* 2 (cdr (assoc 40 e))))
  56.               (setq x (car a)
  57.                     y (cadr a)
  58.               )
  59.               (setq pt (list x y))
  60.               (command "erase" e0 "")
  61.               (command "donut" r r pt "")
  62.               (setq p1 (entlast))
  63.               (command "pedit" p1 "w" w "")
  64.             )                               ; end progn
  65.           )                               ; end if
  66.         )                               ; end progn
  67.       )                                       ; end if
  68.       (setq l (1+ l))
  69.     )                                       ; end progn
  70.     (command "redraw")
  71.     (setq *error* olde)
  72.     (setvar "cmdecho" 1)
  73.     (princ)
  74.   )                                       ; end while
  75.   (princ)
  76. )
  77. ;;; end defun
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2004-6-28 13:45:11 | 显示全部楼层
但不能处理z轴增量不为0的情况-----???能详细说清楚一点么?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2004-6-28 14:20:50 | 显示全部楼层
最初由 陌生人 发布
[B]但不能处理z轴增量不为0的情况-----???能详细说清楚一点么? [/B]

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

使用道具 举报

发表于 2004-6-28 20:05:54 | 显示全部楼层
除了块内实体,Move就可解决Z不为0的情况。
属性又是什么情况,各位补充了。

  1. (defun c:Fzto0 (/ )
  2.   (vl-cmdf ".move"    "all"         ""            "0,0,0"    "0,0,1e99"
  3.            ".move"    "all"         ""            "0,0,1e99" "0,0,0"
  4.           )
  5.   (vlax-map-collection
  6.     (vla-get-blocks
  7.       (vla-get-activedocument (vlax-get-acad-object))
  8.     )
  9.     '(lambda (x)
  10.        (vlax-map-collection
  11.          x
  12.          '(lambda (i)
  13.             (vla-move i
  14.                       (vlax-3d-point '(0. 0. 0.))
  15.                       (vlax-3d-point '(0. 0. 1e99))
  16.             )
  17.             (vla-move i
  18.                       (vlax-3d-point '(0. 0. 1e99))
  19.                       (vlax-3d-point
  20.                         '(0. 0. 0.)
  21.                       )
  22.             )
  23.           )
  24.        )
  25.      )
  26.   )
  27.   (princ)
  28. )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-6-29 13:47:55 | 显示全部楼层
把块内实体也压平了,这个主意不错:)
建议给楼上加分
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-7-6 16:29:05 | 显示全部楼层
拜托大师们将上述程序给整合一下,好让吾等目不识“编程”者使用方便,谢谢楼上各位
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-7-6 21:35:29 | 显示全部楼层
有三维实体对象时,用不得这种move操作,电脑要停止响应,不信你试试!!!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 593个

财富等级: 财运亨通

发表于 2004-7-6 22:17:01 | 显示全部楼层
最初由 zxdcad 发布
[B]有三维实体对象时,用不得这种move操作,电脑要停止响应,不信你试试!!! [/B]

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

使用道具 举报

发表于 2004-7-6 22:50:24 | 显示全部楼层
其实AutoCAD中"change"就有将Z坐标改任意值功能;"pe"就有加粗功能.
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-3 23:48 , Processed in 0.208514 second(s), 49 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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