可能的LISP请求-中断
可能的LISP请求-将圆分成等分-有没有一个Lisp程序的单词可以让我画一个圆,然后把它分成等分?
如果没有,有人能做一个吗?如果你正在做一个,你能做吗?所以我要做的就是输入节数。
提前感谢!!
-上海 很快,我做得很开心
(defun c:CBrk (/ ss tmp i j ent elst inc)
(vl-load-com)
(or Cbrk:num (setq Cbrk:num 2))
(cond ((setq ss (ssget '((0 . "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) inc (/ (* 2 pi) cBrk:num) j -1)
(repeat cbrk:num
(entmake (list (cons 0 "ARC")
(assoc8elst)
(assoc 10elst)
(assoc 40elst)
(cons50 (* (setq j (1+ j)) inc))
(cons51 (* (1+ j) inc)))))
(entdel ent))))
(princ))
哇,李,太快了,Lisp程序。是否可以从每个弧的中心到边缘绘制线?有道理? 当然:
(defun c:CBrk (/ ss tmp i j ent elst inc)
(vl-load-com)
(or Cbrk:num (setq Cbrk:num 2))
(cond ((setq ss (ssget '((0 . "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) inc (/ (* 2 pi) cBrk:num) j -1)
(repeat cbrk:num
(entmake (list (cons 0 "ARC")
(assoc8elst)
(assoc 10elst)
(assoc 40elst)
(cons50 (* (setq j (1+ j)) inc))
(cons51 (* (1+ j) inc))))
(entmake (list (cons 0 "LINE")
(assoc8 elst)
(assoc 10 elst)
(cons11 (polar (cdr (assoc 10 elst))
(* j inc)
(cdr (assoc 40 elst)))))))
(entdel ent))))
(princ))
为什么要去我的朋友!!!你是最棒的!还有快速的服务!
我对你感激不尽!我喜欢Lisp程序,再次感谢! 没问题Steve 李,我可以问一下,你有理由为不同的情况选择一个while或foreach循环,还是你只是喜欢把它混合在一起?
嗨,史蒂夫,
这取决于任务-使用选择集处理,如果我对每个实体执行多个操作,我将使用while循环重复,因为它更快。
(defun _while (ss / i lst)
(setq i -1)
(while (setq ent (ssname ss (setq i (1+ i))))
(setq lst (cons ent lst)))
lst)
(defun _repeat (ss / i lst)
(setq i -1)
(repeat (sslength ss)
(setq lst (cons (ssname ss (setq i (1+ i))) lst)))
lst)
(defun _mapcar (ss)
(vl-remove-if 'listp
(mapcar 'cadr (ssnamex ss))))
有趣的是,虽然mapcar代码是最优雅的,但ssnamex意味着它是迄今为止最慢的。
对于选择集处理以外的事情,这取决于我使用什么来控制迭代-在这种情况下(使用Steve的圆打断),它是一个集合数,因此需要重复。如果我遍历一个列表并依次处理每个元素,我可以使用while,并使用cdr在每次迭代中缩短列表。否则,如果我需要列表保持得体,我会使用foreach。
希望这有帮助,
李 这很有趣。当我开始理解mapcar和ssnamex时,我就坚持这样做了,但真的,听起来有些时候回到基础是最好的!
谢谢,我以后会考虑的。 打败我吧。当我不得不把孩子放在床上过夜时,我大约已经度过了三分之四的路程。决定和妻子一起看《德克斯特》,所以我要回到电脑前。实际上,我走的是同一条路线,所以我不会费心发布不完整的代码。很高兴,主人很高兴。干得好。
页:
[1]
2