明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1609|回复: 9

请高手编个程

[复制链接]
发表于 2006-3-7 09:08 | 显示全部楼层 |阅读模式

我在实际工作中常常要将CAD图形中的面积单个标注在CAD表格中,然后在利用计算器把图形中标注的单个面积逐一相加,最后再把面积总和标注在表格中的合计栏。这样的话工作起来相当繁琐.我想请高手编个可以通过点击图形中的数字,即可实现相加功能,并能把相加后的和自动标注在图形中的任意位置的程序.

可以吗?

小弟在这里先谢谢大家了!!!!!

"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2006-3-7 11:22 | 显示全部楼层
(defun c:test ( / ss i ent numall num)
  (setq ss (ssget '((0 . "TEXT"))))
  (setq i 0 numall 0.0)
 
  (repeat (sslength ss)
    (setq ent (ssname ss i))
    (setq num (cdr (assoc 1 (entget ent))))
    (setq num (atof num))
    (setq numall (+ numall num))
    (setq i (1+ i))
  )
  numall
)
发表于 2006-3-8 09:20 | 显示全部楼层
请问怎样才能使得相加的总和标注在cad的图上??????
发表于 2006-3-8 09:32 | 显示全部楼层
用TEXT命令啊
 楼主| 发表于 2006-3-8 14:52 | 显示全部楼层

我在该程序的尾部加了text命令但是不行

(defun c:test ( / ss i ent numall num)
  (setq ss (ssget '((0 . "TEXT"))))
  (setq i 0 numall 0.0)
  (setq pt1(getpoing"/n
请输入点))

 (repeat (sslength ss)
    (setq ent (ssname ss i))
    (setq num (cdr (assoc 1 (entget ent))))
    (setq num (atof num))
    (setq numall (+ numall num))
    (setq i (1+ i))
  )
  numall
)

(command "text" "j" "mc" pt1 "0" numall
)

 

 

发表于 2006-3-8 15:07 | 显示全部楼层
修改了一下:
  1. (defun c:test (/ ss i ent numall num)
  2.   (setq ss (ssget '((0 . "TEXT"))))
  3.   (setq i 0
  4. numall 0.0
  5.   )
  6.   (setq pt1 (getpoint "\n请输入点"))
  7.   (repeat (sslength ss)
  8.     (setq ent (ssname ss i))
  9.     (setq num (cdr (assoc 1 (entget ent))))
  10.     (setq num (atof num))
  11.     (setq numall (+ numall num))
  12.     (setq i (1+ i))
  13.   )
  14.   (command "text" "j" "mc" pt1 "" "" (rtos numall))
  15.   (princ)
  16. )
发表于 2006-3-9 00:06 | 显示全部楼层
  1. (defun c:test (/ ss i ent numall num pt1)
  2.   (setq ss     (ssget '((0 . "TEXT")))
  3. i      -1
  4. numall 0.0
  5. pt1    (getpoint "\n 请输入点: ")
  6.   )
  7.   (repeat (sslength ss)
  8.     (setq ent (ssname ss (setq i (1+ i))))
  9.     (setq num (cdr (assoc 1 (entget ent))))
  10.     (if (setq num (atof num))
  11.       (setq numall (+ numall num))
  12.     )
  13.   )
  14.   (command "text" "j" "mc" pt1 "300" "0" (rtos numall 2 3))
  15.   (princ)
  16. )
发表于 2006-3-9 18:53 | 显示全部楼层
请问楼上的,假如我把标注的字高不设为300,而是设为任意值,如“<请输入字高:>”,应该怎样改动????
发表于 2006-3-9 21:05 | 显示全部楼层

.........

(setq high (getreal "\n输入字高:"))

  (command "text" "j" "mc" pt1 high "0" (rtos numall 2 3))

(princ)

)
  

发表于 2006-3-12 00:19 | 显示全部楼层
  1. (load "xyp_lib.vlx") ;版本 V.20060210
  2. ;|下载和加载通用函数(可在签名栏直接下载后放到搜索路径下)
  3. 利用以下任何一种方式(首选第一种)即可加载和运行通用函数内的所有子程序:
  4. ★1·在acad.lsp中增加(load"xyp_lib")
  5. ■2·在每个程序内增加(load"xyp_lib")
  6. ■3·在command下,输入(load"xyp_lib")
  7. ■4·在菜单.mnl中增加(load"xyp_lib")
  8. ■5·将xyp_lib.vlx文件直接拽到cad屏幕
  9. [COLOR=red] ★通用函数下载地址:[/COLOR]
  10. [url]http://bbs.mjtd.com/forum.php?mod=viewthread&tid=37554[/url]
  11. |;
  12. (defun c:test (/ ss i ent numall num pt1)
  13.   (cmdlasc0)
  14.   (setq th     (* sc 300.0)
  15. ss     (ssget '((0 . "TEXT")))
  16. i      -1
  17. numall 0.0
  18. pt1    (getpoint "\n 请输入点: ")
  19.   )
  20.   (repeat (sslength ss)
  21.     (setq ent (ssname ss (setq i (1+ i))))
  22.     (setq num (cdr (assoc 1 (entget ent))))
  23.     (if (setq num (atof num))
  24.       (setq numall (+ numall num))
  25.     )
  26.   )
  27.   (command "text" "j" "mc" pt1 th "0" (rtos numall 2 3))
  28.   (cmdla1)
  29. )
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-6-18 22:02 , Processed in 0.170665 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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