找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1400|回复: 4

[LISP函数]:一个绘制角平分线的程序

[复制链接]
发表于 2003-5-20 16:33:53 | 显示全部楼层 |阅读模式

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

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

×
用来画两条直线的角平分线的,原创

  1. (defun c:dpfx (/ a1 a2 b1 b2 c1        c2 p1 p2 p3 p4 ang1 ang        ang2 leng ptt2
  2.                pt2 pt1 pn ab s)
  3.   (setvar "cmdecho" 0)
  4.   (princ "\n    *******  绘角平分线程序  *******   ")
  5.   (setq s 1)
  6.   (while s
  7.     (princ "\n请选择第一条直线:")
  8.     (setq ab (entsel))
  9.     (if        (= ab nil)
  10.       (princ "请选择有效的直线实体! ")
  11.       (setq s nil)
  12.     )
  13.   )
  14.   (setq a1 (entget (car ab)))
  15.   (setq b1 (assoc 0 a1))
  16.   (setq c1 (cdr b1))
  17.   (if (= c1 "LINE")
  18.     (progn
  19.       (setq p1 (cdr (assoc 10 a1)))
  20.       (setq p2 (cdr (assoc 11 a1)))
  21.       (setq ang1 (angle p1 p2))
  22.     )
  23.     (progn
  24.       (alert "\n您所选的实体并非直线!请重选!")
  25.       (setq a1 (entget (car (entsel))))
  26.       (terpri)
  27.       (setq b1 (assoc 0 a1))
  28.       (setq c1 (cdr b1))
  29.       (setq p1 (cdr (assoc 10 a1)))
  30.       (setq p2 (cdr (assoc 11 a1)))
  31.       (setq ang1 (angle p1 p2))
  32.     )
  33.   )
  34.   (setq s 1)
  35.   (while s
  36.     (princ "\n请选择第二条直线:")
  37.     (setq a2 (entget (car (entsel))))
  38.     (if        (/= a2 nil)
  39.       (setq s nil)
  40.     )
  41.   )
  42.   (setq b2 (assoc 0 a2))
  43.   (setq c2 (cdr b2))
  44.   (if (= c2 "LINE")
  45.     (progn
  46.       (setq p3 (cdr (assoc 10 a2)))
  47.       (setq p4 (cdr (assoc 11 a2)))
  48.       (setq ang2 (angle p3 p4))
  49.     )
  50.     (progn
  51.       (alert "\n您所选的实体并非直线!请重选!")
  52.       (setq a2 (entget (car (entsel))))
  53.       (terpri)
  54.       (setq b2 (assoc 0 a2))
  55.       (setq c2 (cdr b2))
  56.       (setq p3 (cdr (assoc 10 a2)))
  57.       (setq p4 (cdr (assoc 11 a2)))
  58.       (setq ang2 (angle p3 p4))
  59.     )
  60.   )
  61.   (setq ang (/ (+ ang1 ang2) 2))
  62.   (setvar "osmode" 32)
  63.   (setq pn (getpoint "\n请选择两直线交点/<Enter无交点>:"))
  64.   (setvar "osmode" 0)
  65.   (setvar "snapang" ang)
  66.   (setvar "orthomode" 1)
  67.   (if (= pn nil)
  68.     (progn
  69.       (setq pt1 (getpoint "\n角平分线线起点:"))
  70.       (setq pt2 (getpoint pt1 "\n角平分线终点/<Enter指定长度>:"))
  71.       (if (= pt2 nil)
  72.         (progn
  73.           (setq len (getreal "\n角平分线长度:"))
  74.           (setq len (/ len bl))
  75.           (setq ptt2 (getpoint pt1 "\n直线方向:"))
  76.           (setq ang1 (angle pt1 ptt2))
  77.           (setq pt2 (polar pt1 ang1 len))
  78.           (command ".line" pt1 pt2 "")
  79.         )
  80.         (command ".line" pt1 pt2 "")
  81.       )
  82.     )
  83.     (progn
  84.       (setq pt1 (getpoint pn "\n角平分线终点/<Enter指定长度>:"))
  85.       (if (= pt1 nil)
  86.         (progn
  87.           (setq len (getreal "\n角平分线长度:"))
  88.           (setq len (/ len bl))
  89.           (setq ptt2 (getpoint pn "\n直线方向:"))
  90.           (setq ang1 (angle pn ptt2))
  91.           (setq pt2 (polar pn ang1 len))
  92.           (command ".line" pn pt2 "")
  93.         )
  94.         (command ".line" pn pt1 "")
  95.       )
  96.     )
  97.   )
  98.   (setvar "snapang" 0)
  99.   (princ "\n 角平分线绘制完毕!")
  100.   (princ)
  101. )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2003-8-22 17:07:57 | 显示全部楼层
大家有什么好方法不妨拿出来讨论一下,资源共享嘛!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

使用道具 举报

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

使用道具 举报

发表于 2005-9-14 00:54:34 | 显示全部楼层
1。既然点了三下,还是“角点、一点、二点”更通用。
2。加一个选择,可以任意几等分。
3。选择的过滤判断比较繁琐,用内部函数更简捷。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-22 06:59 , Processed in 0.322329 second(s), 40 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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