基于ACAD平台的给排水制图程序
) ;while 语句结果
(setq n0)
(if(/=(ntnk2)″b″)(setq 1(entget(nth n k2))(setq 1 nil))
(while 1; while 语句开始
;对所选项的PLINE线实体进行旋转处理,角度45度
(if(/=(cdr(assoc 0 (entget(nth nk2))))/"ABC/")
;if语句开始对复合弧线不处理
(progn(setq z(cdr(assoc381)))
p1(assoc 10 1)la (cdr(assoc 8 1))
m(-(length 1)(length(member p11)))
p2(cdr(nth(+m4)1))p1(cdrp1)
;p1 起点坐标,p2终点坐标
(setqx1(carp1)x2(car p2)y1(cadrp1)
y2(cadr p2)dy1(-y1y)dy2(-y2y))
(setq p3 (list(+x1(*(cos ang )dy1))(+y1z(*(-(sin ang)1)dy1)))
p4(list(+x2(*(cos ang)dy2))(=y2z(*(-(sin ang)1)dy2))))
(setq 1(subst(cons 380.0)(assoc 381)1)
;修改高度信息
1(subst(cons 10p3)(nth m 1)1)
;修改起点坐标信息
1(subst(cons 10p4)(mth m4)1)1))
;修改终点坐标信息
(entmod 1)
));if语句结束
(setqn( =1n))
(if(/=(nthnk2)″b″)(setq1 (entget(nth n k2)))
(setq 1 nil))
);while语句结束
(setq n0)
(if(/=(nt n k1)″a″)(setq 1(entget(nthn k1)))
(setq 1 nil))
while 1 ;while语句开始,对所选的
;TEXT、BLOCK、ATTRIBUTE等实
;体进行旋转及平移处理,角度
;45度
if(=nil(assoc 111))(setq p1(cdr(assoc 101 )))
;if 语句开始
(if(=0.0(nth 1(assoc 1 1 1)))(setq p1(cdr
(assoc 101)));if 语句开始
(setq p1(cdr(assoc111)))
);if 语句结束,本语句对文字对齐方式的判断,并提取高度和插入点信息
);if 语句结束,本语句对是否为文字的判断,并提取高度和插入点信息
(setq x1(carp1)y1(cadrp1)z(nth 2p1))
(setq dy 1(-y1y)
(setq p3(list(=x1(*( cos ang)dy1))(=y1z(*(-(sin ang)1))))
(if (=nil(assoc 111));if 语句开始
(progn(setq 1(subst(cons 10 p3)(assoc 101)1))
(entmod 1))
(if(=0.0(nth1(assoc 111)));if 语句开始
(progn(setq 1(subst(cons 10p3)(assoc 101)1))
(entmod 1)
);end of PROGN
(progn(setq1(subst(cons11p3)(assoc111)1))
(entmod 1)
);end of PROGN
);if语名结束,本语句对文字对齐方式的判断,并修改高度和插入点信息
);if 语名结束,本语句对是否为文字的判断,并修改高度和插入点信息
(setq name(cdr(assoc 01)))
(if(=(cdr(assoc661))1) ;if 语句开始,是否为带属性的块
(progn(setq11(entget(entnext(cdr(assoc-11))))
(setq p1(cdr(assoc1111)))
(setqx1(car p1)y1(cadr p1)
(setq p3(list(+x1(*(cos ang)dy1))(+y1z(*(-(sin ang)1)dy1))))
(setq 11(subst(cons11p3)(assoc11 11)11))
(entmod11)
)) ;if语句结束,修改中属性的插入点信息
(setq ang(/(cdr(assoc 501))2))
(setq1(subst(cons 50 ang)(assoc 501)1))
(entmod1); 通过修改块的插入角度信息进行旋转
(setq n(+1n)
(if(/=(nth nk1)″a″)(setq1(entget(nth n k 1)))(setq 1 nil))
) ;while语句结束
(setq n 0)
(while(<n (sslengthss)); while 语句开始,对名为“ZXR-2035”的块
;进行高度平移处理
(setq stl(entget(ssname ss n )))
(setq pt1(cdr(assoc 10 stl)))
(if(/=″ZXR-2035″(cdr(assoc 2(entget(ssname ss n))))); if 语句开始
(progn
(setq pt1(list(carpt1)(cadrpot1)0))
(setq stl(subst(cons 10pt1)(assoc 10 st1(st1))
(entmod st1)));if 语句结束
(setqn(+1n))
) ;while语句结束
(redraw)
) ;defun 结束
5 实际运用
本程序通过笔者所在单位这几年来工程设计人员的运用,得到了逐步完善与推广,实践证明,该程序易学好用。故提炼出来与同仁商榷。
Tags:
作者:佚名评论内容只代表网友观点,与本站立场无关!
评论摘要(共 0 条,得分 0 分,平均 0 分)
查看完整评论