403181713 发表于 2019-11-23 15:51:52

关于画双线每个线指定图层问题


前两天借用了论坛上的一段代码画双线,忘了哪位朋友写的了,现在我想画过双线后,每一根线可以指定图层。恳请高手指点!代码如下:

(defun c:2L()
(if (= wwdy nil) (setq wwdy 4))
(setq str1 (rtos wwdy 2 2))
(prompt "\nnow dline width is: ")
(prompt str1)
(setq pt1 (getpoint "\n enter start point:"))
(setq pt2 (getpoint pt1 "\n enter next point:"))
(setq dis1 (* 0.5 wwdy))
(setq ag1 (angle pt1 pt2))
(setq pt1u (polar pt1 (+ ag1 1.5708) dis1))
(setq pt2u (polar pt2 (+ ag1 1.5708) dis1))
(setq pt1d (polar pt1 (- ag1 1.5708) dis1))
(setq pt2d (polar pt2 (- ag1 1.5708) dis1))
(command "pline" "non" pt1u "non" pt2u "")
(command "pline" "non" pt1d "non" pt2d "")
(repeat 100
   (setq pt1 pt2)
   (setq pt2 (getpoint pt1 "\n enter next point:"))
   (setq dis1 (* 0.5 wwdy))
   (setq ag1 (angle pt1 pt2))
   (setq pt1u (polar pt1 (+ ag1 1.5708) dis1))
   (setq pt2u (polar pt2 (+ ag1 1.5708) dis1))
   (setq pt1d (polar pt1 (- ag1 1.5708) dis1))
   (setq pt2d (polar pt2 (- ag1 1.5708) dis1))
   (command "pline" "non" pt1u "non" pt2u "")
   (command "pline" "non" pt1d "non" pt2d "")
)
)





初入LISP小白,熬了一星期夜解决不了!有劳大佬了,跪谢!

迷失2004 发表于 2019-11-26 15:09:35

;layer2 layer3 要有这两个图层 或者也可以判断没有就新建
(defun c:2L(/ cla wwdy pt1 pt2 dis1 ag1 pt1u pt2u pt1d pt2d)
(setq cla (getvar "clayer")
        wwdy (getreal "\n width is:")
        wwdy (if wwdy wwdy 4))
(prompt (strcat "\n now dline width is:" (rtos wwdy 2 2)))
(setq pt1 (getpoint "\n enter start point:"))
(while (setq pt2 (getpoint pt1 "\n enter next point:"))
    (setq dis1 (* 0.5 wwdy)
          ag1 (angle pt1 pt2)
          pt1u (polar pt1 (+ ag1 (/ pi 2)) dis1)
          pt2u (polar pt2 (+ ag1 (/ pi 2)) dis1)
          pt1d (polar pt1 (- ag1 (/ pi 2)) dis1)
          pt2d (polar pt2 (- ag1 (/ pi 2)) dis1))
    (setvar "clayer" "layer2"); layer2=layername
    (command "pline" "non" pt1u "non" pt2u "")
    (setvar "clayer" "layer3"); layer3=layername
    (command "pline" "non" pt1d "non" pt2d "")
    (setvar "clayer" cla)
    (setq pt1 pt2)
    )
(princ)
)
页: [1]
查看完整版本: 关于画双线每个线指定图层问题