你好伙计们。。。
我编写了一个lisp程序,用于创建到多段线或直线的距离标签
它可以很好地处理LW多段线,但不能很好地处理直线。。
在不同点创建一些未知值
请帮我找到问题。。。
当做
甘尼什
- (defun c:test(/ ss c len mylist ssnm ent object sp ep ang ang1 mid p)
- (setq ss(ssget))
- (setq c 0)
- (setq len(sslength ss))
- (setq mylist'())
- (repeat len
- (setq ssnm(ssname ss c))
- (setq ent(entget ssnm))
- (setq object(cdr (assoc 0 ent)))
- (if (= object "LINE")
- (progn
- (setq asc10(cdr (assoc 10 ent)))
- (setq asc11(cdr (assoc 11 ent)))
- (setq mylist(append (list asc10) mylist))
- (setq mylist(append (list asc11) mylist))
- )
- )
- (if (= object "LWPOLYLINE")
- (progn
- (foreach vert ent
- (if (eq (car vert) 10)
- (setq mylist(cons (cdr vert) mylist))
- )
- )
- )
- )
- (setq c (1+ c))
- )
- (setq p 0)
- (repeat (1- (length mylist))
- (setq sp(nth p mylist))
- (setq ep(nth (1+ p) mylist))
- (setq ang(rtod (angle sp ep)))
- (if (and (>= ang 94.0) (<= ang 273.0))
- (setq ang1(rtod (angle ep sp)))
- (setq ang1(rtod (angle sp ep)))
- )
- (setq mid(polar sp (angle sp ep) (/ (distance sp ep) 2)))
- (command "TEXT" "J" "MC" mid "2" ang1 (rtos (distance sp ep)))
- (setq p (1+ p))
- )
- )
- (DEFUN RTOD (ANG)
- (/ (* ang 180) pi)
- )
未知值是关于什么的?如果你的意思是32.28085617578746。当前文本样式很可能具有定义的高度,因此命令调用将跳过
提示输入高度(在本例中为2),角度值将作为字符串结束
哎呀。。,不是这样的。我刚刚测试了你的代码,它确实创建了一个“在不同点创建的未知值”。。。等一下,我去看看 |