找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 807|回复: 2

[每日一码] 分享一个快速画折断线的LSP,好像有点问题,有大神能完善一下吗?

[复制链接]
发表于 2017-11-28 11:17:28 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
(defun c:zd (/ os scl ee temp xx ang p1 p2 p3 p4 p5 p6 p7 ename)
(setq os (getvar "osmode"))
(setvar "osmode" 0)
(if (= scl nil) (setq scl (getvar "dimscale")))
(if (= scl 0) (setq scl 1.0))
(if (= ee nil) (setq ee 1.0))
(setq temp T)
(while temp
(prompt (strcat "\n比例因子 Scale = " (rtos scl)
" , 延伸 Extension = " (rtos ee)
)
)
(initget "Scale Extension")
(setq p1 (getpoint "\n指定第一个点或 [比例因子(S)/延伸(E)] <在既有直线上添加>: "))
(cond
((= p1 "Scale")
(setq xx (getreal (strcat "\nScale <"(rtos scl)">:")))
(if xx (setq scl xx))
)
((= p1 "Extension")
(setq xx (getreal (strcat "\nExtension <"(rtos ee)">:")))
(if xx (setq ee xx))
)
(T
(setq temp nil)
)
)
)
(defun zd_new ()
(setq p2 p1)
(while (<= (distance p1 p2) (* scl 3.0))
(initget 1)
(setq p2 (getpoint p1 "\n指定第二点: "))
(if (<= (distance p1 p2) (* scl 3.0))
(princ "\n线条太短,不足以成为折断线")
)
)
(command "_line" p1 p2 "")
(setq ename (entlast))
)

(defun zd_add ()
(while (null ename)
(setq ename (entsel "\n选择要加折断符号之直线 LINE: "))
(setq ename (car ename))
(if (/= (cdr (assoc 0 (entget ename))) "LINE")
(setq ename nil)
)
)
(setq p1 (cdr (assoc 10 (entget ename))))
(setq p2 (cdr (assoc 11 (entget ename))))
(if (<= (distance p1 p2) (* scl 3.0))
(progn
(princ "\n! 线太短,不足以成为折断线,新画一个")
(setq p1 (getpoint "\n指定第一个点: "))
(zd_new)
)
)
)
(if (= p1 nil) (zd_add) (zd_new))
(setq ang (angle p1 p2))
(while (not p3)
(setq p3 (getpoint "\n指定折断符号位置 <中点>: "))
(if (not p3)
(setq p3 (polar p1 ang (/ (distance p1 p2) 2.0)))
(progn
(setq p4 (polar p3 (+ ang (* pi 0.5)) 1.0))
(setq p3 (inters p1 p2 p3 p4 nil))
(if (> (max (distance p1 p3) (distance p2 p3))
(- (distance p1 p2) (* scl 3.0))
)
(progn
(princ "\n*无效* 指定的点超出范围,请重新指定")
(setq p3 nil)
)
)
)
)
)
(setq p1 (polar p1 (+ ang pi) (* ee scl))
p2 (polar p2 ang (* ee scl))
p4 (polar p3 (+ ang pi) (* scl 1.5))
p5 (polar p4 ang (* scl 0.75))
p5 (polar p5 (- ang (* pi 0.5)) (* scl 2.0))
p6 (polar p3 ang (* scl 0.75))
p6 (polar p6 (+ ang (* pi 0.5)) (* scl 2.0))
p7 (polar p3 ang (* scl 1.5))
)
(entdel en


ame)
(command "_pline" p1 "w" "0.0" "" p4 p5 p6 p7 p2 "")
(setvar "osmode" os)
)


论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 19个

财富等级: 恭喜发财

发表于 2017-11-28 11:20:12 | 显示全部楼层
遇到什么问题呢
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-11-28 16:26:45 | 显示全部楼层

测试了函数,他提示函数太多,没办法能够定位折断号
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2025-9-27 04:05 , Processed in 0.340809 second(s), 33 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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