找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 892|回复: 6

[LISP函数]:简单的数字问题---有请高手

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

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

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

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

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

编程思路:

;一,   选择图元1:线长*0.5 叛断 若长度小于5. 计算有多少个 若大于5.计算线长相加和
;二,   选择图元2:线长*1    叛断 若长度小于5. 计算有多少个 若大于5.计算线长相加和
;三,   选择图元3:线长*1.5 叛断 若长度小于5. 计算有多少个 若大于5.计算线长相加和
;四,   文字输出:图元1小于5多少? 大于5线长和是?若无选择则不列印
;五,   文字输出:图元1小于5多少? 大于5线长和是?若无选择则不列印
;六,   文字输出:图元1小于5多少? 大于5线长和是?若无选择则不列印
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
 楼主| 发表于 2007-1-2 11:33:51 | 显示全部楼层
没人理我
哎自己顶一下吧
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2007-1-2 12:05:44 | 显示全部楼层
计算多少个?
多少个指的是所有有长度信息的实体还是单指直线?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2007-1-2 14:17:10 | 显示全部楼层
hao
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-1-3 09:02:29 | 显示全部楼层
答3楼:以下是小弟搞了好久没搞定的程式,你看一下就知道题意了
有请各位朋友帮忙重新做一个
           ---------------致礼!!!


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

;;;-----------------------------------------------------

(defun C:LU (/ CURVE TLEN SS N SUMLEN1 SUM)
   (vl-load-com)

  (PRINC "\n选择1 :")
  (IF(SETQ SS1(ssget '((0 . "CIRCLE,REGION,ELLIPSE,*LINE,ARC"))))(PRINC "\n1"))
  (PRINC "\n选择2 :")
  (IF(SETQ SS2(ssget '((0 . "CIRCLE,REGION,ELLIPSE,*LINE,ARC"))))(PRINC "\n2"))
  (PRINC "\n选择3 :")
  (IF(SETQ SS3(ssget '((0 . "CIRCLE,REGION,ELLIPSE,*LINE,ARC"))))(PRINC "\n3"))
  (IF(OR SS1 SS2 SS3)(PROGN
(SETQ SUMLEN 0.0)


(IF SS1  (setq SUMLEN1 1   SUM 0)
   (setq N 0)
   (repeat (sslength SS1)
     (setq CURVE (vlax-ename->vla-object (ssname SS N)))
     (if (/= (vla-get-objectname CURVE) "AcDbRegion")
       (setq TLEN (vlax-curve-getdistatparam
      CURVE
      (vlax-curve-getendparam CURVE)
    )
       )
       (setq TLEN (vla-get-perimeter CURVE))
     )
     (if (<= TLEN 5)
       (setq SUM (1+ SUM))  
       (setq SUMLEN1 (+ SUMLEN1 TLEN))
     )
     (setq N (1+ N))
   )
   (setq suma(strcat (rtos SUM 2 0) "个物件<=5长度"))
   (setq sumb (strcat ">5总长度=" (rtos SUMLEN1 2 5)))                     )


(IF SS2   (setq SUMLEN1 1   SUM 0)
   (setq N 0)
   (repeat (sslength SS2)
     (setq CURVE (vlax-ename->vla-object (ssname SS N)))
     (if (/= (vla-get-objectname CURVE) "AcDbRegion")
       (setq TLEN (vlax-curve-getdistatparam
      CURVE
      (vlax-curve-getendparam CURVE)
    )
       )
       (setq TLEN (vla-get-perimeter CURVE))
     )
     (if (<= TLEN 5)
       (setq SUM (1+ SUM))  
       (setq SUMLEN1 (+ SUMLEN1 TLEN))
     )
     (setq N (1+ N))
   )
   (setq sumc(strcat (rtos SUM 2 0) "个物件<=5长度"))
   (setq sumd (strcat ">5总长度=" (rtos SUMLEN1 2 5)))                    )


(IF SS3   (setq SUMLEN1 1   SUM 0)
   (setq N 0)
   (repeat (sslength SS3)
     (setq CURVE (vlax-ename->vla-object (ssname SS N)))
     (if (/= (vla-get-objectname CURVE) "AcDbRegion")
       (setq TLEN (vlax-curve-getdistatparam
      CURVE
      (vlax-curve-getendparam CURVE)
    )
       )
       (setq TLEN (vla-get-perimeter CURVE))
     )
     (if (<= TLEN 5)
       (setq SUM (1+ SUM))  
       (setq SUMLEN1 (+ SUMLEN1 TLEN))
     )
     (setq N (1+ N))
   )
   (setq sume(strcat (rtos SUM 2 0) "个物件<=5长度"))
   (setq sumf (strcat ">5总长度=" (rtos SUMLEN1 2 5)))                   )
  )
)
(setq j8(getpoint)  )
(command "_.text" "_S" "standard" j8 "5" "0" suma)
(command "_.text" "" sumb "_.text" "" sumc"_.text" "" sumd"_.text" "" sume"_.text" "" sumf )
)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2007-1-6 19:58:13 | 显示全部楼层
能写成这样,我也限佩服楼主,但我帮不上忙,还要向你学习
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2007-1-7 11:06:47 | 显示全部楼层
  1. [FONT=courier new](defun c:test ()  
  2.   (setq        ss (ssget '((0 . "*LINE,ARC,CIRCLE,ELLIPSE")))
  3.         k 0 l1 0 m 0 l2 0 n 0 l3 0 i -1
  4.   )
  5.   (while (setq s1 (ssname ss (setq i (1+ i))))
  6.     (setq leng (vlax-curve-getDistAtParam s1 (vlax-curve-getEndParam s1)))
  7.     (cond ((<= (* leng 0.5) 5) (setq k (1+ k)))
  8.           ((> (* leng 0.5) 5) (setq l1 (+ l1 leng)))
  9.     )
  10.     (cond ((<= (* leng 1) 5) (setq m (1+ m)))
  11.           ((> (* leng 1) 5) (setq l2 (+ l2 leng)))
  12.     )
  13.     (cond ((<= (* leng 1.5) 5) (setq n (1+ n)))
  14.           ((> (* leng 1.5) 5) (setq l3 (+ l3 leng)))
  15.     )
  16.   )
  17.   (princ(strcat"\n类型1(×0.5),长度小于等于5的有"(itoa k)"个;大于5的长度和为"(rtos l1 2 3)))
  18.   (princ(strcat"\n类型2(×1.0),长度小于等于5的有"(itoa m)"个;大于5的长度和为"(rtos l2 2 3)))
  19.   (princ(strcat"\n类型3(×1.5),长度小于等于5的有"(itoa n)"个;大于5的长度和为"(rtos l3 2 3)))  
  20.   (princ)
  21. )[/FONT]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-11-17 22:25 , Processed in 0.208513 second(s), 44 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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