q2284555 发表于 2022-11-8 11:05:17

多段线的橡皮筋怎么才能弄出来?

一直没搞明白,多段线的橡皮筋怎么才能弄出来?   请大神指点下~~   


(defun c:fz (/ *error* d en p0 p1 p2 r snap ss ssnext)
(setvar "ORTHOMODE" 1);开启正交
;;取得当前颜色为#os6
(setq #os6 (getvar "Cecolor"))
(setvar "cecolor" "211")
(setq pt1 (getpoint))
(command "_pline" pt1 "w" 0.5 0.5 "N" 270 (setq d (distance pt1 (setq pt2 (getpoint)))) "C" )

;颜色还原
(setvar "Cecolor" #os6)
(setq an 4.71239);角度
(setq pt3(polar pt1 an d))
(command "_insert" "G-DZPJT1" pt3 "" "" "" "" "" "" "" "")
(defun ssnext (en / ss)
    (setq ss (ssadd))
    (while (setq en (entnext en))(ssadd en ss))
      )
(defun *error* (s)(command ".UNDO" "E"))
(setq snap (getvar "osmode"))
(setvar "cmdecho" 0)
(if (setq ss (ssget))
    (if (setq p0 (getpoint "\n指定基点:"))
      (progn(command ".UNDO" "BE")
      (while t (princ "\n指定下一点或距离:")
          (if d (princ (strcat "<" (rtos d) ">:")))
          (setq en (entlast))
          (command ".copy" ss "" p0 pause)
          (setq p1 (getvar "lastpoint")p2 (mapcar '+ p1 p1))
          (if (equal p0 p1)
                                                (progn
                                                      (setq p1 (polar p0 r d))
                                                      (if (< snap 16384)(setvar "osmode" (+ snap 16384)))
                                                      (command ".move" (ssnext en) "" p2 p1)
                                                      (setvar "osmode" snap)
                                                      (setq snap (getvar "osmode"))
                                                )
                                                (setq d (distance p0 p1) r (angle p0 p1)))
          (setq ss (ssnext en) p0 p1 )
                              )
                        )
                )
      )
(princ)
)

wzg356 发表于 2022-11-8 11:05:18


对应43码

(length ps) 0)====线宽0

(length ps) 0.5)====线宽0.5

liunian0524 发表于 2022-11-9 08:36:20

pl的宽度W 0.5改为0试试

wzg356 发表于 2022-11-9 11:53:41

说一下橡皮筋

q2284555 发表于 2022-11-9 12:46:14

wzg356 发表于 2022-11-9 11:53
说一下橡皮筋

就是多段线设定第一点后,第二点跟着鼠标走的多段线预效果,就是正常平时使用多段线的效果。但现在如果使用lisp,要等输入完第一点后是看不到多段线的,需要输入完第二点才会直接出现多段线。

wzg356 发表于 2022-11-9 14:36:08

q2284555 发表于 2022-11-9 12:46
就是多段线设定第一点后,第二点跟着鼠标走的多段线预效果,就是正常平时使用多段线的效果。但现在如果 ...

(defun c:plpl ( / ps p1 e)
(setq ps(list(setq p1(getpoint "\n第一点"))))
(while(setq p1(getpoint p1 "\n下一点"))
        (if e(entdel e))
        (setq ps(cons p1 ps))
        (setq e(entmakex(append
          (mapcar 'cons (list 0 100 100 90 43)(list "LWPOLYLINE" "AcDbEntity" "AcDbPolyline"
                  (length ps)0))(mapcar '(lambda (p)(cons 10 p)) (reverse ps))
        )))
        ;(command "pline")
        ;(repeat (setq n(length ps))(command(nth(setq n(1- n))ps)))
        ;(command "")(setq e(entlast))       
))

q2284555 发表于 2022-11-9 20:27:02

wzg356 发表于 2022-11-9 14:36
(defun c:plpl ( / ps p1 e)
(setq ps(list(setq p1(getpoint "\n第一点"))))
(while(setq p1(getpoint ...

非常感谢指点,   如果我想加入线宽为0.5   ,怎么加入 线宽 等组群码信息?

(mapcar 'cons (list 0 100 100 90 43)(list "LWPOLYLINE" "AcDbEntity" "AcDbPolyline"
                  (length ps)0))(mapcar '(lambda (p)(cons 10 p)) (reverse ps))

yoyoho 发表于 2022-11-9 22:48:23

(length ps)0)) ==> (length ps)0.5))
页: [1]
查看完整版本: 多段线的橡皮筋怎么才能弄出来?