找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 3156|回复: 16

(完成)[求助]:一串数字,怎样一起增减

[复制链接]
发表于 2002-12-27 21:19:37 | 显示全部楼层 |阅读模式

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

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

×
结构画楼梯时经常需要将所有建筑标高同时减掉面层厚度,能否一个命令办到?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 145个

财富等级: 日进斗金

发表于 2002-12-27 22:19:46 | 显示全部楼层

程序写好了

最初由 lxw917 发布
[B]结构画楼梯时经常需要将所有建筑标高同时减掉面层厚度,能否一个命令办到? [/B]



下载地址:http://www.xdcad.net/tech/xd_tbox/xdtb_txtsub.swf

<embed src=http://www.xdcad.net/tech/xd_tbox/xdtb_txtsub.swf quality=high width=640 height=480 loop=true type="application/x-shockwave-flash">
</embed>

程序如下(请在晓东工具箱0.26以上版本加载):

  1. [font=courier new]
  2. ;|
  3. 命令:XDTB_TxtSub
  4. 功能:把所选择的TEXT数字同时减去一个数值
  5. |;
  6. (defun c:XDTB_TxtSub (/ tf val val1 ss)
  7.   (if (not $XDTB_Global_TxtSub)
  8.     (setq $XDTB_Global_TxtSub 3)
  9.   )
  10.   (setq tf t)
  11.   (while tf
  12.     (initget 2 "P")
  13.     (setq val (getreal (strcat "\n请输入要减去的基数(保留小数"
  14.                                (itoa $XDTB_Global_TxtSub)
  15.                                "位)[P-修改小数位]<退出>:"
  16.                        )
  17.               )
  18.     )
  19.     (cond
  20.       ((= val "P")
  21.         (initget 4)
  22.         (if (setq val1 (getint (strcat "请输入保留小数位<" (itoa $XDTB_Global_TxtSub)
  23.                                        ">:"
  24.                                )
  25.                        )
  26.             )
  27.           (setq $XDTB_Global_TxtSub val1)
  28.         )
  29.       )
  30.       ((/= (type val) 'REAL)
  31.         (exit)
  32.       )
  33.       (t
  34.         (setq tf nil)
  35.       )
  36.     )
  37.   )
  38.   (prompt "\n请选取要处理的文字数字<退出>:")
  39.   (if (setq ss (ssget '((0 . "text"))))
  40.     (progn
  41.       (xdrx_begin)
  42.       (xdrx_setsstodb ss 0)
  43.       (while (xdrx_getentdata 0)
  44.         (setq txt (xdrx_getentdxf 1))
  45.         (if ($xdlsp_string_isNum txt)
  46.           (progn
  47.             (setq val1 (rtos (- (atof txt) val) 2 $XDTB_Global_TxtSub))
  48.             (xdrx_modent 1 val1)
  49.           )
  50.         )
  51.       )
  52.       (xdrx_end)
  53.     )
  54.   )
  55.   (princ)
  56. )

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

使用道具 举报

 楼主| 发表于 2002-12-28 18:03:08 | 显示全部楼层
需在文字一菜单选“当前字体”查看一下,此命令才有效,不知为何?
另,后面的零不要去掉,2.700弄成2.7似乎不像标高数字。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 145个

财富等级: 日进斗金

发表于 2002-12-28 18:16:17 | 显示全部楼层
最初由 lxw917 发布
[B]需在文字一菜单选“当前字体”查看一下,此命令才有效,不知为何?
另,后面的零不要去掉,2.700弄成2.7似乎不像标高数字。 [/B]


小数位可以自己输入的,你没有看教学吗?

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

使用道具 举报

 楼主| 发表于 2002-12-28 21:20:52 | 显示全部楼层
但小数位与几个0是有区别的,不知您自己有没有试过,当最后几位是0时自动去掉了。
我只知道在CAD里加载.LSP文件,请问在晓东工具箱里该怎样加载?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 145个

财富等级: 日进斗金

发表于 2002-12-29 05:10:30 | 显示全部楼层
最初由 lxw917 发布
[B]但小数位与几个0是有区别的,不知您自己有没有试过,当最后几位是0时自动去掉了。
我只知道在CAD里加载.LSP文件,请问在晓东工具箱里该怎样加载? [/B]


我试过了,2.7 如果设置小数位3,那么最后结果就是2.700

上面的教学,有两个文字后面也保留了0啊

你操作如下:



XDTB_TxtSub
p
3
输入减去的值
选择对象



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

使用道具 举报

发表于 2003-2-6 20:15:14 | 显示全部楼层
  1. (defun C:xx ( / p l n e q w w1 a m oldblp oldech olderr jd)
  2.   (setq oldblp (getvar "blipmode")
  3.         oldech (getvar "cmdecho")
  4.         olderr *error*
  5.   )
  6.   (BHZW)
  7.   (setvar "blipmode" 0)
  8.   (setvar "cmdecho" 0)
  9.   (defun *error* (msg)
  10.     (princ "\n")
  11.     (princ msg)
  12.     (setvar "blipmode" oldblp)
  13.     (setvar "cmdecho" oldech)
  14.     (setq *error* olderr)
  15.     (princ)
  16.   )
  17.   (prompt "\n请选择要改变的数字.")
  18.   (setq p (ssget))
  19.   (setq w (getreal "\n请输入改变量:"))
  20.   (setq jd (getint "\n请输入精度<2>:"))
  21.   (if (null jd) (setq jd 2))
  22.   (setq l 0 m 0 n (sslength p))
  23.   (while (< l n)
  24.     (setq q (ssname p l))
  25.     (if (= "TEXT" (cdr (assoc 0 (setq e (entget (ssname p l))))))
  26.       (progn
  27.         (setq w1 (+ W (ATOF (cdr (setq b (assoc 1 e))))))
  28.         (setq w1 (rtos w1 2 jd))
  29.         (setq e (subst (setq w2 (cons 1 w1)) b e))
  30.         (entmod e)
  31.         (setq m (+ 1 m))
  32.       )
  33.     )
  34.     (setq l (+ 1 l))
  35.   )
  36.   (if (= 0 m)
  37.     (progn
  38.       (princ "\n\t  没有任何被选中")
  39.       (princ)
  40.     )
  41.   )
  42.   (setvar "blipmode" oldblp)
  43.   (setvar "cmdecho" oldech)
  44.   (setq *error* olderr)
  45.   (princ)
  46. )
  47. (princ "\n\t 编辑程序, 版本1995.")
  48. (princ "\n\t  c:xx 已加载; 以x启动命令.")
  49. (princ)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2003-2-19 09:03:03 | 显示全部楼层
:b
这是我早先编的一个小程序,可对选中的数字经行加减乘除运算,
希各位大虾提宝贵意见
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2003-3-2 15:48:36 | 显示全部楼层
我自己写过一个专门对标高加减的。自动保留三位小数,自动处理正负零等。处理小于1的数标成:0.330  -0.330
而不是-.330

  1. (defun c:zcq_add_data
  2.        (/ cht_ot sset sset2 sslen txt n_txt add ent nent od aa)
  3.   (princ "\n对成批的数字[标高],同时加减某个数值")
  4.   (setq sset2 (ssget (list (cons 0 "text"))))
  5.   (setq        sslen  (sslength sset2)
  6.         cht_ot (getvar "texteval")
  7.         sset   (ssadd)
  8.   )
  9.   (setvar "texteval" 1)
  10.   (while (> sslen 0)
  11.     (setq nent (ssname sset2 (setq sslen (1- sslen))))
  12.     (setq ent (entget nent))
  13.     (setq txt (cdr (assoc 1 ent)))
  14.     (if        (equal (atof txt) 0.0 0.0005)
  15.       ()
  16.       (ssadd nent sset)
  17.     )
  18.     (if        (or (= txt "0.000")
  19.             (= txt ".000")
  20.             (= txt "%%P0.000")
  21.             (= txt "%%p0.000")
  22.         )
  23.       (ssadd nent sset)
  24.     )
  25.   )
  26.   (setq sslen (sslength sset))
  27.   (if (> sslen 0)
  28.     (setq add (getreal "增加多少?[负数为减]:"))
  29.   )
  30.   (setq od (getvar "dimzin"))
  31.   (setvar "dimzin" 4)
  32.   (while (> sslen 0)
  33.     (setq ent (entget (ssname sset (setq sslen (1- sslen)))))
  34.     (setq txt (cdr (assoc 1 ent)))
  35.     (setq aa (+ (atof txt) add))
  36.     (setq n_txt (rtos aa 2 3))
  37.     (if        (and (< aa 1) (> aa 0))
  38.       (setq n_txt (strcat "0" n_txt))
  39.     )
  40.     (if        (and (> aa -1) (< aa 0))
  41.       (setq n_txt (strcat "-0." (substr n_txt 3)))
  42.     )
  43.     (if        (equal aa 0.0 0.0005)
  44.       (setq n_txt "%%p0.000")
  45.     )
  46.     (entmod (subst (cons 1 n_txt) (assoc 1 ent) ent))
  47.   )
  48.   (setvar "texteval" cht_ot)
  49.   (setvar "dimzin" od)
  50.   (princ)
  51. )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2003-3-3 13:14:08 | 显示全部楼层
刚好昨天写了一个,今天上网就看到讨论这个命令,贴上我的,现丑了

  1. (defun c:55 ( / chang a ss sl i sp sc sa n )
  2.   (setq chang (getreal "\n请输入要增加的数值:"))
  3.   (setq a (getint "\n请输入结果的精度:"))
  4.   (setq ss (ssget))
  5.   (setq sl (sslength ss))
  6.   (setq i 0)
  7.   (repeat sl
  8.     (progn
  9.       (setq sp (entget (ssname ss i)))
  10.       (setq sc (cdr (assoc 1 sp)))
  11.       (setq sa (atof sc))
  12.       (setq sa (+ chang sa))
  13.       (setq n (rtos sa 2 a))
  14.       (setq sp (subst (cons 1 n) (assoc '1 sp) sp))
  15.       (entmod sp)
  16.       (setq i (+ i 1))
  17.     )
  18.   )
  19. )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 593个

财富等级: 财运亨通

发表于 2003-3-3 22:06:18 | 显示全部楼层
最初由 青马 发布
[B]刚好昨天写了一个,今天上网就看到讨论这个命令,贴上我的,现丑了
[code]
(defun c:55 ( / chang a ss sl i sp sc sa n )
  (setq chang (getreal "\n请输入要增加的数值:"))
  (setq a (getint "\n请输入结果的精... [/B]

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

使用道具 举报

发表于 2003-3-5 15:22:48 | 显示全部楼层
网站上:MUN2bmpDLL.zip不能下载.(下载……40页)
我很需要呢,别的地方也没找到。我只有一个笨办法:
How to compile BMP files to one single DLL file

Tools: C or C++ compiler for Windows

Windows Driver Development Kit

1. Create the list of bitmaps.

"ICON0001.BMP"

"ICON0002.BMP"

...

2. Create the resource definition file <menu name>.rc from the list of bitmaps.

SCAD0001 BITMAP DISCARDABLE "ICON0001.BMP"

SCAD0002 BITMAP DISCARDABLE "ICON0002.BMP"

...

("SCAD" is an example name)

3. Create the linker definition file <menu name>.def

LIBRARY <menu name>

4. Create the resource file: (Use C or C++ Compiler)

RC -r <menu name>.rc (or LRC /r <menu name>.rc)

5. Create the DLL file: (Use Windows DDK)

LINK /nodefaultlib /DLL /MACHINE:IX86 /DEF:<menu name>.def

/OUT:<menu name>.dll /NOENTRY <menu name>.res

6. Edit the file <menu name>.mns

Existing: [_Button("TEST", "ICON0001.BMP", "ICON0001.BMP")]^C^CTEST

New: [_Button("TEST", "SCAD0001", "SCAD0001")]^C^CTEST

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

使用道具 举报

 楼主| 发表于 2003-3-10 19:36:38 | 显示全部楼层
谢谢各位相助,只是当小数点后最后一位为0时均自动去掉,不知何故?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2003-3-22 21:22:16 | 显示全部楼层
XDTB_TxtSub中,的确是当小数点后的均自动去掉,例如,设置P为3是,10-2得不到8.000,只是得8
另,为什么不可以输入0呢,本来还想指望它能不改值而直接改小数点位数。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 593个

财富等级: 财运亨通

发表于 2003-3-27 04:57:37 | 显示全部楼层
最初由 ljb 发布
[B]XDTB_TxtSub中,的确是当小数点后的均自动去掉,例如,设置P为3是,10-2得不到8.000,只是得8
另,为什么不可以输入0呢,本来还想指望它能不改值而直接改小数点位数。 [/B]

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-9-20 08:06 , Processed in 0.440637 second(s), 61 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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