yzr2002626
发表于 2011-6-26 17:22:41
你编的这个也好用,但是不是我想要的。谢谢了。
yzr2002626
发表于 2011-6-26 17:26:23
框选对角线,画那4个方向的交叉线,那交叉点在中点。按A切换画的那对角的方向
zhynt
发表于 2011-6-26 18:22:23
本帖最后由 zhynt 于 2011-6-26 19:12 编辑
回复 yzr2002626 的帖子
命令:win
yzr2002626
发表于 2011-6-26 18:34:52
用了下,爽
ljpnb
发表于 2011-6-26 18:43:32
zhynt 发表于 2011-6-26 18:22 static/image/common/back.gif
回复 yzr2002626 的帖子
命令:win
程序试一下,基本上可以,有个BUG,就是捕捉点没处理过,zhynt真是有心人.
zhynt
发表于 2011-6-26 19:13:17
43楼已更新
raimo
发表于 2011-6-26 19:25:10
回复 zhynt 的帖子
呵呵,zhynt真是个有心人,你的程序帮助了不少人啊..我是支持你的
前面的建议只是从我个人理解来提的..别见怪..毕竟个人有个人的用途,出发点不同..
我也感谢正是有Z版,zhynt,还有...挺多热心人..有了你们的帮助我也慢慢学习到不少.
在你们的无私分享的代码中找到适合自己的实用工具..多谢啦
yzr2002626
发表于 2011-6-26 19:49:30
问下,那交叉线画完后怎样把自动那画的矩形删除
ljpnb
发表于 2011-6-26 20:23:42
本帖最后由 ljpnb 于 2011-6-26 21:37 编辑
yzr2002626 发表于 2011-6-26 19:49 http://bbs.mjtd.com/static/image/common/back.gif
问下,那交叉线画完后怎样把自动那画的矩形删除
;;矩形框中加辅助“V”形线----by ljpnb
(defun c:test ()
(setq errtmp *error*)
(setq *error* err)
(setq k T)
(setvar "cmdecho" 0)
(command "undo" "be")
(setq os (getvar "osmode"))
(if (setq pta (getpoint "\n指定矩形的一个角点<回车直接选择矩形>:"))
(progn
(if (setq ptb (getcorner pta "\n指定第二角点<回车直接退出>:"))
(progn
(command "_.rectang" pta ptb)
(setq ent (entlast))
(setvar "osmode" 0)
(if (setq pt (getpoint "\n选定方向<回车直接退出>:"))
(progn
(setq obj (vlax-ename->vla-object ent))
(setq pt (vlax-curve-getclosestpointto obj pt))
)
(progn
(setq k nil)
(vla-delete (vlax-ename->vla-object ent))
;如果保留矩形框,直接删除这一句
)
)
)
(setq k nil)
)
)
(progn
(if (setq en (entsel "\n请选择一矩形<回车直接退出>:"))
(setq ent (car en)
pt(osnap (cadr en) "nea")
)
(setq k nil)
)
)
)
(if k
(progn
(setq pt_lst
(mapcar
'cdr
(vl-remove-if-not '(lambda (x) (= (car x) 10)) (entget ent))
)
)
(setq obj (vlax-ename->vla-object ent))
(setq n (fix (vlax-curve-getparamatpoint obj pt)))
(setq p1 (nth n pt_lst))
(if (= n 3)
(setq p2 (nth 0 pt_lst))
(setq p2 (nth (1+ n) pt_lst))
)
(setq p-mid (mapcar '(lambda (a b) (/ (+ a b) 2)) p1 p2))
(setq pt_lst1 (vl-remove p1 pt_lst))
(setq pt_lst1 (vl-remove p2 pt_lst1))
(setq p3 (car pt_lst1)
p4 (cadr pt_lst1)
)
(command "line" "non" p3 "non" p-mid "non" p4 "")
(vla-delete obj) ;如果保留矩形框,直接删除这一句
)
)
(setvar "osmode" OS)
(command "undo" "e")
(setvar "cmdecho" 1)
(setq *error* errtmp)
(princ)
)
;;;取消恢复处理
(defun err (msg)
(setvar "osmode" os)
(if ent
(vla-delete (vlax-ename->vla-object ent)))
(setq *error* errtmp)
)
zhynt
发表于 2011-6-26 20:39:12
回复 ljpnb 的帖子
不错不错,看了你的程序,比我的简洁多了,受教了。