- 积分
- 6939
- 明经币
- 个
- 注册时间
- 2004-4-9
- 在线时间
- 小时
- 威望
-
- 金钱
- 个
- 贡献
-
- 激情
-
|

楼主 |
发表于 2004-11-24 13:36:00
|
显示全部楼层
谢谢你,飞哥!
这是一段展点程序,我这只是其中的一小段代码,在主程序中还有读数据,循环展点等等,我试着展了大约3000点,等了好半天,我想,问题可能出在建立选集上面,下面这一句:
(setq s0 (ssget "X" '((2 . "GC200"))))(stbm s0 "a") 和
(setq s0 (ssget "X" '((0 . "TEXT"))))(stbm s0 "ad")
一句上面,因为,如果在前面加上循环以后,如:
(defun c:SSD (/ n zdx0 zdx s0)
(setq n 3000) ;n是读数据以后得来的(读数据代码此处略)
(repeat n (command "insert" "gc200" (list y x h) 1.0 1.0 0) (setq s0 (ssget "X" '((2 . "GC200")))) (stbm s0 "a") (command "text" (list (+ y 0.5) (- x 0.75)) "2.0" "0" h) (setq s0 (ssget "X" '((0 . "TEXT"))))(stbm s0 "ad") )
)
则每展一点,就要进行一次选择,而按照这样一种过滤法,选择集s0里面就会累积重复,从而造成重复进行选择重复进行操作,那当然就慢了.还有一种办法就是先展点,后加入扩展数据,选集一次建立统一对选择集进行操作,我今天进行了测试,不是很慢.能忍受.但现在有一个问题:这是地形点展绘,我的数据是混着的,即既有岸上点,又有水下点,它们在图形数据库中的其他属性均相同,在没加入扩展属性以前是无法将它们区分开的.我展点的时候是用它们的编码进行识别的,要加入不同的扩展属性,以便今后选择区分.
请飞哥帮忙想想办法,能不能展一点只选择当前的这一点,我没找到这样的办法.
|
|