明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1292|回复: 15

[提问] 怎麼使用+法

[复制链接]
发表于 2018-7-19 19:28 | 显示全部楼层 |阅读模式
本帖最后由 张大锤 于 2018-7-19 19:46 编辑

(defun c:tt()
(setq AA (ssget "x" '((0 . "INSERT")(2 . "BB*"))))
(setq m 0)
(repeat (sslength AA)
(setq AAA (cdr (assoc 2 (entget (ssname AA m)))))
(if (= AAA "BB1P")(setq cc1 1))
(if (= AAA "BB2P")(setq cc2 2))
(if (= AAA "BB3P")(setq cc3 3))
(if (= AAA "BB4P")(setq cc4 4))
(if (= AAA "BB5P")(setq cc5 5))
(setq m(1+ m))
)
(setq zs (+ cc1 cc2 cc3 cc4 cc5))
(princ)
)


(if (= AAA "BB1P")(setq cc1 1)(setq cc1 0) )
(if (= AAA "BB2P")(setq cc2 2)(setq cc2 0) )
(if (= AAA "BB3P")(setq cc3 3)(setq cc3 0) )
(if (= AAA "BB4P")(setq cc4 4)(setq cc4 0) )
(if (= AAA "BB5P")(setq cc5 5)(setq cc5 0) )
这么写我试了 计算的不对

有的时候图面上 对于上边的块是不固定的 有的时候是1+2 有的时候是2+4
图面上没有其他块就会=nil  就计算不出来总数了 !zs 就会报错
请问朋友们 这个要怎么才能计算出来

(请大家不要纠结使用If还是(cond)
简写版
(setq cc1 1)
(setq cc2 2)
(setq cc3 nil)
(setq cc4 4)
(setq cc5 nil)
(setq zs (+ cc1 cc2 cc3 cc4 cc5))

nil 怎么办




发表于 2018-7-19 20:09 | 显示全部楼层
  • (defun c:tt()
  • (Setq cc1 0 cc2 0 cc3 0 cc4 0 cc5 0)
  • (if (ssget "x" '((0 . "INSERT")(2 . "BB1P")))
  •   (Setq cc1 1)
  • )
  • (if (ssget "x" '((0 . "INSERT")(2 . "BB2P")))
  •   (Setq cc2 2)
  • )
  • (if (ssget "x" '((0 . "INSERT")(2 . "BB3P")))
  •   (Setq cc3 3)
  • )
  • (if (ssget "x" '((0 . "INSERT")(2 . "BB4P")))
  •   (Setq cc4 4)
  • )
  • (if (ssget "x" '((0 . "INSERT")(2 . "BB5P")))
  •   (Setq cc5 5)
  • )
  • (setq zs (+ cc1 cc2 cc3 cc4 cc5))
  • (princ)
  • )
 楼主| 发表于 2018-7-24 16:02 | 显示全部楼层
masterlong 发表于 2018-7-22 14:34
楼主的逻辑没搞懂
楼上的逻辑也没搞懂

哈哈 可能我表达的能力不好强
大约是这么个意思

地暖的水阀 有5个口的 (这里我表达为5P)

cc1 代表的是 1p水阀 要接1跟地热管
cc2 代表的是 2p水阀 要接2跟地热管
......

cc1 是一个块 cc1代表的是1跟水管 所以cc1=数量1
我想统计出这个房间 要使用多少跟地热管
就全图选择都用了那个水阀的块名
用块名来判断出我要买多少根地热管
(总体意思就是:用块名判断数量)

 楼主| 发表于 2018-7-20 08:45 | 显示全部楼层
evayleung 发表于 2018-7-19 20:09
  • (defun c:tt()
  • (Setq cc1 0 cc2 0 cc3 0 cc4 0 cc5 0)
  • (if (ssget "x" '((0 . "INSERT")(2 .  ...

  • 朋友請問這個你了解嘛

    (Setq cc1 0 cc2 0 cc3 0 cc4 0 cc5 0 cc6 0 cc7 0 cc8 0 cc9 0 cc10 0 cc11 0 cc12 0 cc13 0 cc14 0 cc15 0)
    因為有15個 這樣的塊名 所以要寫15個
    有啥函數可以cc1 0 - cc15 0 這麼簡練的函數...
    发表于 2018-7-19 20:01 | 显示全部楼层
    看不懂啥意思
    发表于 2018-7-19 20:05 | 显示全部楼层
    你这是要计算块的数量?
    发表于 2018-7-19 20:33 来自手机 | 显示全部楼层
    没看明白到底要实现什么,如果只是用块代表的数字求和,就不知道你说的计算的不对是哪里不对,如果是要统计每种块的数量,公式看着又不对
     楼主| 发表于 2018-7-19 20:49 | 显示全部楼层
    evayleung 发表于 2018-7-19 20:05
    你这是要计算块的数量?

    嗯對 就是計算這個數量 你這個每次選擇 我有想過 但是比較麻煩用循環的話 會比較方便
     楼主| 发表于 2018-7-20 08:06 | 显示全部楼层
    evayleung 发表于 2018-7-19 20:09
  • (defun c:tt()
  • (Setq cc1 0 cc2 0 cc3 0 cc4 0 cc5 0)
  • (if (ssget "x" '((0 . "INSERT")(2 .  ...

  • 好像也就是你這個可以
    发表于 2018-7-20 11:25 | 显示全部楼层
    (setq i 15)
    (repeat i
        (set (read (strcat "cc" (itoa i))) 0)
              (Setq i (1- i))
    )
    发表于 2018-7-20 11:53 | 显示全部楼层
    (apply '+ (vl-remove nil (list cc1 cc2 cc3 cc4 cc5)))
    但是不明白程序的意图
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

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

    GMT+8, 2024-4-25 17:13 , Processed in 4.534666 second(s), 27 queries , Gzip On.

    Powered by Discuz! X3.4

    Copyright © 2001-2021, Tencent Cloud.

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