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 的帖子

不错不错,看了你的程序,比我的简洁多了,受教了。
页: 1 2 3 4 [5] 6 7 8
查看完整版本: 【求助】请大侠门来编一个这样的程序!