“选择对象 或 单位|样式[毫米(1)/米(2)]<毫米(1)>:”
现在这一步需要输入"1、2或者空格回车"后,才能执行下一步选择对象的命令。
请问如何实现——
A.可以不输入12空格回车,直接就能选择对象,程序会按默认选项执行下去。
B.输入1或2后,不需要再加空格回车确认,直接执行下一步。
新手一枚,见笑了。
 - (defun C:TEST (/ ar_style ss l i tot_area ename obj entarea tot_length)
- (initget "1 2")
- (setq ar_style (getkword "\n选择对象 或 单位|样式[毫米(1)/米(2)]<毫米(1)>: "))
- (if (null ar_style)
- (setq ar_style "1"))
- (if (setq ss (ssget '((0 . "*POLYLINE,CIRCLE,ELLIPSE,SPLINE,REGION,ARC,LINE"))))
- (progn
- (vl-load-com)
- (setq modelspace (vla-get-Modelspace (vla-get-activeDocument (vlax-get-acad-object))))
- (setq l (sslength ss) i 0 tot_area 0 tot_length 0)
- (repeat l
- (setq ename (ssname ss i))
- (setq obj (vlax-ename->vla-object ename))
- (if (vlax-property-available-p obj "area")
- (setq tot_area (+ (vlax-get-property obj 'area) tot_area))
- )
- (if (= (cdr (assoc 0 (entget ename))) "MLINE")
- (setq tot_length (+ tot_length (ml-length ename)))
- (setq tot_length (+ tot_length (vlax-curve-getdistatparam ename (vlax-curve-getendparam ename))))
- )
- (setq i (1+ i))
- )
- ;;;根据制图单位选择数据比例
- (cond
- (( = ar_style "1")
- (setq tot_area (rtos (* 0.000001 tot_area) 2 2 ))
- (princ (strcat "总面积= " tot_area " ㎡" " 总长度= " (rtos (* 0.001 tot_length) 2 3 ) " m" ))
- )
- (( = ar_style "2")
- (setq ha_area (rtos (* 0.0015 tot_area) 2 2 ))
- (setq tot_area (rtos (* 1 tot_area) 2 2 ))
- (princ (strcat "总面积= " tot_area " ㎡" " 总长度= " (rtos (* 1 tot_length) 2 3 ) " m" " 折合 " ha_area " 亩"))
- )
- )
- ;;;把面积结果写在图纸上
- (setq set_point (getpoint "\n请点取计算面积书写位置:" ))
- (command "text" set_point (* 3 (GETVAR "DIMSCALE")) 0 tot_area)
- (princ)
- )
- )
- )
该贴已经同步到 mikary的微博 |