明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2570|回复: 1

[求助]有请大哥动手

[复制链接]
发表于 2007-1-1 13:58 | 显示全部楼层 |阅读模式

这个东东我搞了好久没编好 (简单的东西并不是没有意义) 

有请前辈们编编试试,小弟先谢谢了 

编程思路:

;一,   选择图元1:线长*0.5 叛断 若长度小于5. 计算有多少个 若大于5.计算线长相加和
;二,   选择图元2:线长*1    叛断 若长度小于5. 计算有多少个 若大于5.计算线长相加和
;三,   选择图元3:线长*1.5 叛断 若长度小于5. 计算有多少个 若大于5.计算线长相加和
;四,   文字输出:图元1小于5多少? 大于5线长和是?若无选择则不列印
;五,   文字输出:图元1小于5多少? 大于5线长和是?若无选择则不列印
;六,   文字输出:图元1小于5多少? 大于5线长和是?若无选择则不列印

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
发表于 2007-1-2 08:58 | 显示全部楼层
大概看了看,主要是程序结构有问题。在if后面如果需要运行多个函数,这些函数要用progn函数括起来。
  1. (defun C:LU(/ CURVE TLEN SS N SUMLEN1 SUM)
  2.   (vl-load-com)
  3. (PRINC "\n选择1 :")
  4. (IF (SETQ SS1 (ssget '((0 . "CIRCLE,REGION,ELLIPSE,*LINE,ARC")))) (PRINC "\n1"))
  5. (PRINC "\n选择2 :")
  6. (IF (SETQ SS2 (ssget '((0 . "CIRCLE,REGION,ELLIPSE,*LINE,ARC")))) (PRINC "\n2"))
  7. (PRINC "\n选择3 :")
  8. (IF (SETQ SS3 (ssget '((0 . "CIRCLE,REGION,ELLIPSE,*LINE,ARC")))) (PRINC "\n3"))
  9. (IF (OR SS1 SS2 SS3) (PROGN
  10. (SETQ SUMLEN 0.0)
  11. (IF SS1 (progn
  12.   (setq SUMLEN1 1 SUM 0 N 0)
  13.   (repeat (sslength SS1)
  14.    (setq CURVE (vlax-ename->vla-object (ssname SS N)))
  15.    (if(/= (vla-get-objectname CURVE) "AcDbRegion")
  16.     (setq TLEN (vlax-curve-getdistatparam CURVE (vlax-curve-getendparam CURVE)))
  17.     (setq TLEN (vla-get-perimeter CURVE))
  18.    )
  19.    (if (<= TLEN 5)
  20.     (setq SUM (1+ SUM))  
  21.     (setq SUMLEN1 (+ SUMLEN1 TLEN))
  22.    )
  23.    (setq N (1+ N))
  24.   )
  25.   (setq suma (strcat (rtos SUM 2 0) "个物件<=5长度"))
  26.   (setq sumb (strcat ">5总长度=" (rtos SUMLEN1 2 5)))
  27. ))
  28. (IF SS2 (progn
  29.   (setq SUMLEN1 1 SUM 0 N 0)
  30.   (repeat (sslength SS2)
  31.    (setq CURVE (vlax-ename->vla-object (ssname SS N)))
  32.    (if (/= (vla-get-objectname CURVE) "AcDbRegion")
  33.     (setq TLEN (vlax-curve-getdistatparam CURVE (vlax-curve-getendparam CURVE)))
  34.     (setq TLEN (vla-get-perimeter CURVE))
  35.    )
  36.    (if (<= TLEN 5)
  37.     (setq SUM (1+ SUM))  
  38.     (setq SUMLEN1 (+ SUMLEN1 TLEN))
  39.    )
  40.    (setq N (1+ N))
  41.   )
  42.   (setq sumc (strcat (rtos SUM 2 0) "个物件<=5长度"))
  43.   (setq sumd (strcat ">5总长度=" (rtos SUMLEN1 2 5)))
  44. ))
  45. (IF SS3 (progn
  46.   (setq SUMLEN1 1 SUM 0 N 0)
  47.   (repeat(sslength SS3)
  48.    (setq CURVE (vlax-ename->vla-object (ssname SS N)))
  49.    (if (/= (vla-get-objectname CURVE) "AcDbRegion")
  50.     (setq TLEN (vlax-curve-getdistatparam CURVE (vlax-curve-getendparam CURVE)))
  51.     (setq TLEN (vla-get-perimeter CURVE))
  52.    )
  53.    (if (<= TLEN 5)
  54.     (setq SUM (1+ SUM))  
  55.     (setq SUMLEN1 (+ SUMLEN1 TLEN))
  56.    )
  57.    (setq N (1+ N))
  58.   )
  59.   (setq sume (strcat (rtos SUM 2 0) "个物件<=5长度"))
  60.   (setq sumf (strcat ">5总长度=" (rtos SUMLEN1 2 5)))
  61. ))
  62. ))
  63. (setq j8 (getpoint "\nInsert Point 文字插入点 :"))
  64. (command "_.text" "_S" "standard" j8 "5" "0" suma)
  65. (command "_.text" "" sumb "_.text" "" sumc"_.text" "" sumd"_.text" "" sume"_.text" "" sumf)
  66. (princ)
  67. )
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-5-20 02:53 , Processed in 0.145002 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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