不客气
尝试以下操作,更改高亮显示的块名称以适合:
- ([color=BLUE]defun[/color] c:mymeasure ( [color=BLUE]/[/color] *error* bd bn cm di en in ln ob p1 p2 sn sp x1 )
- ([color=BLUE]setq[/color] bn [color=MAROON][highlight]"myblock"[/highlight][/color]) [color=GREEN];; Name of block to insert[/color]
- ([color=BLUE]defun[/color] *error* ( msg )
- ([color=BLUE]if[/color] ([color=BLUE]and[/color] ([color=BLUE]=[/color] 'vla-object ([color=BLUE]type[/color] ln)) ([color=BLUE]not[/color] ([color=BLUE]vlax-erased-p[/color] ln)))
- ([color=BLUE]vl-catch-all-apply[/color] '[color=BLUE]vla-delete[/color] ([color=BLUE]list[/color] ln))
- )
- ([color=BLUE]if[/color] ([color=BLUE]=[/color] 'int ([color=BLUE]type[/color] cm))
- ([color=BLUE]setvar[/color] 'cmdecho cm)
- )
- ([color=BLUE]if[/color] ([color=BLUE]not[/color] ([color=BLUE]wcmatch[/color] ([color=BLUE]strcase[/color] msg [color=BLUE]t[/color]) [color=MAROON]"*break,*cancel*,*exit*"[/color]))
- ([color=BLUE]princ[/color] ([color=BLUE]strcat[/color] [color=MAROON]"\nError: "[/color] msg))
- )
- ([color=BLUE]princ[/color])
- )
- ([color=BLUE]cond[/color]
- ( ([color=BLUE]=[/color] 4 ([color=BLUE]logand[/color] 4 ([color=BLUE]cdr[/color] ([color=BLUE]assoc[/color] 70 ([color=BLUE]tblsearch[/color] [color=MAROON]"layer"[/color] ([color=BLUE]getvar[/color] 'clayer))))))
- ([color=BLUE]princ[/color] [color=MAROON]"\nCurrent layer locked."[/color])
- )
- ( ([color=BLUE]not[/color]
- ([color=BLUE]or[/color] ([color=BLUE]tblsearch[/color] [color=MAROON]"block"[/color] bn)
- ([color=BLUE]and[/color] ([color=BLUE]setq[/color] bd ([color=BLUE]findfile[/color] ([color=BLUE]strcat[/color] bn [color=MAROON]".dwg"[/color])))
- ([color=BLUE]progn[/color]
- ([color=BLUE]setq[/color] cm ([color=BLUE]getvar[/color] 'cmdecho))
- ([color=BLUE]setvar[/color] 'cmdecho 0)
- ([color=BLUE]command[/color] [color=MAROON]"_.-insert"[/color] bd [color=BLUE]nil[/color])
- ([color=BLUE]setvar[/color] 'cmdecho cm)
- ([color=BLUE]tblsearch[/color] [color=MAROON]"block"[/color] bn)
- )
- )
- )
- )
- ([color=BLUE]princ[/color] ([color=BLUE]strcat[/color] [color=MAROON]"\nBlock ""[/color] bn [color=MAROON]"" not found."[/color]))
- )
- ( ([color=BLUE]progn[/color]
- ([color=BLUE]while[/color]
- ([color=BLUE]progn[/color]
- ([color=BLUE]setvar[/color] 'errno 0) ([color=BLUE]setq[/color] en ([color=BLUE]car[/color] ([color=BLUE]entsel[/color] [color=MAROON]"\nSelect object to measure: "[/color])))
- ([color=BLUE]cond[/color]
- ( ([color=BLUE]=[/color] 7 ([color=BLUE]getvar[/color] 'errno))
- ([color=BLUE]princ[/color] [color=MAROON]"\nMissed, try again."[/color])
- )
- ( ([color=BLUE]=[/color] 'ename ([color=BLUE]type[/color] en))
- ([color=BLUE]if[/color] ([color=BLUE]vl-catch-all-error-p[/color] ([color=BLUE]vl-catch-all-apply[/color] '[color=BLUE]vlax-curve-getendparam[/color] ([color=BLUE]list[/color] en)))
- ([color=BLUE]princ[/color] [color=MAROON]"\nInvalid object selected."[/color])
- )
- )
- )
- )
- )
- ([color=BLUE]/=[/color] 'ename ([color=BLUE]type[/color] en))
- )
- )
- ( ([color=BLUE]progn[/color]
- ([color=BLUE]initget[/color] 6)
- ([color=BLUE]setq[/color] di ([color=BLUE]getdist[/color] [color=MAROON]"\nSpecify length of segment: "[/color]))
- )
- ([color=BLUE]setq[/color] p1 ([color=BLUE]vlax-curve-getstartpoint[/color] en)
- p2 ([color=BLUE]vlax-curve-getendpoint[/color] en)
- x1 ([color=BLUE]abs[/color] ([color=BLUE]-[/color] ([color=BLUE]car[/color] p2) ([color=BLUE]car[/color] p1)))
- sn ([color=BLUE]fix[/color] ([color=BLUE]/[/color] x1 di))
- x1 ([color=BLUE]+[/color] ([color=BLUE]min[/color] ([color=BLUE]car[/color] p1) ([color=BLUE]car[/color] p2)) ([color=BLUE]/[/color] ([color=BLUE]-[/color] x1 ([color=BLUE]*[/color] di sn)) 2.0))
- ob ([color=BLUE]vlax-ename->vla-object[/color] en)
- sp ([color=BLUE]vlax-get-property[/color] ([color=BLUE]vla-get-activedocument[/color] ([color=BLUE]vlax-get-acad-object[/color]))
- ([color=BLUE]if[/color] ([color=BLUE]=[/color] 1 ([color=BLUE]getvar[/color] 'cvport))
- 'paperspace
- 'modelspace
- )
- )
- )
- ([color=BLUE]repeat[/color] ([color=BLUE]1+[/color] sn)
- ([color=BLUE]setq[/color] ln ([color=BLUE]vlax-invoke[/color] sp 'addline ([color=BLUE]list[/color] x1 0.0 0.0) ([color=BLUE]list[/color] x1 1.0 0.0)))
- ([color=BLUE]if[/color] ([color=BLUE]setq[/color] in ([color=BLUE]vlax-invoke[/color] ob 'intersectwith ln [color=BLUE]acextendotherentity[/color]))
- ([color=BLUE]vlax-invoke[/color] sp 'insertblock ([color=BLUE]mapcar[/color] '[color=BLUE]+[/color] in '(0.0 0.0 0.0)) bn 1.0 1.0 1.0 0.0)
- )
- ([color=BLUE]vla-delete[/color] ln)
- ([color=BLUE]setq[/color] x1 ([color=BLUE]+[/color] x1 di))
- )
- )
- )
- ([color=BLUE]princ[/color])
- )
- ([color=BLUE]vl-load-com[/color]) ([color=BLUE]princ[/color])
|