找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1377|回复: 10

[编程申请]:角平分线工具

[复制链接]

已领礼包: 23个

财富等级: 恭喜发财

发表于 2002-5-18 11:08:46 | 显示全部楼层 |阅读模式

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

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

×
如何绘制两直线的角平分线?
,Xline虽然提供了bisect这样的方法,不过我想在进一步
能不能直接得到Line,而不是Xline?

具体交互步骤:
Command: Specify angle vertex point or [Select]:

选点后提示
Command: Specify angle start point :<exit>
    //选角初始方向点,不选则退出.
Command:Specify angle end point:
   //选角中止方向点,这时已经确定了平分线的方向了
  鼠标拖动被固定在此方向上
   
  现在提示:
Command:Specify the bisect start point <Enter for the first point>:
   //鼠标点取确定平分线的起点,回车则取为先前的
  angle vertex point
     接着:
Command: Specify the bisect end point :
   //选角平分线的终点.完成操作


当开始提示
Command:Specify angle vertex point or [Select]:
选择Select时,可以选择某两根AcDbLine对象,获得其交点,作为angle vertex point, 且方向也可以得到,这时,只要提示 :
Specify the bisect start point <Enter for the first point>:
以下同前...

如果是没有交点的平行直线,注意程序不要出错,最好是,就此可以画这两根Line的中心线...

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

已领礼包: 6530个

财富等级: 富甲天下

发表于 2002-5-19 02:35:41 | 显示全部楼层
中午写一小段,只是一个思路,有兴趣的朋友可以帮助完善。

  1. (defun c:Ab()
  2.   (setq l1(entget(car(entsel "\n选择第一条直线:")))
  3.         l2(entget(car(entsel "\n选择第二条直线:")))
  4.         pt10(cdr(assoc 10 l1))
  5.         pt11(cdr(assoc 11 l1))
  6.         pt20(cdr(assoc 10 l2))
  7.         pt21(cdr(assoc 11 l2))
  8.         int(inters pt10 pt11 pt20 pt21 nil)
  9.         ang1(angle pt10 pt11)
  10.         ang2(angle pt20 pt21)
  11.         ang(/ (+ ang1 ang2) 2.0)
  12.         oldsnap(getvar "snapmode")
  13.         oldorter(getvar "orthomode")
  14.         oldsang(getvar "snapang")
  15.   )
  16.   (if (>= (atof (getvar "acadver")) 15.0)
  17.     (setq oldpol (getvar "autosnap"))
  18.   )
  19.   (command "._undo" "begin")
  20.   (setvar "snapmode" 0)
  21.   (setvar "snapang" ang)
  22.   (setvar "orthomode" 1)
  23.   (command "._line" int pause "")
  24.   (setvar "snapang" oldsang)
  25.   (setvar "snapmode" oldsnap)
  26.   (setvar "orthomode" oldorter)
  27.   (if oldpol (setvar "autosnap" oldpol))
  28.   (command "._undo" "end")
  29.   (princ)
  30. )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2002-5-19 06:56:43 | 显示全部楼层
