这是我目前掌握的代码。
-
- (defun C:hatch_lining (/ ang coords elist midp offsetted offsetted1 ofpt p1 p2 p3 pline side SUCE SUOM SUSM SUAB SUAD SUCL SUCR)
- (setq SUCE (getvar "cmdecho"))
- (setq SUOM (getvar "orthomode"))
- (setq SUSM (getvar "osmode"))
- (setq SUAB (getvar "angbase"))
- (setq SUAD (getvar "angdir"))
- (setq SUCL (getvar "clayer"))
- (setq SUCR (getvar "cecolor"))
- (setq vl1 (list
- (cons 0 "LAYER") ;Name of entity
- (cons 100 "AcDbSymbolTableRecord") ;Open Records
- (cons 100 "AcDbLayerTableRecord") ;Locate Layer Table
- (cons 2 "CCC_LAYOUT_Proposed_Road_Lining_Hatching") ;Name of Layer
- (cons 6 "Continuous") ;Linetype
- (cons 62 7) ;colour = light grey
- (cons 70 0) ;state
- (cons 290 1) ;1=plot, 0=Don't plot
- ) ;End of entity list
- )
- (entmake vl1)
- (command "_.-layer" "_C" "3" "CCC_LAYOUT_Proposed_Road_Lining_Hatching" "")
- (setvar "clayer" "CCC_LAYOUT_Proposed_Road_Lining_Hatching")
- (setvar "cecolor" "1")
- (setq pline(entsel "\nSelect an arc or a polyline: "))
- (setq coords (vl-remove-if (function not)
- (mapcar (function (lambda (x)
- (if (= 10 (car x))(cdr x))))
- elist))
- )
- (setq p2 (car coords)
- midp (mapcar (function (lambda( a b)(/ (+ a b) 2)))
- p1 p2)
- )
- (command "measure" pline "b" "hatch Lining" "y" "2" "")
- (command "_change" pline "" "p" "Layer" "CCC_LAYOUT_Proposed_Road_Lining_Hatching" "color" "Bylayer" "")
- (setvar "qaflags" 1)
- (setq SS1 (ssget "X" (list '(0 . "INSERT") (cons 2 "hatch Lining"))))
- (command "explode" SS1 "")
- (setvar "qaflags" 0)
- (setq sel1 (ssget "x" '((8 . "CCC_LAYOUT_Proposed_Road_Lining_Hatching_Construction"))))
- (setq outpline(entsel "\nSelect a closed polyline: "))
- (setq inside(getpoint "\nPick an offset side: "))
- (command "._offset" 0.3 outpline inside "")
- (setq offsetted (entlast)
- elist (entget offsetted)
- )
- (setvar "cmdecho" SUCE)
- (setvar "orthomode" SUOM)
- (setvar "osmode" SUSM)
- (setvar "angbase" SUAB)
- (setvar "angdir" SUAD)
- (setvar "clayer" SUCL)
- (setvar "cecolor" SUCR)
- (princ)
- )
|