请教求大量线交点是读写DXF文件速度快还是LISP中写表快
本帖最后由 x_s_s_1 于 2011-12-7 00:23 编辑请各位大侠指教,写了如下代码,速度奇慢无比,基本想法是在所有线交点上画圆,以前有朋友用VBA写过一个,是通过将图元写为DXF然后在DXF文件中操作的,速度很快。不知为何?按道理LISP写表应该快一些
(vl-load-com)
;;;以下代码来自bbs.mjtd.com
;;;计算曲线交点
(defun Curveinters (en1 en2 / pl pts)
(setq pl(vlax-invoke (vlax-ename->vla-object en2) 'IntersectWith (vlax-ename->vla-object en1) acExtendNone))
(while pl
(setq pts (append pts (list (list (car pl) (cadr pl) (caddr pl))))
pl (cdr (cdr (cdr pl)))
)
)
pts
)
;;;曲线选择集交点
(defun ssinters (ss / pts en1 en2)
(while (> (sslength ss) 1)
(setq en1 (ssname ss 0))
(ssdel en1 ss)
(setq n (sslength ss))
(repeat n
(setq en2 (ssname ss (setq n (1- n))))
(setq pts (append pts (Curveinters en1 en2)))
)
)
pts
)
;;;删除表中重复图元.不支持表中表的重复图元.
;;; (gps->lst-delsame '(1 2 1 2 (1 1) (1 2 1 2 1) 1 2 (1 1) (1 2)))
;;;-->(1 2 (1 1) (1 2 1 2 1) (1 2))
(defun gps->lst-delsame (lst / lstitem lstnew)
(foreach lstitem lst
(if (not (member lstitem lstnew))
(setq lstnew (append lstnew (list lstitem)))
)
)
lstnew
)
;;;以上代码来自bbs.mjtd.com
(setq ss (ssget))
(setq ptlst (gps->lst-delsame (ssinters ss)))
(foreach pt ptlst (command "circle" pt 100)) 不好意思,是我自己脑袋被门挤了,进入误区了,解题方式有误,应该直接求直线端点,交点的组合太多了 能把你的求交点的代码,贴出来吗?我也在学习求交点的代码 hhh454 发表于 2012-5-30 20:09 static/image/common/back.gif
能把你的求交点的代码,贴出来吗?我也在学习求交点的代码
求交点的代码上面有,我后来的处理方法是提取直线端点就行了
页:
[1]