闭合线算面积源码.请问怎么在后面加上M2啊?
;;;;标注闭合曲线的面积;;;;(princ "\n标注闭合曲线的面积,命令:mj\n")
(defun c:mj (/ AREA_H AREA_WSERRHAN NEWENTLAST
OBJ OBJ_AREAOBJ_I OBJ_NAME
OBJ_VLA OLDCMDECHOOLDDELOBJ OLDENTLAST
PT JD
)
(vl-load-com)
(setq obj (ssget '((0 . "*POLYLINE,CIRCLE,ELLIPSE"))))
(if obj
(progn
(setq obj_i -1)
(setq oldcmdecho (getvar "cmdecho"))
(setq oldDELOBJ (getvar "DELOBJ"))
(setvar "cmdecho" 0) ;_禁止回显
(setvar "DELOBJ" 0) ;_控制创建面域保留原对象
(setq errhan '()) ;_不能创建面域的图元句柄表
(setq area_ws 2) ;_面积的小数位数
(setq area_h 250) ;_面积文字的高度
(setq jd 1e6);_面积除以这个数 1e6=10的6次方 需要自己设定
(repeat (sslength obj)
(setq obj_name (ssname obj (setq obj_i (1+ obj_i)))) ;_图元名
(setq obj_vla (vlax-ename->vla-object obj_name)) ;_Vla对象
(setq oldentlast (entlast))
(command "_region" obj_name "") ;_创建面域
(setq newentlast (entlast))
(if (equal oldentlast newentlast) ;_如果创建面域不成功
(progn
(setq errhan (cons (cdr (assoc 5 (entget obj_name))) errhan))
)
(progn
(setq obj_area (vla-get-Area obj_vla)) ;_面积
(setqobj_area (/ obj_area jd))
(setq pt (vlax-safearray->list
(vlax-variant-value
(vla-get-centroid
(vlax-ename->vla-object newentlast)
)
)
)
) ;_取得面域或实体的面积或质量的中点
(command "-text"
"j"
"mc"
pt
area_h
0
(rtos obj_area 2 area_ws)
)
(entdel newentlast)
)
)
)
(if errhan
(progn
(princ "\n没有标注面积的图元句柄列表:\n")
(princ errhan)
)
)
(setvar "DELOBJ" oldDELOBJ)
(setvar "cmdecho" oldcmdecho)
)
)
(princ)
)
本帖最后由 牛仔key 于 2015-1-16 11:13 编辑
(strcat "Area=" mianji "m%%1402")
我使用的是TSSD,TSSD里面%%1402就是平方 谢谢 牛仔 提示 回去研究 把“(rtos obj_area 2 area_ws)”一句改为“(strcat (rtos obj_area 2 area_ws) "m2") ”试试。 (strcat "平方:"(rtos (* (vla-get-area (vlax-ename->vla-object s1)) 0.000001) 2 3) " m\\U+00b2") 谢谢每一位回复的.谢谢了
ll_j成功了.感恩 本帖最后由 香田里浪人 于 2015-1-16 19:25 编辑
把"(rtos obj_area 2 area_ws)”一句改为"(strcat (rtos obj_area 2 area_ws) "㎡") "也可改为“(strcat "S="(rtos obj_area 2 area_ws) "㎡") ”试试。 牛仔key 发表于 2015-1-16 11:11 static/image/common/back.gif
(strcat "Area=" mianji "m%%1402")
我使用的是TSSD,TSSD里面%%1402就是平方
TSSD%%1402就是平方%%141取消! 香田里浪人 发表于 2015-1-16 19:21 static/image/common/back.gif
把"(rtos obj_area 2 area_ws)”一句改为"(strcat (rtos obj_area 2 area_ws) "㎡") "也可改为“(strcat "S ...
㎡ 有些字体里没有这个会有??号.后来改成 1993063 提供的 "m\\U+00b2" 就好了,谢谢大家 学习了!!!
页:
[1]
2