谢谢你,艾伦,我当时正好在附近
在编程中有很多方法可以完成同样的事情-有时我会选择一个更优雅的解决方案,即使它可能不是最快的,其他时候我会优化
我们拭目以待 试试这个Steve:
(defun c:CBrk (/ ss tmp i j ent elst inc st)
(vl-load-com)
(or Cbrk:num (setq Cbrk:num 2))
(cond ((setq ss (ssget "_:L" '((0 . "ARC,CIRCLE"))))
(initget 6)
(and (setq tmp (getint (strcat "\nSpecify Number of Sections <" (itoa Cbrk:num) "> : ")))
(setq Cbrk:num tmp))
(setq i -1)
(while (setq ent (ssname ss (setq i (1+ i))))
(setq elst (entget ent) j -1)
(cond ((eq "CIRCLE" (cdr (assoc 0 elst)))
(setq inc (/ (* 2 pi) cBrk:num) st 0.))
(t (setq inc (/ (- (cdr (assoc 51 elst))
(setq st (cdr (assoc 50 elst)))) cBrk:num))))
(repeat cbrk:num
(entmake (list (cons 0 "ARC")
(assoc8elst)
(assoc 10elst)
(assoc 40elst)
(cons50 (+ st (* (setq j (1+ j)) inc)))
(cons51 (+ st (* (1+ j) inc)))))
(entmake (list (cons 0 "LINE")
(assoc8 elst)
(assoc 10 elst)
(cons11 (polar (cdr (assoc 10 elst))
(+ st (* j inc))
(cdr (assoc 40 elst)))))))
(if (eq "ARC" (cdr (assoc 0 elst)))
(entmake (list (cons 0 "LINE")
(assoc8 elst)
(assoc 10 elst)
(cons11 (polar (cdr (assoc 10 elst))
(+ st (* (1+ j) inc))
(cdr (assoc 40 elst)))))))
(entdel ent))))
(princ))
(cond ((setq ss (ssget '((0 . "ARC,CIRCLE"))))
不要忘记过滤锁定层。
6 干杯伙计-总是忘了 我只是因为盯着我写的一个旧的层更改例程才记得它,我不明白为什么它突然开始失败。
我以前做过类似的事情-我写了一个子函数来解锁/解冻所有层,并将其包装在vl catch all apply中的某个地方(你能做的最糟糕的事情…),可以找出为什么直到我发现你不能冻结/解冻当前层。。。 这个Lisp程序真的很好。。。再次感谢!!!
没问题
天才一如既往。非常感谢李!!!
页:
1
[2]