CADMASTER1128 发表于 2022-7-5 16:51:42

我对Lisp程序有一个新的想法。可以对1/2的圆甚至圆弧应用相同的动作吗?

Lee Mac 发表于 2022-7-5 16:53:59

 
谢谢你,艾伦,我当时正好在附近
 
 
在编程中有很多方法可以完成同样的事情-有时我会选择一个更优雅的解决方案,即使它可能不是最快的,其他时候我会优化
 
 
我们拭目以待

Lee Mac 发表于 2022-7-5 16:59:12

试试这个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))

alanjt 发表于 2022-7-5 17:01:51

(cond ((setq ss (ssget '((0 . "ARC,CIRCLE"))))
不要忘记过滤锁定层。
6

Lee Mac 发表于 2022-7-5 17:05:23

干杯伙计-总是忘了

alanjt 发表于 2022-7-5 17:08:27

我只是因为盯着我写的一个旧的层更改例程才记得它,我不明白为什么它突然开始失败。

Lee Mac 发表于 2022-7-5 17:09:20

 
我以前做过类似的事情-我写了一个子函数来解锁/解冻所有层,并将其包装在vl catch all apply中的某个地方(你能做的最糟糕的事情…),可以找出为什么直到我发现你不能冻结/解冻当前层。。。

CADMASTER1128 发表于 2022-7-5 17:14:56

这个Lisp程序真的很好。。。再次感谢!!!

Lee Mac 发表于 2022-7-5 17:16:02

 
没问题

danielk 发表于 2022-7-5 17:19:23

 
天才一如既往。非常感谢李!!!
页: 1 [2]
查看完整版本: 可能的LISP请求-中断