entmake lisp 对齐_分享:entmake创建图层 - AutoLISP/Visual LISP 编程技术 - CAD论坛 - 明经CAD社区 - Powered by Discuz!...

本文介绍了一个用LISP编写的函数,用于根据指定参数创建AutoCAD图层。函数详细定义了图层名称、颜色、线型、线宽、打印设置、属性标志和描述等参数,并提供了加载线型的功能。通过这个函数,可以方便地批量创建和管理CAD图层。

(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? Bitflag  Description

( "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 2  name)

(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)

)

)

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值