 - (defun c:mjjstj(/ ACADDOC ACADSPC OBJAREA OBJLLPOINT OBJRUPOINT SELECTIONSET TEXTBASEPOINT TEXTHEIGHT TEXTINDEX TEXTOBJ)
- (vl-load-com)
- (setvar "cmdecho" 0)
- (setq AcadDoc (vla-get-activedocument (vlax-get-acad-object)))
- (if (= (getvar "TILEMODE") 1)
- (setq AcadSpc (vla-get-modelspace AcadDoc))
- (setq AcadSpc (vla-get-paperspace AcadDoc))
- )
- (if (= (setq TextHeight (getdist "\n输入标注文字高度<2.5>:")) nil)
- (setq TextHeight 2.5) ;默认标注文字高度2.5
- )
- (setq ;Textbh (getstring "\n输入编号前缀:")
- Textbh "" ;取消前辍
- TextIndex 1
- )
-
- (if (not (setq f (getfiled "指定输出文件路径" "" "xls" 1)))
- (vl-exit-with-error (alert "没有指定输出文件,程序自动结束!"))
- (if (setq ss (ssget '((0 . "CIRCLE,LWPOLYLINE,ELLIPSE"))))
- (progn
- (setq f (open f "a"));;;指定输出文件路径
- (write-line "编号\t面积(㎡)" f)
- (command "layer" "M" "计算面积" "C" "6" "" "LT" "CONTINUOUS" "" "");设置一个标注图层
- (command "style" "tukou" "黑体" "0" "0.7" "0" "" "")
- (setvar"dimzin"0);;保留小数位数时如果位数不足可以补零
- (setq Selectionset (vla-get-activeselectionset AcadDoc))
- (setq tarea 0 )
- (vlax-for Obj Selectionset
- (setq ObjArea (vla-get-area obj)
- ObjLlPoint nil
- ObjRuPoint nil
- )
- (vla-GetBoundingBox Obj 'ObjLlPoint 'ObjRuPoint)
- (setq TextBasePoint (mapcar '(lambda(x y) (/ (+ x y) 2)) (vlax-safearray->list ObjLlPoint)(vlax-safearray->list ObjRuPoint))
- TextObj (vla-addtext AcadSpc ;(strcat Textbh (itoa TextIndex) "=" (rtos (/ ObjArea 1) 2 2) "㎡")
- (strcat Textbh (itoa TextIndex) "=" (rtos (/ ObjArea 1e6) 2 2) "拾万㎡");小数点向左移6位
- (vlax-3d-point TextBasePoint)
- TextHeight
- )
- )
- ;(write-line (strcat (strcat Textbh (itoa TextIndex)) "\t" (rtos (/ ObjArea 1)2 2) ) f)
- (write-line (strcat (strcat Textbh (itoa TextIndex)) "\t" (rtos (/ ObjArea 1e6)2 2) ) f);小数点向左移6位
- (vla-put-alignment TextObj acAlignmentCenter)
- (vla-put-TextAlignmentPoint TextObj (vlax-3d-point TextBasePoint))
- ;(setq tarea (+ ObjArea tarea))
- (setq tarea (+ (/ ObjArea 1e6) tarea));小数点向左移6位
- (setq TextIndex (1+ TextIndex))
- )
- (close f)
- (if (setq insPt0 (getpoint "\n请输入文字插入点<回车则不写入>:"))
- (progn
- (setq l (sslength ss))
- (setq tarea (/ tarea 1))
- (setq bb (strcat Textbh "=" Textbh "1+" Textbh "2+...+" Textbh (itoa l) "=" (rtos tarea 2 2) "拾万㎡"))
- (command "_text" insPt0 TextHeight "" bb 0)
- )
- )
- )
-
- (vl-exit-with-error (alert "没有选取任何要算面积的图元,程序自动结束!"))
- )
- )
-
- (setvar "cmdecho" 1)
- (prin1)
- )
|