找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 965|回复: 4

用于更改日期的一个程序(源代码)

[复制链接]
发表于 2006-11-29 16:45:16 | 显示全部楼层 |阅读模式

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

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

×
一个用于日期更改的程序:
点击需要更改的日期后,自动更换为当前日期。

  1.   [FONT=courier new]
  2. (defun c:tt1 ( / e ee hr m n s sdate ss ti time1 tmp tmp1);;;批量更改最后修改日期
  3.   (VL-LOAD-COM)
  4.   (SETQ sdate (rtos (GETVAR "CDATE")))
  5.   (SETQ sdate (SUBSTR sdate 1 8))
  6.   (setq        tmp1 (STRCAT (SUBSTR sdate 1 4)
  7.                     "."
  8.                     (SUBSTR sdate 5 2)
  9.                     "."
  10.                     (SUBSTR sdate 7 2)
  11.             )
  12.   )
  13.   (setq hd nil)
  14.   (setq hd (getstring"\n  单个修改/全部修改  D/Q <D>"))
  15.   (if (not hd)(setq hd "D"))
  16.   (if(= hd "q")(setq hd "Q"))
  17.   (cond((= hd "D")   
  18.   (setq ss (ssget ":s" '((0 . "text"))))
  19.   (if ss
  20.         (progn
  21.                 (setq obj (vlax-ename->vla-object (ssname ss 0)))
  22.                 (vla-put-TextString Obj tmp1))
  23.         (progn
  24.            (princ"\n 没有选中任何对象。")
  25.            (princ)))
  26.         (setq ss nil))
  27.        ((= hd "Q")
  28.   (setq ss (ssget ":s" '((0 . "text"))))
  29.   (if ss
  30.         (progn
  31.                 (setq obj (vlax-ename->vla-object (ssname ss 0)))
  32.                 (setq txt0 (vla-get-TextString Obj))
  33.                 
  34.           )
  35.         (progn
  36.            (princ"\n 没有选中任何对象。")
  37.            (princ)))
  38.   (setq ss (ssget "X" '((0 . "text"))) n 0)
  39.   (if ss
  40.         (progn
  41.               (while (< n (sslength ss)) **********
  42.                 (setq obj (vlax-ename->vla-object (ssname ss n)))
  43.                 (if(= txt0 (vla-get-TextString Obj))(vla-put-TextString Obj tmp1))
  44.                 (setq n (1+ n))
  45.               )
  46.           )
  47.         (progn
  48.            (princ"\n 没有选中任何对象。")
  49.            (princ)))))
  50. )
  51.   [/FONT]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2006-11-30 07:51:24 | 显示全部楼层

  1. ;;各位版主高手。我編了一個程序,目的是點擊某一個日期標注值以
  2. ;;後批量將各個佈局中相同的日期用當前日期進行替換。
  3. ;;現在的問題是:經使用發現無法實現多佈局中相同文字的替換,
  4. ;;只對所點擊的佈局中的文字日期有效。不知何故,請各位指點謎經。
  5. ;;難道ssget函數只對單一佈局起作用嗎????
  6. (defun C:TT1 (/ HOLDECHO HD N OBJ SDATE SS TMP1 TXT0)
  7.   ;;批量更改最後修改日期
  8.   (vl-load-com)
  9.   (setq HOLDECHO (getvar "CMDECHO"))
  10.   (setvar "CMDECHO" 0)
  11.   (command "_.UNDO" "_GROUP")
  12.   (setq SDATE (rtos (getvar "CDATE")))
  13.   (setq SDATE (substr SDATE 1 8))
  14.   (setq        TMP1 (strcat (substr SDATE 1 4)
  15.                      "."
  16.                      (substr SDATE 5 2)
  17.                      "."
  18.                      (substr SDATE 7 2)
  19.              )
  20.   )
  21.   (initget "A ")
  22.   (setq HD (getkword "\n  全部修改(A)/單個修改(ENTER): "))
  23.   (if (setq SS (ssget ":S:E" '((0 . "text"))))
  24.     (progn
  25.       (setq OBJ (vlax-ename->vla-object (ssname SS 0)))
  26.       (cond
  27.         ((= HD NIL)
  28.          (vla-put-textstring OBJ TMP1)
  29.         )
  30.         ((= HD "A")
  31.          (setq TXT0 (vla-get-textstring OBJ))
  32.          (setq SS (ssget "X" '((0 . "text")))
  33.                N  0
  34.          )
  35.          (while        (< N (sslength SS))
  36.            (setq OBJ (vlax-ename->vla-object (ssname SS N)))
  37.            (if (= TXT0 (vla-get-textstring OBJ))
  38.              (vla-put-textstring OBJ TMP1)
  39.            )
  40.            (setq N (1+ N))
  41.          )
  42.         )
  43.       )
  44.     )
  45.     (princ "\n 沒有選中任何對象。")
  46.   )
  47.   (command "_.UNDO" "_END")
  48.   (setvar "CMDECHO" HOLDECHO)
  49.   (princ)
  50. )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-11-30 11:24:30 | 显示全部楼层
十分感谢版主的回复。可以很好的运行了。
还要请教一个问题:(ssget ":S:E" '((0 . "text")))  语句中 ":s:e" :s是指定单选,:e 起何作用?类似的使用在ssget 函数中的参数还有吗?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2006-11-30 12:40:44 | 显示全部楼层
:S是指定单选,但選不到會變成框選,加了:E才是真的單選

Which one of the three parameters is (ssget) complaining about?

(ssget "+." '((0 . "ARC")))
(ssget ":E" '((0 . "ARC")))
(ssget ":S" '((0 . "ARC")))


Since "+." is undocumented, that might be the trouble; it may have never
made it to the French version.

If that is the case, you can emulate the same behavior by setting PickAuto=0
for the duration of the (ssget).



:E  游標物件選擇選取框內的所有物件。
:S  僅允許單選。
(ssget "+.:E:S" '((0 . "ARC")))
(Stig Madsen clued me in on the "+." option!)
How about ":L" for ignoring locked layers?

(ssget) options
Some of these are undocumented.
A   All
B   Box
C   Crossing
CP  Crossing Polygon
:D  Duplicates 可覆選
:E  Everything in aperture
F   Fence
G   Groups (無效)
I   Implied  ;;'I' selects all 'gripped' entities:
L   Last
:L  Rejects locked layers
M   Multiple
:N  Nested 選子物件(圖塊)
P   Previous
:P  Rejects Viewport (無效)
:S  Force single object selection only
W   Window
WP  Window Polygon
X   Extended search (search whole database)


;; allow single entity selection with a filter!
;; Courtsey of Robert Bell
(ssget "+.:E:S" '((0 . "ARC")))
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-7-6 15:49 , Processed in 0.355910 second(s), 39 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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