明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1088|回复: 7

[提问] 多段线的橡皮筋怎么才能弄出来?

[复制链接]
发表于 2022-11-8 11:05:17 | 显示全部楼层 |阅读模式
5明经币
一直没搞明白,多段线的橡皮筋怎么才能弄出来?   请大神指点下~~   


(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)
)

最佳答案

查看完整内容

对应43码 (length ps) 0) ====线宽0 (length ps) 0.5) ====线宽0.5
发表于 2022-11-8 11:05:18 | 显示全部楼层

对应43码

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

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

回复

使用道具 举报

发表于 2022-11-9 08:36:20 | 显示全部楼层
pl的宽度W 0.5改为0试试
回复

使用道具 举报

发表于 2022-11-9 11:53:41 来自手机 | 显示全部楼层
说一下橡皮筋
回复

使用道具 举报

 楼主| 发表于 2022-11-9 12:46:14 | 显示全部楼层

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

使用道具 举报

发表于 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))       
))
回复

使用道具 举报

 楼主| 发表于 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))
回复

使用道具 举报

发表于 2022-11-9 22:48:23 | 显示全部楼层
(length ps)0)) ==> (length ps)0.5))
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-16 02:43 , Processed in 0.170592 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表