本帖最后由 dokey 于 2017-10-14 15:27 编辑
发现在CAD2010版 -LAYER有个参数"D"可以对图层进行创建说明,因此制作的这个函数,本函数也实现此功能可满足无"D"参数的CAD版创建图层说明
但此函数未实现在"新视口冻结"的功能,请教高手补充
 - ;;图层创建
- ;;命令(MLay "1.图层名" "2.颜色" "3.线型" "4.线宽" "5.注释说明" "6.是否打印y/n" "7.是否冻结y/n" "8.是否当前图层y/n")
- (defun c:TE ()
- (setvar "cmdecho" 0)
- (setq clay (getvar "clayer"))
- (setq osm (getvar "osmode"))
- (MLay "TEST" "2" "ACAD_ISO02W100" "" "测试说明" "y" "" "Y")
- (MLay "AXIS" "4" "Border" "0.25" "轴网标注" "" "y" "N")
- (MLay "Wall" "7" "continuous" "0.13" "建筑墙体" "N" "n" "")
- (MLay "Start" "" "" "" "" "" "n" "")
- (setq p1 (getpoint "\n请选择矩形的起点:"))
- (setq p2 (getcorner p1 "\n请选择矩形的对角点:"))
- (command "RECTANG" p1 p2)
- (command "layer" "set" clay "")
- (setvar "osmode" osm)
- (princ)
- )
- (defun MLay (LayName LayColor LType LWidth LDesc IsPrn IsFreze IsCur / clay osm slayname)
- (VL-LOAD-COM)
- (setq AcadObject (vlax-get-acad-object)
- AcadDocument (vla-get-ActiveDocument Acadobject) ;;取得激活的文件
- mSpace (vla-get-ModelSpace Acaddocument) ;;在图纸与模型之间切换
- AcadLays (vla-get-Layers AcadDocument) ;;取得文件图层集
- AcadLineTypes (vla-get-linetypes Acaddocument) ;;取得线型
- )
- ;;====== 创建图层内容 ======
- ;;设定:1.图名
- (setq slayname (vla-add AcadLays LayName))
- ;;设定:2.颜色
- (if (= "" LayColor)
- (vla-put-Color slayname 7)
- (vla-put-Color slayname (atoi LayColor))
- )
- ;;设定:3.线型
- (if (= "" LType)
- (vla-put-linetype slayname "Continuous")
- (if (or (vl-catch-all-apply 'vla-load (list AcadLineTypes LType "acadiso.lin")) ;;在线形文件中判断是否有指定线型并加载
- (vl-catch-all-apply 'vla-load (list AcadLineTypes LType "acad.lin")) ;;在线形文件中判断是否有指定线型并加载
- )
- (vla-put-linetype slayname LType)
- (vla-put-linetype slayname "Continuous")
- );;end if OR
- )
- ;;设定:4.线宽
- (if (= "" LWidth)
- (vla-put-lineweight slayname -3)
- (vla-put-lineweight slayname (* (atof LWidth) 100))
- )
- ;;设定:5.线型注释说明
- (vla-put-Description slayname LDesc)
- ;;设定:6.是否可打印
- (if (or (= "" IsPrn)(= "y" IsPrn)(= "Y" IsPrn))
- (vla-put-Plottable slayname :vlax-true)
- (vla-put-Plottable slayname :vlax-false)
- )
- ;;设定:7.是否冻结
- (if (or (= "y" IsFreze)(= "Y" IsFreze))
- (vla-put-Freeze slayname :vlax-true)
- (vla-put-Freeze slayname :vlax-false)
- )
- ;;设定:8.是否当前图层
- (if (or (= "y" IsCur)(= "Y" IsCur))
- (command "clayer" LayName)
- )
- )
|