高飞鸟大师的源码
 - (defun C:am (/ ss l i totalarea ename obj entarea)
- (if (setq ss (ssget))
- (progn
- (vl-load-com)
- (setq modelspace (vla-get-Modelspace (vla-get-activeDocument (vlax-get-acad-object))))
- (setq l (sslength ss) i 0 totalarea 0 totlength 0)
- (repeat l
- (setq ename (ssname ss i))
- (setq obj (vlax-ename->vla-object ename))
- (if (vlax-property-available-p obj "area")
- (setq totalarea (+ (vlax-get-property obj 'area) totalarea))
- )
- (if (= (cdr (assoc 0 (entget ename))) "MLINE")
- (setq totlength (+ totlength (ml-length ename)))
- (setq totlength (+ totlength (vlax-curve-getdistatparam ename (vlax-curve-getendparam ename))))
- )
- (setq i (1+ i))
- )
- (setq text1 (strcat "总面积为: " (rtos totalarea 2 4) "平方单位")
- text2 (strcat "总长度为: " (rtos totlength 2 4) "单位")
- )
- (if (setq insertpt (getpoint "\n请输入文字插入点: "))
- (if (setq height (getdist "\n请输入文字高度:"))
- (setq insertp1 (vlax-3d-point insertpt)
- insertp2 (vlax-3d-point (polar insertpt (* 1.5 Pi) (* 1.5 height)))
- textobj1 (vla-addtext modelspace text1 insertp1 height)
- textobj2 (vla-addtext modelspace text2 insertp2 height)
- )
- )
- )
- )
- )
- )
- (defun ml-length (ename / j d ptlist)
- (foreach n (entget ename)
- (if (= (car n) 11)
- (setq ptlist (cons (cdr n) ptlist))
- )
- )
- (reverse ptlist)
- (setq j 0 d 0)
- (repeat (1- (length ptlist))
- (setq d (+ d (distance (nth j ptlist) (nth (1+ j) ptlist))))
- (setq j (1+ j))
- )
- d
- )
高飞版主的代码是将结果插入到文档中的,我想能不能用下面的的方式,即弹出结果? - ;;;调用vb输入框 by Xran
- ;;;promptstr 提示信息
- ;;;title 窗体标题栏信息
- ;;;default 缺省值
- (defun inputbox (promptstr title default)
- (vla-eval (vlax-get-acad-object)
- (strcat "ThisDrawing.setVariable "USERS5",inputBox (""
- promptstr
- "", ""
- title
- "", ""
- default
- "")"
- )
- )
- (getvar "users5")
- )
|