dokey 发表于 2017-10-14 15:15:48

图层创建:MLay

本帖最后由 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)
      )

)


页: [1]
查看完整版本: 图层创建:MLay