找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 800|回复: 7

[编程申请]:帮忙修改2个命令,改进得更人性化一些。

[复制链接]
发表于 2005-3-23 12:08:19 | 显示全部楼层 |阅读模式

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

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

×
各位高手,你们好!在附件里有我下载的两个跟面积有关的命令,的确很好用,但我用的时候总是要加工一下,不够人性化,希望提出一些我觉得有用的方式进行一些细微的修改,我想修改以后能更方便大家的操作,虽然看起来是针对我个人的,但其实真正目的是服务与大家啊,放在论坛里,供大家共同成长,废话少说,正题。

第一个命令是自动标注封闭多意线面积的命令。高手门试用一下就知道,其实编得不完善。我希望进行的修改是:最好能一次性多重选择多个物体,选择确定之后程序可以自动把面积标注在各个多意线物体的正中,标注的面积应该是默认以米为单位(如果想合适所有使用者,在这里可以加一个步骤,就是选择一什么为标注单位,最好默认为米,因为对面积计算,米比较多,但对于我个人来说,这个步骤可以取消,我只用米作单位,其他都不会用上),下一个步骤希望能有一个输入字高的过程,因为每一张图的比例都不一样,自动默认字高对观察者不利,我就很讨厌他原来的命令不能输入字体高度!在程序自动标注面积数字的时候,那些数字最好能自动创建一个图层,所有的数据都标注在自动创建的图层里,就把这个图层名字确定为AREAS吧,这样在用数字求和命令中就方便了许多。
第二个命令是数字求和的命令,其实已经很好用了,但是有时时候制图需要,我的这个命令精确度不够,只精确到小数点一位,我觉得可以修改成精确到小数点后3为,这样就可以适应任何情况了。
希望得到修改的就这些,本人不会编程,只能出点子,希望高手能帮忙。呵呵。小弟先谢谢了!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2005-3-23 12:39:09 | 显示全部楼层
[php]
;;;拾取数字求和
(defun c:szh (/ ss n totn adn)
(prompt "\n拾取数字求和: ")
(setq ss (ssget '((0 . "TEXT")))
n 0
)
(setq totn 0.0)
(while (setq en (ssname ss n))
(setq adn (atof (cdr (assoc 1 (entget en)))))
(setq totn (+ totn adn))
(setq n (1+ n))
)
(princ (strcat "\n数字和: "))
(princ (rtos totn 2 4));;;需要精确到几位就将4改成几
(princ)
)
[/php]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-3-23 13:30:59 | 显示全部楼层
谢谢,还有前面那个命令呢?一起编了嘛:)





怎么没有跟贴了呢?应该不难吧?以前我在这里找一个超级减切命令,那个那么难都可以,这个应该不难了吧?0324
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-3-28 16:47:32 | 显示全部楼层
简化别人的程序:

  1. (defun c:mj (/ pt pt1 en aa bl-bz)
  2.   (cmdla0)
  3.   (setq        tht (getreal "\n输入文字高度:")
  4.         pt
  5.             (getpoint "\n选取封闭域内一点: ")
  6.   )
  7.   (while pt
  8.     (setq pt1 pt)
  9.     (mkla "封闭域辅助线" 8)
  10.     (command "bpoly" pt "")
  11.     (setq en (entlast))
  12.     (if        (/= en nil)
  13.       (progn
  14.         (command "area" "o" en)
  15.         (setq aa (getvar "area"))
  16.         (redraw en 3)
  17.       )
  18.     )
  19.     (entdel en)
  20.     (mkla "面积标注" 4)
  21.     (setq aa (rtos (/ aa 1000000.0) 2 4))
  22.     (command "text" "j" "mc" pt1 tht "0" aa)
  23.     (setq pt (getpoint "\n选取封闭域内一点: "))
  24.   )
  25.   (cmdla1)
  26. )
  27. (defun CMDLA0 ()
  28.   (setq cmdech (getvar "CMDECHO"))
  29.   (setq oom (getvar "orthomode"))
  30.   (setq osm (getvar "osmode"))
  31.   (SETQ LA (getvar "clayer"))
  32.   (setq rmode (getvar "regenmode"))
  33.   (setvar "regenmode" 0)
  34.   (setvar "CMDECHO" 0)
  35.   (princ)
  36. )

  37. ;;;
  38. (defun CMDLA1 ()
  39.   (setvar "CMDECHO" cmdech)
  40.   (setvar "orthomode" oom)
  41.   (setvar "osmode" osm)
  42.   (setvar "clayer" LA)
  43.   (setvar "regenmode" rmode)
  44.   (princ)
  45. )
  46. (Defun MKLA (a b)
  47.   (If (= (Tblsearch "layer" a) nil)
  48.     (Command "layer" "m" a "c" b a "")
  49.     (Command "layer" "t" a "s" a "c" b a "")
  50.   )
  51. )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-3-28 18:07:48 | 显示全部楼层
非常好用,太感谢了。人间冷暖,瞬间体现:)大家都用啊,很好用的!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

使用道具 举报

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

使用道具 举报

发表于 2005-4-8 18:01:51 | 显示全部楼层
我把程序完善一下,更加人性化一点。
原来的程序在输入字高的时候,要经过换算字高,这样在出图以后才能得到标准的字高。因此,可不可以把它改为在输入字高的时候就输入出图后所需的字高。比如,图纸上标准的字高是5,打印出图比例是1:100,那么文字在图纸上的真实高度就应该是500高。如果每次都要这样换算的话是不是很麻烦啊。
(defun c:mj (/ pt pt1 en aa bl-bz)
  (cmdla0)
  (setq   tht (getreal "\n输入文字高度:")  ;输入出图后所需的字高
        pt  (getpoint "\n选取封闭域内一点: ")
  )
  (while pt
    (setq pt1 pt)
    (mkla "封闭域辅助线" 8)
    (command "bpoly" pt "")
    (setq en (entlast))
    (if        (/= en nil)
      (progn
        (command "area" "o" en)
        (setq aa (getvar "area"))
        (redraw en 3)
      )
    )
    (entdel en)
    (mkla "面积标注" 4)
    (setq aa (rtos (/ aa 1000000.0) 2 4))
    (command "text" "j" "mc" pt1 (* tht (getvar "dimscale"))  "0" aa) ;换算成真实的字高
    (setq pt (getpoint "\n选取封闭域内一点: "))
  )
  (cmdla1)
)
(defun CMDLA0 ()
  (setq cmdech (getvar "CMDECHO"))
  (setq oom (getvar "orthomode"))
  (setq osm (getvar "osmode"))
  (SETQ LA (getvar "clayer"))
  (setq rmode (getvar "regenmode"))
  (setvar "regenmode" 0)
  (setvar "CMDECHO" 0)
  (princ)
)

;;;
(defun CMDLA1 ()
  (setvar "CMDECHO" cmdech)
  (setvar "orthomode" oom)
  (setvar "osmode" osm)
  (setvar "clayer" LA)
  (setvar "regenmode" rmode)
  (princ)
)
(Defun MKLA (a b)
  (If (= (Tblsearch "layer" a) nil)
    (Command "layer" "m" a "c" b a "")
    (Command "layer" "t" a "s" a "c" b a "")
  )
)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-9-22 07:43 , Processed in 0.536511 second(s), 47 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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