如何加速这段代码?
本帖最后由 peraperson 于 2014-6-11 16:35 编辑想实现 ‘点表生成圆并填充’ 代码如下 发现运行很卡 如果不实现填充的话则无此问题
请问大家都是用什么方法实现填充的呢?或者说我的代码有什么可以改进的呢?
(mapcar '(lambda (p) (entmake (list (cons 0 "circle") (cons 10 p) (cons 40 10)))
(setq e1 (entlast))
(command "hatch" "s" e1 "" "p" "solid" "")
)
lst
)
谢谢 本帖最后由 ZZXXQQ 于 2014-6-12 07:56 编辑
(setvar "CMDECHO" 0)
(command "_.DONUT" 0 20)
(foreach p lst (command p))
(command "") (command"bhatch""p""SOLID")
(foreach p lst
(entmake(list (cons 0 "circle")(cons 10 p)(cons 40 10)))
(command p))
(command "") ZZXXQQ 发表于 2014-6-11 21:20 static/image/common/back.gif
谢谢Z版 用之前也有想用donut的想法 但是有个问题就是解决不了填充的图案不是solid的情况 llsheng_73 发表于 2014-6-11 21:36 static/image/common/back.gif
谢谢 用了bhatch 快了不少 本帖最后由 llsheng_73 于 2014-6-12 10:21 编辑
peraperson 发表于 2014-6-12 09:07 static/image/common/back.gif
谢谢 用了bhatch 快了不少
如果用ENTMAKE应该更快,但对于填充不知道怎么做,因为行业的原因一般不会涉及到它
只知道它的数据分为边界数据和图案数据,感觉比较麻烦就没去深究它 (mapcar '(lambda (p)
(entmake (list (cons 0 "circle") (cons 10 p) (cons 40 10)))
(command "hatch" "solid" (entlast) "")
)
lst
) COOL 大神交流地 本帖最后由 llsheng_73 于 2014-6-14 17:32 编辑
xyp1964 发表于 2014-6-12 10:32 static/image/common/back.gif
(command "hatch" "solid")
(mapcar '(lambda (p)(entmake (list (cons 0 "circle") (cons 10 p) (cons 40 10))) (command p))lst)
(command "")感觉这样会快些? 本帖最后由 langjs 于 2014-6-16 08:47 编辑
看我entmake大法,哈哈哈
速度是够快了,行不行楼主看着办,
(defun c:aa ( / lst na p ss)
(setq lst '())
(while (setq p (getpoint "\n点:"))
(setq lst (cons p lst))
)
(if (not na)
(progn
(entmake (list (cons 0 "circle") (cons 10 (car lst)) (cons 40 10)))
(command "hatch" "solid" (entlast) "")
(setq na (entlast))
(entmake (list '(0 . "block") '(2 . "*U") '(70 . 1) (cons 10 (car lst))))
(entmake (cdr (entget na)))
(setq na (entmake '((0 . "ENDBLK"))))
)
)
(setq ss (ssadd))
(foreach p lst
(entmake (list '(0 . "INSERT") (cons 2 na) (cons 10 p)))
(setq ss (ssadd (entlast) ss))
)
(command "explode" ss )
(princ)
)