明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 3738|回复: 13

[求助]各位大虾,帮忙修改这个小程序,急用阿!

  [复制链接]
发表于 2005-5-25 20:56 | 显示全部楼层 |阅读模式
现在我使用的这个程序,用的时候感觉有点缺陷,请各位大虾帮忙修改一下,急用!程序如下: (DEFUN C:QA(/ OLDOS PT STA QAREA) (setq olderr *error*)
(setq *error* myerr)
(SETVAR "CMDECHO" 0)
(SETQ OLDOS (GETVAR "OSMODE"))
(SETVAR "OSMODE" 0) (SETQ PT (GETPOINT"\nPick the point:"))
(SETQ STA (BPOLY PT))
(IF (= STA NIL) (EXIT))
(COMMAND "AREA" "E" "L")
(SETQ QAREA (RTOS (GETVAR "AREA") 2 2))
(COMMAND "TEXT" PT "" "" QAREA) (SETVAR "OSMODE" OLDOS)
(SETVAR "CMDECHO" 1)
(setq *error* olderr)
(PRINC)
) 这是个标注面积的小程序,大家能否改正其中的两个缺陷: 1、设置字高:在使用的时候无法设成自己想要的字高 2、设置成公顷:其标注的面积单位为平方米,希望改为以公顷为单位。其实就是设置小数点的位置,和保留的小数点后的位数。
发表于 2005-5-26 10:40 | 显示全部楼层
问题一:


(COMMAND "TEXT" [I]参数1[/I] [I]参数2[/I] [I]参数3[/I] [I]参数4[/I] [I]参数5[/I])


参数1为文本的对齐方式,例如:"m"中心对齐


参数2为点坐标


[I]参数3为字高[/I]例如:12.5


参数4为转角,例如:0


参数5为文本内容,例如:"AUTOCAD"


所有参数均可使用[I]变量[/I].
 楼主| 发表于 2005-5-26 12:44 | 显示全部楼层
这是问题一的修改方法,那请问问题二怎么添加?
发表于 2005-5-26 13:48 | 显示全部楼层
(DEFUN C:QA(/ OLDOS PT STA QAREA) (setq olderr *error*)
(setq *error* myerr)
(SETvar "CMDECHO" 0)
(SETQ OLDOS (GETvar "OSMODE"))
(SETvar "OSMODE" 0)
(SETQ PT (GETPOINT"\nPick the point:"))
(SETQ STA (BPOLY PT))
(IF (= STA NIL) (EXIT))
(COMMAND "AREA" "E" "L")
(SETQ QAREA (GETvar "AREA"))
(SETQ QAREA (/ (FIX (+ QAREA 0.5)) 100.0))
(SETQ QAREA (STRCAT (RTOS QAREA 2 2) "公顷"))
( SETQ ZG (GETREAL "请输入字高: "))
(COMMAND "TEXT" PT ZG "0" QAREA )
(SETvar "OSMODE" OLDOS)
(SETvar "CMDECHO" 1)
(setq *error* olderr)
(PRINC)
)
 楼主| 发表于 2005-5-26 22:32 | 显示全部楼层
非常感谢楼上的兄弟帮我修改,可能我没有说清我的意思,所以在运行楼上兄弟的程序时,还是感到有点小问题。


1、我希望程序能够连续运行。比如:我在量取三块面积的时候,只需要输入一次程序命令即可。不用量取三块面积,要输入三次命令。


2、我希望输入的字高是一次性的。比如在量取三块面积时,命令程序输入后,运行的一开始就设定好字高,这样就不用每次都输入字高。


3、面积为公顷。楼上的兄弟编写的程序,是单位为公顷。其实我的意思不是说后面带有的单位为公顷,我的意思是:假设我们在屏幕上任意画一个封闭图形(长宽均为1000,我是假设输入长宽值均为1000米),用area命令直接量取的值是,面积 = 1000000.0000,周长 = 5380.7402,而现在我只需要用这个面积的值/10000(1公顷=10000平方米),即运行命令后,出现的值为100即可,不用后面带有公顷的字样。


我不知道表达清楚我的意思没有,但是我很感谢楼上的兄弟。请各位大虾还是帮我改改好吗?非常、非常的感谢!
发表于 2005-5-26 23:20 | 显示全部楼层
  1. (DEFUN C:test (/ OLDOS PT STA QAREA)
  2.    (SETvar "OSMODE" 0)
  3.    (while (SETQ PT (GETPOINT "\nPick the point:"))
  4.        (setq STA (BPOLY PT)
  5.      e     (entlast)
  6.        )
  7.        (IF  (= STA NIL)
  8.            (EXIT)
  9.        )
  10.        (COMMAND "AREA" "E" "L")
  11.        (SETQ QAREA (RTOS (/(GETvar "AREA")10000) 2 3))
  12.        (COMMAND "TEXT" "j" "mc" PT "" "" QAREA)
  13.        (command "erase" e "")
  14.    )
  15.    (PRINC)
  16. )
 楼主| 发表于 2005-5-29 02:10 | 显示全部楼层
楼上的兄弟,已经差不多是这个意思了,但是,为什么不可以设置字高呢?
发表于 2005-5-29 08:05 | 显示全部楼层
(DEFUN C:test (/ OLDOS PT STA QAREA)
(SETvar "OSMODE" 0) ( SETQ ZG (GETREAL "请输入字高: ")) (while (SETQ PT (GETPOINT "\nPick the point:"))
(setq STA (BPOLY PT)
e (entlast)
)
(IF (= STA NIL)
(EXIT)
)
(COMMAND "AREA" "E" "L")
(SETQ QAREA (RTOS (/(GETvar "AREA")10000) 2 3))
;(COMMAND "TEXT" "j" "mc" PT "" "" QAREA) (COMMAND "TEXT" PT ZG "0" QAREA ) (command "erase" e "")
)
(PRINC)
)
 楼主| 发表于 2005-5-29 19:03 | 显示全部楼层
非常感谢楼上的兄弟,真的很感谢!


但是还有一个小小的问题,就是为什么没次我标注完面积后,我的对象捕捉都没有了?能不能实现,我运行完程序后,恢复我原来设置的对象捕捉?(我原来设置的osmode=63)
发表于 2005-5-30 19:33 | 显示全部楼层
........................................................................ (command "erase" e "")
) (SETvar "OSMODE" 63) (PRINC) )
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-5-18 08:13 , Processed in 0.272560 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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