yyz123121 发表于 2020-12-23 20:32:42

bssurvey 发表于 2020-12-22 11:59
其實我不是大神啦,大家互相學習,和大家互相切磋,大家一起進步
試看看是不是這樣
(defun c:XJ ()


就是这样的效果,非常感谢,在您的基础上,我把各自判断有没有线型那段改成程序一开始就判断,
(defun c:XJ ()
(setvar "cmdecho" 0)
(foreach lt '("CENTER" "DASH" "DASHED" "LED_LINE" "BATTING" "ZIGZAG")
    (if (= (tblsearch "ltype" lt) nil)
      (command "_linetype" "l" lt "" "")
    )
)
(setq ed1(getstring "\n请输入图层名称:"))
(setq yans(getint "\n请输入颜色:"))
(initget "c e d")
(setq xianxing(getkword "\n请输入线型名称 c<Continuous> e<Center> d<Dash>:<Continuous>"))
   (cond
    ((= xianxing "c")
   (entmake (list
       '(0 . "LAYER")
       '(100 . "AcDbSymbolTableRecord")
       '(100 . "AcDbLayerTableRecord")
       '(70 . 0)
       '(290 . 1) ;1 设为打印 ,0 设为非打印
       (cons 62 yans)
       (cons 2 ed1)
       (cons 6 "Continuous")
       )
   )
    )
    ((= xianxing "e")
   (entmake (list
       '(0 . "LAYER")
       '(100 . "AcDbSymbolTableRecord")
       '(100 . "AcDbLayerTableRecord")
       '(70 . 0)
       '(290 . 1) ;1 设为打印 ,0 设为非打印
       (cons 62 yans)
       (cons 2 ed1)
       (cons 6 "CENTER");;线型代码
       )
   )
    )
    ((= xianxing "d")
   (entmake (list
       '(0 . "LAYER")
       '(100 . "AcDbSymbolTableRecord")
       '(100 . "AcDbLayerTableRecord")
       '(70 . 0)
       '(290 . 1) ;1 设为打印 ,0 设为非打印
       (cons 62 yans)
       (cons 2 ed1)
       (cons 6 "DASH");;线型代码
       )
   )
    )
)
(setvar "clayer" ed1)
(setvar "cmdecho" 1)   
(princ)                                       
)   

atone 发表于 2024-2-13 10:48:32

路过,这样的讨论真不错
页: 1 [2]
查看完整版本: 求优化折断线命令。