明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1086|回复: 1

[提问] 用论坛上的代码改了一个面积和长度计算的程序,但功能不够完善,请指教。

[复制链接]
发表于 2016-1-15 15:45:02 | 显示全部楼层 |阅读模式
“选择对象 或 单位|样式[毫米(1)/米(2)]<毫米(1)>:”
现在这一步需要输入"1、2或者空格回车"后,才能执行下一步选择对象的命令。
请问如何实现——
A.可以不输入12空格回车,直接就能选择对象,程序会按默认选项执行下去。
B.输入1或2后,不需要再加空格回车确认,直接执行下一步。

新手一枚,见笑了。

  1. (defun C:TEST (/ ar_style ss l i tot_area ename obj entarea tot_length)
  2.   (initget "1 2")
  3.   (setq ar_style (getkword "\n选择对象 或 单位|样式[毫米(1)/米(2)]<毫米(1)>: "))
  4.   (if (null ar_style)
  5.     (setq ar_style "1"))
  6.   (if (setq ss (ssget '((0 . "*POLYLINE,CIRCLE,ELLIPSE,SPLINE,REGION,ARC,LINE"))))
  7.     (progn
  8.       (vl-load-com)
  9.       (setq modelspace (vla-get-Modelspace (vla-get-activeDocument (vlax-get-acad-object))))
  10.       (setq l (sslength ss) i 0 tot_area 0 tot_length 0)
  11.       (repeat l
  12.         (setq ename (ssname ss i))
  13.         (setq obj (vlax-ename->vla-object ename))
  14.         (if (vlax-property-available-p obj "area")
  15.         (setq tot_area (+ (vlax-get-property obj 'area) tot_area))
  16.         )
  17.         (if (= (cdr (assoc 0 (entget ename))) "MLINE")
  18.         (setq tot_length (+ tot_length (ml-length ename)))
  19.         (setq tot_length (+ tot_length (vlax-curve-getdistatparam ename (vlax-curve-getendparam ename))))
  20.         )
  21.         (setq i (1+ i))
  22.       )  
  23.       ;;;根据制图单位选择数据比例      
  24.       (cond
  25.         (( = ar_style "1")
  26.         (setq tot_area (rtos (* 0.000001 tot_area) 2 2 ))
  27.         (princ (strcat "总面积= " tot_area " ㎡" "    总长度= " (rtos (* 0.001 tot_length) 2 3 ) " m" ))
  28.         )
  29.         (( = ar_style "2")
  30.         (setq ha_area (rtos (* 0.0015 tot_area) 2 2 ))
  31.         (setq tot_area (rtos (* 1 tot_area) 2 2 ))
  32.         (princ (strcat "总面积= " tot_area " ㎡" "    总长度= " (rtos (* 1 tot_length) 2 3 ) " m"  "    折合 " ha_area " 亩"))
  33.         )      
  34.       )
  35.       ;;;把面积结果写在图纸上
  36.       (setq set_point (getpoint "\n请点取计算面积书写位置:" ))
  37.       (command "text" set_point (* 3 (GETVAR "DIMSCALE")) 0 tot_area)
  38.       (princ)
  39.     )
  40.   )
  41. )



该贴已经同步到 mikary的微博
发表于 2017-11-24 08:56:49 | 显示全部楼层
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2025-5-20 01:47 , Processed in 0.182108 second(s), 29 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表