e2002你要求的步骤看得我眼花缭乱,还要什么动态。不管了,我照自己的想法作一个,顺便支持一下xd,:),反正我几乎不用求角平分线。

  1. ;;求两线条角平分线或者中线
  2. ;;配合xd_api使用
  3. (defun c:midal ( / el1 el2 p1 p2 midp intp)
  4. (xdrx_begin)
  5. (setq el1 (xdrx_entsel "\n选择第一条线:" '((0 . "*line")) )
  6.        el2 (xdrx_entsel "\n选择第二条线:" '((0 . "*line")) )
  7.        intp (car(xdrx_getinters (car el1) (car el2) 3))
  8.        p1 (last el1)
  9.        p2 (last el2)
  10.        midp (xdrx_midp p1 p2)
  11. )
  12. (if intp
  13.    (progn
  14.      (setq p2 (polar intp (angle intp (last el2)) (distance intp p1))
  15.          midp (xdrx_midp p1 p2))
  16.      (command "_.line" intp midp "" ^c)
  17.    )
  18.      (command "_.copy" p1 "" p1 midp ^c)
  19. )
  20. (xdrx_end)
  21. )


  1. <center>
  2. <embed src="http://xdsoft.myrice.com/forum/lxx/lxxlsp/midal2.swf" quality=high width=800 height=600 loop=true type="application/x-shockwave-flash">
  3. </embed>
  4. </center>
复制代码

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

使用道具 举报

发表于 2002-5-19 08:39:35 | 显示全部楼层
看了ll_j的程序才理解,是要这么个动态啊。ok
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 20个

财富等级: 恭喜发财

发表于 2002-5-19 08:53:09 | 显示全部楼层
最初由 梦断江南 发布
[B]e2002你要求的步骤看得我眼花缭乱,还要什么动态。不管了,我照自己的想法作一个,顺便支持一下xd,:),反正我几乎不用求角平分线。
[CODE]
;;求两线条角平分线或者中线
;;配合xd_api使用
(defun c:midal ( / el1 ... [/B]


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

使用道具 举报

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

使用道具 举报

已领礼包: 3个

财富等级: 恭喜发财

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

使用道具 举报

发表于 2002-6-6 20:35:32 | 显示全部楼层
梦断江南的flash camera,给出的下载地址无法连接!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2002-6-6 23:59:50 | 显示全部楼层
最初由 cad517 发布
[B]三等分如何实现 [/B]

  1. (defun C:ESPACE        (/ QJ Q@ QQ QL Q& Q1 Q#        Q0 Q$ QO Q| Q% Q?J QJJ Q@J QQJ
  2.                  QLJ Q&J Q1J Q#J Q0J Q$J QOJ Q|J
  3.                 )
  4.   (command ".undo" "g")
  5.   (setq Q|J (getvar "limcheck"))
  6.   (setvar "limcheck" 0)
  7.   (while (null (setq QJ (entsel "\nSelect an entity: "))))
  8.   (while (null
  9.            (setq Q@ (entsel "\nSelect next entity Counterclockwise: "))
  10.          )
  11.   )
  12.   (setq        QQ (entget (car QJ))
  13.         QL (entget (car Q@))
  14.   )
  15.   (if (and (= (Q%J 0 QQ) "LINE") (= (Q%J 0 QL) "LINE"))
  16.     (progn
  17.       (princ "\nLines...")
  18.       (setq Q$ (Q%J 10 QQ)
  19.             Q| (Q%J 11 QQ)
  20.             QO (Q%J 10 QL)
  21.             Q% (Q%J 11 QL)
  22.       )
  23.       (if (not (inters Q$ Q| QO Q% NIL))
  24.         (progn (princ "Parallel...")
  25.                (setq Q0J t
  26.                      Q1J (Q?@ Q$ Q|)
  27.                      Q#J (Q?@ QO Q%)
  28.                      QQJ (distance Q1J Q#J)
  29.                )
  30.                (princ (strcat "\nDistance is "
  31.                               (rtos QQJ)
  32.                               " / "
  33.                               (rtos QQJ 2 2)
  34.                               ". "
  35.                       )
  36.                )
  37.         )
  38.         (progn
  39.           (princ "Not parallel...")
  40.           (setq        Q0J NIL
  41.                 QOJ (inters Q$ Q| QO Q% NIL)
  42.                 QJJ (angle QOJ (Q?@ Q$ Q|))
  43.                 QLJ (angle QOJ (Q?@ QO Q%))
  44.                 Q&J (+ (QJ@ 180) (- (QJ@ 180) (- QJJ QLJ)))
  45.           )
  46.           (princ (strcat "\nAngle is " (angtos Q&J 0 2) " degrees. "))
  47.         )
  48.       )
  49.     )
  50.     (progn (setq Q0J t)
  51.            (if (and (= (Q%J 0 QQ) "POLYLINE") (= (Q%J 0 QL) "POLYLINE"))
  52.              (progn (princ "\nPolylines...")
  53.                     (setq Q&  (entget (entnext (Q%J -1 QQ)))
  54.                           Q1  (entget (entnext (Q%J -1 Q&)))
  55.                           Q1J (Q?@ (Q%J 10 Q&) (Q%J 10 Q1))
  56.                           Q#  (entget (entnext (Q%J -1 QL)))
  57.                           Q0  (entget (entnext (Q%J -1 Q#)))
  58.                           Q#J (Q?@ (Q%J 10 Q#) (Q%J 10 Q0))
  59.                     )
  60.              )
  61.              (progn (princ "\nCircles or blocks...")
  62.                     (setq Q1J (Q%J 10 QQ)
  63.                           Q#J (Q%J 10 QL)
  64.                     )
  65.              )
  66.            )
  67.            (setq QQJ (distance Q1J Q#J))
  68.            (princ (strcat "\nDistance is "
  69.                           (rtos QQJ)
  70.                           " / "
  71.                           (rtos QQJ 2 2)
  72.                           ". "
  73.                   )
  74.            )
  75.     )
  76.   )
  77.   (cond ((= Q@@ NIL) (setq Q@@ 2)))
  78.   (initget 6)
  79.   (setq Q?J (getint (strcat "\nNumber of spaces <" (itoa Q@@) ">: ")))
  80.   (if (= Q?J NIL)
  81.     (setq Q?J Q@@)
  82.     (setq Q@@ Q?J)
  83.   )
  84.   (setq QQ@ (getvar "ucsfollow"))
  85.   (setvar "ucsfollow" 0)
  86.   (command ".ucs" "w")
  87.   (if Q0J
  88.     (progn (setq Q@J (/ QQJ Q?J))
  89.            (setvar "snapang" (angle Q1J Q#J))
  90.            (command ".array" QJ "" "R" 1 Q?J Q@J)
  91.            (setvar "snapang" 0)
  92.            (princ (strcat "\nSpaced at "
  93.                           (rtos Q@J 2 2)
  94.                           " inches ("
  95.                           (rtos Q@J)
  96.                           ") on center. "
  97.                   )
  98.            )
  99.     )
  100.     (progn (command ".array" QJ "" "P" QOJ (1+ Q?J) (QL@ Q&J) "")
  101.            (entdel (entlast))
  102.            (redraw (car Q@))
  103.            (princ (strcat "Spaced at "
  104.                           (rtos (/ (atof (angtos Q&J 0 2)) Q@@) 2 2)
  105.                           " degrees on center. "
  106.                   )
  107.            )
  108.     )
  109.   )
  110.   (setvar "limcheck" Q|J)
  111.   (command ".ucs" "p")
  112.   (command ".undo" "e")
  113.   (princ)
  114. )
  115. (defun Q?@ (Q&@ Q1@)
  116.   (mapcar (quote (lambda (Q#@ Q0@) (/ (+ Q#@ Q0@) 2)))
  117.           Q&@
  118.           Q1@
  119.   )
  120. )
  121. (defun QJ@ (Q$@) (* pi (/ Q$@ 180.0)))
  122. (defun QL@ (Q$@) (* (/ Q$@ pi) 180.0))
  123. (defun Q%J (Q$@ QO@) (cdr (assoc Q$@ QO@)))
  124. (princ "\nType ESPACE to run command.")
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 3个

财富等级: 恭喜发财

发表于 2002-6-7 04:49:07 | 显示全部楼层
非常谢谢lucas的工作!!
另:现在好像只能用在line画的对象中,不能用在pline画的对象中。能不能改善一下,再次感谢!!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2003-8-10 14:58:11 | 显示全部楼层
最初由 caibaobao 发布
[B]梦断江南的flash camera,给出的下载地址无法连接! [/B]


我刚下了一个,这个地址可以下:http://www.caiqing.net/search.asp?softname=flash+cam

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-10-10 22:00 , Processed in 0.357175 second(s), 53 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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