请问大师,画折线,但是有问题!!
各位大师,最近对lsp编程很感兴趣,在明经逛了很久,向大师们学到了很多的东西,在这感谢大家了!!参考了论坛的几位前辈的源码,结合工作需要修改了一下,搞出来这么一个小插件!但是有几个问题请问如何修改!
1、画折线时扑捉功能不管用,
2、画出的折线不是连接在一起的,是一段一段分开的,如何能连接在一起呢?
下面是代码,请大师们帮帮忙!!多谢了!!
(defun c:zx( / *error* name1 zx_kz zx_p )
(defun *error* (msg)
(entdel name1) (entdel name2) (entdel name3)
(princ "错误: ")(princ msg))
(if (= zx_bl nil) (setq zx_bl 100))
(if (= zx_ys nil) (setq zx_ys 0));定义延伸线长度
(setq zx_kz t)
(setq zx_p (getpoint "等待....输入点:"))
(if (= zx_p nil) (setq zx_kza nil))
(while zx_kz
(setq zx_sb (grread t 4 3) sb_mode (car zx_sb) zx_sb_p (cadr zx_sb))
(setq xx_dis (distance zx_p zx_sb_p)xx_ang (angle zx_p zx_sb_p))
(setq xx_p_mid (polar zx_p xx_ang(/ xx_dis 2))
xx_p11 (polar zx_p (+ pi xx_ang)(* 2 zx_ys))
xx_p12 (polar zx_sb_pxx_ang(* 2 zx_ys))
xx_p13 (polar xx_p_mid(+ pi xx_ang) zx_bl)
xx_p14 (polar xx_p_midxx_angzx_bl)
xx_p15 (polar xx_p_mid(+ (/ pi 2) xx_ang) (* 2 zx_bl))
xx_p16 (polar xx_p_mid(+ (* 1.5 pi ) xx_ang) (* 2 zx_bl))
)
(if (= sb_mode 5) (progn
(if name1 (entdel name1))
(entmake (list '(0 . "LWPOLYLINE")'(100 . "AcDbEntity")'(100 . "AcDbPolyline")'(90 . 6)(cons 10 xx_p11)(cons 10 xx_p13)(cons 10 xx_p15)(cons 10 xx_p16)(cons 10 xx_p14)(cons 10 xx_p12)))
(setq name1 (entlast))))
(if (= sb_mode 3) (progn
(if name1 (entdel name1))
(entmake (list '(0 . "LWPOLYLINE")'(100 . "AcDbEntity")'(100 . "AcDbPolyline")'(90 . 6)(cons 10 xx_p11)(cons 10 xx_p13)(cons 10 xx_p15)(cons 10 xx_p16)(cons 10 xx_p14)(cons 10 xx_p12)))
(setq name1 (entlast))
(setq zx_p zx_sb_p)
(setq name1 nil)
))
(if (or (= sb_mode 2) (= sb_mode 25)) (progn (setq zx_kz nil) (entdel name1)))
)
(princ)
)
(defun c:zxset()
(setq zx_bl (getreal"\n请输入出图比例:"))
(setq zx_ys_if (Getstring "\n请输入是否有延伸线:"))
(if (= zx_bl nil) (setq zx_bl 100))
(if (or (= zx_ys_if nil) (/= zx_ys_if)) (setq zx_ys 0)(setq zx_ys zx_bl ))
)
自己顶一下吧!!! gread不能捕捉
你要看
http://bbs.mjtd.com/thread-91191-1-1.html
想要整体可以把所有name1放在一个表里面
然后提取所有坐标 生成一个新的pline 再把原来的name1实体删掉 longcashman 发表于 2015-1-29 11:50 static/image/common/back.gif
gread不能捕捉
你要看
http://bbs.mjtd.com/thread-91191-1-1.html
多谢!多谢!!再研究研究!有疑问了再请教你!!! (defun c:zx (/ s1 zx_kz zx_p)
(if (= zx_bl nil)
(setq zx_bl 100)
)
(if (= zx_ys nil)
(setq zx_ys 0)
)
(setq s0 (entlast)
mode t
zx_p (getpoint "等待....输入点: ")
)
(if (= zx_p nil)
(setq zx_kza nil)
)
(while mode
(setq gr (grread t 4 3)
co (car gr)
)
(if (or (= co 5) (= co 3))
(setq p1 (cadr gr)
p1 (xyp-Grvecs-Osnap p1)
dd (distance zx_p p1)
rad (angle zx_p p1)
pm (polar zx_p rad (/ dd 2.))
p2 (polar zx_p (+ pi rad) (* 2 zx_ys))
p7 (polar p1 rad (* 2 zx_ys))
p3 (polar pm (+ pi rad) zx_bl)
p6 (polar pm rad zx_bl)
p4 (polar pm (+ (/ pi 2.) rad) (* 2 zx_bl))
p5 (polar pm (+ (* 1.5 pi) rad) (* 2 zx_bl))
)
)
(cond ((= co 5)
(if s1
(entdel s1)
)
(setq s1 (xyp-Pline (list p2 p3 p4 p5 p6 p7)
nil
)
)
)
((= co 3)
(if s1
(entdel s1)
)
(setq s1 (xyp-Pline (list p2 p3 p4 p5 p6 p7)
nil
)
zx_p p1
s1 nil
)
)
((or (= co 2) (= co 25))
(setq mode nil)
(entdel s1)
)
)
)
(xyp-PeditJoin (xyp-SSelEntnext s0) 0)
(redraw)
(princ)
)
(defun c:zxset ()
(setq zx_bl (getreal "\n请输入出图比例: ")
zx_ys_if (Getstring "\n请输入是否有延伸线: ")
)
(if (= zx_bl nil)
(setq zx_bl 100)
)
(if (or (= zx_ys_if nil) (/= zx_ys_if))
(setq zx_ys 0)
(setq zx_ys zx_bl)
)
)
xyp1964 发表于 2015-2-4 22:50 static/image/common/back.gif
no function definition: XYP-GRVECS-OSNAP
大师你好,本人新手上面的问题是怎么了? 学习了 继续学
页:
[1]