并不是所有都会,随便新建一个.dwg没什么问题,
可是在工作中,dwg文件大小单位为M,有N个布局的情况下,很容易在陷入死循环中,while()前后加个princ 1,princ 2就能知道,是这个while的问题。
原本是采用redraw来隐藏实体,可是2004下经常不买帐,才改用entdel来实现,虽然比redraw要好点,可是还是出现问题。
原本在r14下工作中没问题,可是因为工作原因,需要在布局下绘图,才用2004,经常出现这个问题,太多程序用了这个函数,俺都头疼。。。。。
很简陋的方法就是只能把其他需要过滤的东东,自己先把他隐藏起来,程序才能得以顺利执行。
比如这个程序:

- [FONT=courier new]
- (defun c:zdz ( / arg lay ln1 ln1_ss p0 x)
- (chengs_error)
- (chengs_getvar)
- (chengs_fun "chengs_ctbl")
- (setq x (/ chengs_ctbl 100.0))
- (setq p0 (getpoint "\n 选择插入点: "))
- (setq arg (getangle p0 "\n 插入角度 : "))
- (if (null arg) (setq arg 0))
- (setq ln1_ss (chengs_ssgetPoint p0 (list (cons 0 "*LINE")) ))
- (if ln1_ss
- (progn
- (setq ln1 (ssname ln1_ss 0))
- (setq lay (cdr(assoc 8 (entget ln1))))
- (setvar "clayer" lay)
- ) ;endthen
- );endif
- (setq arg (chengs_pi2r arg))
- (if p0
- (command ".insert" "./dwg/zdz.dwg" p0 x x arg)
- )
- (chengs_setvar)
- );endfun
- [/FONT]
|