2009年5月9日星期六

从一整张CAD图中剪切一小部分的实用程序

注:本文来自明经CAD社区
从一整张CAD图中剪切一小部分的实用程序
(defunc:txjq3(/aaoldgroupoldcmdoldblipoldsnap
endpazpxp1ss1ss2sc
en1az1p2pn1pn2px1pxmax
)
(setvarLUPREC8)
(setqoldgroup(getvarpickstyle));保存编组开关
(setvarpickstyle0);关闭编组
(setqoldcmd(getvarcmdecho));保存控制command函数运行期间,AutoCAD是否回显提示和输入
(setvarcmdecho0);关闭command函数运行期间,AutoCAD回显提示和输入
(setqoldblip(getvarblipmode));保存控制点标记
(setvarblipmode0);关闭点标记
(setqoldsnap(getvarosmode));保存对象捕捉方式
(setvarosmode0);关闭对象捕捉式
(while
(or(=(if(=(setqen(nentselp\n选择作为剪切边界的闭合多段线:))
nil
)
(setqaa空选择!)
)
空选择!
)
(=(if(/=(cdr(assoc0(entget(caren))))LWPOLYLINE)
(setqaa类型错误!)
)
类型错误!
)
(=(if(and(/=(cdr(assoc70(entget(caren))))129)
(/=(cdr(assoc70(entget(caren))))1)
)
(setqaa线段不闭合!)
)
线段不闭合!
)
)
(alert(strcat选择错误-aa,重新选择!))
);选择控制
(setqent(caren))
(setvarosmodeoldsnap)
(setvarosmode16383)
(setqdp(getpoint\n请选择一点作为剪切基点.......))
(setvarosmode0)
(setqaz(entget(caren)))
(setqpx(list))
(while(assoc10az)
(setqp1(cdr(assoc10az)))
(setqaz(cdr(member(assoc10az)az)))
(setqpx(consp1px))
)
(setqpxmax(list
(apply'mapcar(cons'minpx))
(apply'mapcar(cons'maxpx))
))
(commandzoomw(carpxmax)(cadrpxmax))
(setqss(ssgetcppx))
(vl-cmdfcopyssdppause)
(setqdp1(getvarlastpoint))
(vl-cmdfcopyendpdp1)
(setqen(entlast))
(print\n正在剪切复制选中的图形,请稍侯......)
(setqpx(list))
(while(assoc10az)
(setqp1(cdr(assoc10az)))
(setqaz(cdr(member(assoc10az)az)))
(setqpx(consp1px))
)
(setqscen)
(commandoffset0.1scdp)
(setqen1(entlast))
(setqaz1(entgeten1))
(setqpx1(list))
(while(assoc10az1)
(setqp2(cdr(assoc10az1)))
(setqaz1(cdr(member(assoc10az1)az1)))
(setqpx1(consp2px1))
)
(setqpx1(cons(carpx1)(reversepx1)))
(commanderaseen1)
(while(setqpn1(carpx1)
pn2(cadrpx1)
)
(commandtrimenfpn1pn2)
(if(setqdel(ssgetf(listpn1pn2)))
(commanderasedel)
)
(setqpx1(cdrpx1))
)
(setvarLUPREC8)
(setvarpickstyleoldgroup)
(setvarcmdechooldcmd)
(setvarblipmodeoldblip)
(setvarosmodeoldsnap)
(princ)
)
图形剪切边界接触哦到块的话,请先分解块,剪切出来的图形复制在本图内,
如果要另存,请用带基点复制到新图。

1.运行AUTOCAD
2.工具-AUTOLISP-LOAD
3.找到你想要调用的LSP文件,点击LOAD,直至对话框下方提示:调用成功
4.点:关闭,返回CAD窗口
5.输入LSP命令即可(LSP命令一般在LSP文件的第一行有,比如C:XXX(.......),其中XXX就是)*

没有评论:

发表评论