怎麼使用+法
本帖最后由 张大锤 于 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 怎么办
[*](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)
[*])
masterlong 发表于 2018-7-22 14:34
楼主的逻辑没搞懂
楼上的逻辑也没搞懂
哈哈 可能我表达的能力不好强
大约是这么个意思
地暖的水阀 有5个口的 (这里我表达为5P)
cc1 代表的是 1p水阀 要接1跟地热管
cc2 代表的是 2p水阀 要接2跟地热管
......
cc1 是一个块 cc1代表的是1跟水管 所以cc1=数量1
我想统计出这个房间 要使用多少跟地热管
就全图选择都用了那个水阀的块名
用块名来判断出我要买多少根地热管
(总体意思就是:用块名判断数量)
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 這麼簡練的函數... 看不懂啥意思 你这是要计算块的数量? 没看明白到底要实现什么,如果只是用块代表的数字求和,就不知道你说的计算的不对是哪里不对,如果是要统计每种块的数量,公式看着又不对 evayleung 发表于 2018-7-19 20:05
你这是要计算块的数量?
嗯對 就是計算這個數量 你這個每次選擇 我有想過 但是比較麻煩用循環的話 會比較方便 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 i 15)
(repeat i
(set (read (strcat "cc" (itoa i))) 0)
(Setq i (1- i))
) (apply '+ (vl-remove nil (list cc1 cc2 cc3 cc4 cc5)))
但是不明白程序的意图
页:
[1]
2