泉(Ango) 发表于 2013-7-15 13:57:33

求改变线型的小程序!

各位,
      大家好!我在画图时,经常需要画一些虚线,所我希望能在不改变我已画线所在的图层,而只是改变该线条的线型。故,现请各位帮忙编写这样的一条LISP程序!(如:我画好的一条直线,它的1号图层的-实线,然后选择该线条输入xx,则该线条变为虚线,但该线条仍然属于1号图层,只是线型变为虚线,其它的属性都不变。)
希望大家不怜指教!
谢谢!

nzl1116 发表于 2013-7-15 19:51:40

;;;加载虚线和点划线
(defun g/getAllLineTypes (/ g/1/LVar0 g/1/LVar1 g/1/LVar2 g/1/LVar3 g/1/LVar4)
(setq        g/1/LVar0 (vla-get-LineTypes cDocum) ; 获取线形集合
        g/1/LVar1 (vla-get-Count g/1/LVar0); 获取集合中元素的个数
        g/1/LVar2 0                             ; 初始化索引号
        g/1/LVar3 nil                             ; 初始化所有线形的表
)
(while (< g/1/LVar2 g/1/LVar1)
    (setq g/1/LVar4 (vla-get-name (vla-item g/1/LVar0 g/1/LVar2))
          g/1/LVar3 (cons g/1/LVar4 g/1/LVar3)
          g/1/LVar2 (1+ g/1/LVar2)
    )
)
(if (not (member "CENTER2" g/1/LVar3))
    (progn
      ;;获取测量单位是英制还是公制
      (setq g/1/LVar2 (getvar "MEASUREMENT"))
      (if (= g/1/LVar2 0)
        (setq g/1/LVar4 "acad.lin")
        (setq g/1/LVar4 "acadISO.lin")
      )
      (setq g/1/LVar1 (findfile g/1/LVar4))
      (vla-load g/1/LVar0 "CENTER2" g/1/LVar1)
      (setq g/1/LVar3 (cons "CENTER2" g/1/LVar3))
    )
)
(if (not (member "HIDDEN2" g/1/LVar3))
    (progn
      (setq g/1/LVar2 (getvar "MEASUREMENT"))
      (if (= g/1/LVar2 0)
        (setq g/1/LVar4 "acad.lin")
        (setq g/1/LVar4 "acadISO.lin")
      )
      (setq g/1/LVar1 (findfile g/1/LVar4))
      (vla-load g/1/LVar0 "HIDDEN2" g/1/LVar1)
      (setq g/1/LVar3 (cons "HIDDEN2" g/1/LVar3))
    )
)
g/1/LVar3
)

nzl1116 发表于 2013-7-15 16:04:33

这不就是改一下线型名就可以了吗?,组码是6

泉(Ango) 发表于 2013-7-15 18:09:24

nzl1116 发表于 2013-7-15 16:04 static/image/common/back.gif
这不就是改一下线型名就可以了吗?,组码是6

@nzl1116
你好!谢谢你的回复.
   我就是不想去点选线条,然后再点线型为虚线那样.
我就用个LISP程序,用快捷键xx,就能通过键盘操作,提高画图速度!
希望得到你的帮忙!
谢谢!

wowan1314 发表于 2013-7-15 18:43:47

论坛上有ZZXXQQ写的虚实变换 程序。。 你搜索下看看

nzl1116 发表于 2013-7-15 19:12:23

泉(Ango) 发表于 2013-7-15 18:09 static/image/common/back.gif
@nzl1116
你好!谢谢你的回复.
   我就是不想去点选线条,然后再点线型为虚线那样.


这么简单的东西,你也不想动手?

669423907 发表于 2013-7-15 19:40:39

(defun c:q1()
(setq ss (ssget":S"))
(command "change" ss "" "P" "lt" "DASHED" "")
(princ))

nzl1116 发表于 2013-7-15 19:43:40

669423907 发表于 2013-7-15 19:40 static/image/common/back.gif
(defun c:q1()
(setq ss (ssget":S"))
(command "change" ss "" "P" "lt" "DASHED" "")


是不是要先判断,虚线或点划线要不要先加载呀?

669423907 发表于 2013-7-15 19:55:58

nzl1116 发表于 2013-7-15 19:51 static/image/common/back.gif
;;;加载虚线和点划线

谢谢你,只是我不懂

nzl1116 发表于 2013-7-15 20:10:29

669423907 发表于 2013-7-15 19:55 static/image/common/back.gif
谢谢你,只是我不懂

你也谦虚了,看你积分也蛮高的
页: [1] 2
查看完整版本: 求改变线型的小程序!