小万LISP 发表于 2019-10-3 10:00:40

分享:entmake创建图层

本帖最后由 小万LISP 于 2019-10-3 10:01 编辑


[*];新建图层:图层名 颜色 线宽 打印(0不、1打)
[*](defun NewLayer(TuCeng YanSe XianKuan P / )
[*](if (not(tblsearch "layer" "TuCeng"))
[*]    (entmake
[*]      (list
[*]      '(0 . "LAYER")
[*]      '(100 . "AcDbSymbolTableRecord")
[*]      '(100 . "AcDbLayerTableRecord")
[*]      '(70 . 0)
[*]      '(6 . "Continous");线型
[*]      (cons 2 TuCeng)      ;图层名
[*]      (cons 62 YanSe)      ;颜色
[*]      (cons 370 XianKuan);线宽,18=0.18
[*]      (cons 290 P)      ;是否打印,0不打印,1打印
[*]      )
[*]    )
[*])
[*](princ)
[*])

sachindkini 发表于 2019-10-3 14:37:22

entmake layer

本帖最后由 sachindkini 于 2019-10-3 14:43 编辑

(defun c:MakeLayers nil (vl-load-com)
;; © Lee Mac 2010

;;----------------------------------------------------------------------------------------------;;
;; Specifications:                                                                              ;;
;;----------------------------------------------------------------------------------------------;;
;; Description         Data Type       Remarks                                                ;;
;;----------------------------------------------------------------------------------------------;;
;; Layer Name          STRING          Only standard chars allowed.                           ;;
;; Layer Colour      INTEGER         may be nil, -ve for Layer Off, Colour < 256            ;;
;; Layer Linetype      STRING          may be nil, If not loaded, CONTINUOUS.                   ;;
;; Layer Lineweight    REAL            may be nil, negative=Default, otherwise 0 <= x <= 2.11   ;;
;; Plot?               BOOLEAN         T = Plot Layer, nil otherwise                            ;;
;; Bit Flag            INTEGER         0=None, 1=Frozen, 2=Frozen in VP, 4=Locked               ;;
;; Description         STRING          may be nil for no description                            ;;
;;----------------------------------------------------------------------------------------------;;
;; Function will print list detailing any unsuccesful layers                                    ;;
;;----------------------------------------------------------------------------------------------;;
   
(regapp "AcAecLayerStandard")

(
    (lambda ( lst )
      (mapcar 'print
      (vl-remove-if 'cdr
          (mapcar
            (function
            (lambda ( x )
                (if (caddr x) (LM:LoadLinetype (caddr x))) (cons (car x) (apply 'MakeLayer x))
            )
            )
            lst
          )
      )
      )
    )
   '(
    ;Name               Colour   Linetype    Lineweight Plot? BitflagDescription
    ( "EL_COMPONENTS"            7"CONTINUOUS"   -3       T      0   "componets")
    ( "EL_CONSTR_COMP"         1"CONTINUOUS"   -3       T      0   "const"    )
    ( "EL_FITTINGS"            4"CONTINUOUS"   -3       T      0   "fitting")
    ( "EL_LABEL"               1"CONTINUOUS"   -3       T      0      nil)
    ( "EL_LABEL_TXT"         252"CONTINUOUS"   -3       T      0      nil)
    ( "EL_TERMINALS"             1"CONTINUOUS"   -3       T      0      nil)
    ( "EL_TERMINALS_PE"         24"CONTINUOUS"   -3       T      0      nil)
    ( "EL_TERMINALS_TXT"       252"CONTINUOUS"   -3       T      0      nil)
    ( "EL_TXT"               252"CONTINUOUS"   -3       T      0      nil)
    ( "EL_WIRES"               252"CONTINUOUS"   -3       T      0      nil)
    ( "GE_ANNOTATION"            7"CONTINUOUS"   -3       T      0      nil)
    ( "GE_LABEL"                10"CONTINUOUS"   -3       T      0      nil)
    ( "GE_LABEL_TEXT"          253"CONTINUOUS"   -3       T      0      nil)
    ( "GE_TXT_LANGUAGE_DU"   252"CONTINUOUS"   -3       T      0      nil)
    ( "GE_TXT_LANGUAGE_EN"   252"CONTINUOUS"   -3       T      0      nil)
    ( "GE_TXT_LANGUAGE_FR"   252"CONTINUOUS"   -3       T      0      nil)
    ( "GE_TXT_LANGUAGE_GE"   252"CONTINUOUS"   -3       T      0      nil)
    ( "LA_HEADER_FRAME"          7"CONTINUOUS"   -3       T      0      nil)
    ( "LA_HEADER_TXT"            7"CONTINUOUS"   -3       T      0      nil)
    ( "LA_MATLIST"             254"CONTINUOUS"   -3       T      0      nil)
    ( "LA_MATLIST_FRAME"       254"CONTINUOUS"   -3       T      0      nil)
    ( "LA_MATLIST_POS"         254"CONTINUOUS"   -3       T      0      nil)
    ( "LA_MATLIST_TXT"         252"CONTINUOUS"   -3       T      0      nil)
    ( "LA_TITLE_FRAME"         7"CONTINUOUS"   -3       T      0      nil)
    ( "LA_TITLE_LOGO"         10"CONTINUOUS"   -3       T      0      nil)
    ( "LA_TITLE_LOGO_TXT"      7"CONTINUOUS"   -3       T      0      nil)
    ( "LA_TITLE_TXT"             7"CONTINUOUS"   -3       T      0      nil)
    ( "LA_VIEWPORTS"         230"CONTINUOUS"   -3      nil   0      nil)
    ( "PN_ACCESSORIES"          30"CONTINUOUS"   -3       T      0      nil)
    ( "PN_ACTUATORS"         160"CONTINUOUS"   -3       T      0      nil)
    ( "PN_AIR_LINE_EQUIPMENT"   40"CONTINUOUS"   -3       T      0      nil)
    ( "PN_BRACKET_MOUNTING"      1"ACAD_ISO12W100" -3       T      0      nil)
    ( "PN_CABINET"               8"CONTINUOUS"   -3       T      0      nil)
    ( "PN_CABINET_DIM"         8"CONTINUOUS"   -3       T      0      nil)
    ( "PN_COMPONENTS"            7"CONTINUOUS"   -3       T      0      nil)
    ( "PN_CONDUCTS"            3"CONTINUOUS"   -3       T      0      nil)
    ( "PN_CONSTR_COMP"         2"CONTINUOUS"   -3       T      0      nil)
    ( "PN_DRAIN"               3"HIDDEN"         -3       T      0      nil)
    ( "PN_EXHAUST"             104"CONTINUOUS"   -3       T      0      nil)
    ( "PN_FITTINGS"             30"CONTINUOUS"   -3       T      0      nil)
    ( "PN_IDENTIFICATION"      4"CONTINUOUS"   -3       T      0      nil)
    ( "PN_PILOT_SUPPLY"          3"HIDDEN"         -3       T      0      nil)
    ( "PN_PORT_NUMBERS"          8"CONTINUOUS"   -3       T      0      nil)
    ( "PN_PRESSURE_SWITCHES"   200"CONTINUOUS"   -3       T      0      nil)
    ( "PN_PROPORTIONAL_VALVES" 226"CONTINUOUS"   -3       T      0      nil)
    ( "PN_SECTIONS"            3"CONTINUOUS"   -3       T      0      nil)
    ( "PN_SUB-BASES"             8"ACAD_ISO12W100" -3       T      0      nil)
    ( "PN_SUB-BASE_CONDUCTS"   2"CONTINUOUS"   -3       T      0      nil)
    ( "PN_SUPPLY"                3"CONTINUOUS"   -3       T      0      nil)
    ( "PN_TXT"                   3"CONTINUOUS"   -3       T      0      nil)
    ( "PN_VACUUM"               60"CONTINUOUS"   -3       T      0      nil)
    ( "PN_VALVES"            240"CONTINUOUS"   -3       T      0      nil)
    ( "PN_VALVES_OVERRIDE"       1"CONTINUOUS"   -3       T      0      nil)
    )
)
(princ)
)

(defun MakeLayer ( name colour linetype lineweight willplot bitflag description )
;; © Lee Mac 2010
(or (tblsearch "LAYER" name)
    (entmake
      (append
      (list
          (cons 0 "LAYER")
          (cons 100 "AcDbSymbolTableRecord")
          (cons 100 "AcDbLayerTableRecord")
          (cons 2name)
          (cons 70 bitflag)
          (cons 290 (if willplot 1 0))
          (cons 6
            (if (and linetype (tblsearch "LTYPE" linetype))
            linetype "CONTINUOUS"
            )
          )
          (cons 62 (if (and colour (< 0 (abs colour) 256)) colour 7))
          (cons 370
            (if (minusp lineweight) -3
            (fix
                (* 100
                  (if (and lineweight (<= 0.0 lineweight 2.11)) lineweight 0.0)
                )
            )
            )
          )
      )
      (if description
          (list
            (list -3
            (list "AcAecLayerStandard" (cons 1000 "") (cons 1000 description))
            )
          )
      )
      )
    )
)
)

;;--------------------=={ Load Linetype }==-------------------;;
;;                                                            ;;
;;Attempts to load a specified linetype from any linetype   ;;
;;definition files (.lin) found in the ACAD Support Path    ;;
;;------------------------------------------------------------;;
;;Author: Lee Mac, Copyright © 2011 - www.lee-mac.com       ;;
;;------------------------------------------------------------;;
;;Arguments:                                                ;;
;;lt - name of linetype to load                           ;;
;;------------------------------------------------------------;;
;;Returns:T if linetype loaded successfully, else nil   ;;
;;------------------------------------------------------------;;

(defun LM:LoadLinetype ( lt )
(cond
    ( (tblsearch "LTYPE" lt) )
    ( (progn
      (or acapp (setq acapp (vlax-get-acad-object)))
      (or acdoc (setq acdoc (vla-get-ActiveDocument acapp)))
      (or aclts (setq aclts (vla-get-Linetypes acdoc)))

      (vl-some
          (function
            (lambda ( file )
            (vl-catch-all-apply 'vla-load (list aclts lt file))
            (and (tblsearch "LTYPE" lt))
            )
          )
          (setq *LineTypeDefs*
            (cond
            ( *LineTypeDefs* )
            ( (apply 'append
                  (mapcar '(lambda ( directory ) (vl-directory-files directory "*.lin" 1))
                  (LM:str->lst
                      (vla-get-SupportPath (vla-get-Files (vla-get-Preferences acapp))) ";"
                  )
                  )
                )
            )
            )
          )
      )
      )
    )
)
)

;;-------------------=={ String to List }==-------------------;;
;;                                                            ;;
;;Separates a string into a list of strings using a         ;;
;;specified delimiter string                              ;;
;;------------------------------------------------------------;;
;;Author: Lee Mac, Copyright © 2011 - www.lee-mac.com       ;;
;;------------------------------------------------------------;;
;;Arguments:                                                ;;
;;str - string to process                                 ;;
;;del - delimiter by which to separate the string         ;;
;;------------------------------------------------------------;;
;;Returns:A list of strings                               ;;
;;------------------------------------------------------------;;

(defun LM:str->lst ( str del / pos )
(if (setq pos (vl-string-search del str))
    (vl-remove "" (cons (substr str 1 pos) (LM:str->lst (substr str (+ pos 1 (strlen del))) del)))
    (list str)
)
)

lxw320 发表于 2019-10-3 14:38:27

entmake创建图元必要条件(慢慢更新)

小万LISP 发表于 2019-10-3 15:31:14

sachindkini 发表于 2019-10-3 14:37


人才!人才!人才!人才!
页: [1]
查看完整版本: 分享:entmake创建图层