试试这个
-
- (defun c:hln(/ LAS OS R1 R2 XNv XFv r2v Y1v X1v X2v P1v P2v xnh xfh r2h y1h x1h x2h p1h p2h)
- (SETVAR "CMDECHO" 0)
- (SETQ LAS(GETVAR "CLAYER"))
- (SETQ OS (GETVAR "OSMODE"))
- (initget "V H")
- (setq direc(getkword "Type: Vert/Horiz<current>"))
- ;need to change from horizontal to vertical
- ;swap involves components of chosen line
- ;if statement should control use of those components
- ;simple way, if V then change components to XNV versus XNH, etc.
- (command "layer" "s" "hid" "")
- (setvar "osmode" 512)
- (cond
- ((if(= "V" direc)
- (
- (SETQ R1(ENTSEL "Pick line: "))
- (SETQ XNv(GETPOINT "Pick BOTTOM side of plate: "))(terpri);point selected on top line
- (SETQ XFv(GETPOINT "Pick TOP hside of plate: "))(terpri);point selected on bottom line
- (setq R2v(entget(car R1)))
- (setq Y1v(CADR(ASSOC 10 R2v))) ;X COORDINATE
- (setq X1v(CADR XNv)) ;BOTTOM SIDE Y COORDINATE
- (setq X2v(CADR XFv)) ;TOP SIDE Y COORDINATE
- (SETQ P1v(LIST Y1v X1v))
- (SETQ P2v(LIST Y1v X2v))
- (command "line" p1v p2v /c/c)
- ))
- ((if(= "H" direc)
- (
- (SETQ R2(ENTSEL "Pick line: "))
- (SETQ XNh(GETPOINT "Pick RIGHT side of plate: "))(terpri)
- (SETQ XFh(GETPOINT "Pick LEFT side of plate: "))(terpri)
- (setq R2h(entget(car R2)))
- (setq Y1h(CADDR(ASSOC 11 R2h))) ;Y COORDINATE
- (setq X1h(CADR XNh)) ;NEAR SIDE X COORDINATE
- (setq X2h(CAR XFh)) ;FAR SIDE X COORDINATE
- (SETQ P1h(LIST X2H Y1h))
- (SETQ P2h(LIST X1h Y1h))
- (command "line" p1h p2h /c/c)
- ))
- )))
- (COMMAND "LAYER" "S" LAS "")
- (SETVAR "OSMODE" 183)
- (PRINC)
- )
条件写入错误。 |