jokingw 发表于 2012-12-25 12:33:01

请问如何把该LSP标注改为“米”为单位?


这是在国外找到的一个标注面积小程序,做规划时候很方便但是做建筑时候就成了毫米级的单位,请问如何缩小1000000倍?
谢谢各位老大!

===================================================


(defun c:at (/ area cth loc ss str th vevo)
(while
    (setq ss (car (entsel "\nSelect a object")))
    (setq vevo (vlax-ename->vla-object ss))
    (setq area (vlax-get vevo 'area))
    (setq loc (getpoint "\nClick location for text<0,0,0>: "))
    (if (= loc nil)(setq loc '(0 0 0)))
    (setq str (strcat "" (rtos area)))
    (setq cth (rtos (getvar "textsize")))
    (setq th (getdist (strcat "\nEnter new text height < " cth " > : ")))
    (if (= th nil)(setq th cth))
    (command "_text" loc th "" str 0)
    )                  ; while
(princ)
)                      ; defun



==============================================

Andyhon 发表于 2012-12-25 12:46:47

本帖最后由 Andyhon 于 2012-12-25 12:55 编辑

(setq area (vlax-get vevo 'area)
      area (/ area 1000000)       ; 倍率
)


jokingw 发表于 2012-12-25 12:51:14

Andyhon 发表于 2012-12-25 12:46 static/image/common/back.gif
(setq area (vlax-get vevo 'area))
      area (/ area 1000000)       ; 倍率
)

大侠你好

我不太明白这句怎么加上去呢

能完整贴一下么?
谢谢:)

Andyhon 发表于 2012-12-25 12:56:45

(setq area (vlax-get vevo 'area))
==>
(setq area (vlax-get vevo 'area)
      area (/ area 1000000)       ; 倍率
)

jokingw 发表于 2012-12-25 14:04:49

Andyhon 发表于 2012-12-25 12:56 static/image/common/back.gif
(setq area (vlax-get vevo 'area))
==>
(setq area (vlax-get vevo 'area)


太棒了!谢谢!!

zyhandw 发表于 2012-12-25 14:31:10

强啊,长老都来帮你了

jokingw 发表于 2012-12-25 14:32:24

本帖最后由 jokingw 于 2012-12-25 14:32 编辑

Andyhon 发表于 2012-12-25 12:56 static/image/common/back.gif
(setq area (vlax-get vevo 'area))
==>
(setq area (vlax-get vevo 'area)

大侠还有没办法可以另该程序实现以下功能:

不需要每次都设定标注文字的位置,自动标注在线框里,或者是的几何中心点?

谢谢!

sunny20102 发表于 2012-12-25 15:09:23

1000000改为1000000. 或1.0e6似乎更稳妥些, 能确保是实数运算

香田里浪人 发表于 2013-1-13 13:22:12

这个好办,原程序修改如下:
(defun c:at (/ area cth loc ss str th vevo)
(while
    (setq ss (car (entsel "\n选择对象")))
    (setq vevo (vlax-ename->vla-object ss))
    (setq area (vlax-get vevo 'area))
    (setq loc (getpoint "\n点击标注位置<0,0,0>: "))
    (if (= loc nil)(setq loc '(0 0 0)))
    (setq str (strcat "s=" (rtos area 2 2 )"㎡")));;;此句可以显示面积标注单位
    (setq cth (rtos (getvar "textsize")))
    (setq th (getdist (strcat "\n输入字体大小 < " cth " > : ")))
    (if (= th nil)(setq th cth))
(mkla "面积标注" 3);;;此句可以显示面积标注颜色,1红色2黄色3绿色
    (command "_text" loc th "" str 0)
    )                  ; while
(princ)
)                      ; defun
页: [1]
查看完整版本: 请问如何把该LSP标注改为“米”为单位?