本帖最后由 zhynt 于 2011-6-13 21:57 编辑
我用了,没死。
不过还是稍微改了一下。
;;;--------------------------功能:天正门窗居中(单选)--------------------------------
;;;可能entmod函数修改块定义中的图元,但这样做可能会生成引用自身的块,导致AutoCAD系统崩溃。
;;;改为单,entmake 处理,还是崩溃。
 - (defun C:E1 (/ SS YY_TEMP YY_WZIL
- YY_CHUANZ YY_WZDX YY_WZDY YY_NEWXYZ
- YY_NEWCZIL
- )
- (princ
- "选择要居中门窗,只改一个,命令前后注意保存,连续处理几个会崩溃"
- )
- (while (setq SS (ENTSEL))
- (setq YY_TEMP (ENTGET (CAR SS))) ;得到所选的资料
- (IF (= "TCH_OPENING" (CDR (ASSOC 0 YY_TEMP)))
- (PROGN
- (setq YY_WZIL (ENTGET (CDR (assoc 330 (CDR (CDR (CDR YY_TEMP))))))
- ;得到墙的资料
- YY_CHUANZ (CADDR (CDR (assoc 10 YY_TEMP)))
- YY_WZDX (/ (+ (CAR (CDR (assoc 10 YY_WZIL)))
- (CAR (CDR (assoc 11 YY_WZIL)))
- )
- 2
- )
- YY_WZDY (/ (+ (CADR (CDR (assoc 10 YY_WZIL)))
- (CADR (CDR (assoc 11 YY_WZIL)))
- )
- 2
- )
- YY_NEWXYZ (CONS '10 (LIST YY_WZDX YY_WZDY YY_CHUANZ))
- ;得到窗户居中插入的插入点坐标并形成资料格式
- YY_NEWCZIL (SUBST YY_NEWXYZ (assoc 10 YY_TEMP) YY_TEMP)
- ) ;更新坐标资料
- (command "_.erase" SS "") ;按删掉旧图元
- (ENTMAKE YY_NEWCZIL) ;按新资料重建图元
- )
- (princ "对象类型选错了!!!!")
- )
- )
- (prinC "程序完毕!!注意保存!!!随时死机!!!")
- )
|