明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
楼主: daidong013

【求助】请大侠门来编一个这样的程序!

  [复制链接]
发表于 2011-6-26 09:47:38 | 显示全部楼层
同感
 楼主| 发表于 2011-6-26 10:40:52 | 显示全部楼层
回复 zhynt 的帖子

非常不错,集成了所有的功能,支持!~~
发表于 2011-6-26 11:20:23 | 显示全部楼层
顶ZHYNT,程序好用。我把那图层和那画交叉的删除了,就可以用于画窗立面
发表于 2011-6-26 11:48:52 | 显示全部楼层
回复 yzr2002626 的帖子

提到画窗立面,这正是我下面想做得事,我想是用对话框,带预览的,参数输入后可以直观的看到,目前正在考虑,可能需要不少的时间,敬请期待。
发表于 2011-6-26 14:37:55 | 显示全部楼层
ZHYNT,能编个这样的框选个矩形,在用虚线画出那交叉线,用户按快捷键A切换那4种方向的交叉线

本帖子中包含更多资源

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

x
发表于 2011-6-26 14:41:03 | 显示全部楼层
那切换的那顺序左右,下上循环.
发表于 2011-6-26 14:48:50 | 显示全部楼层
这个就太简单了,可以根据选取点的位置判断方向。
发表于 2011-6-26 14:57:10 | 显示全部楼层
编个试下撒,线谢谢了
发表于 2011-6-26 17:00:54 | 显示全部楼层
本帖最后由 zhynt 于 2011-6-26 17:02 编辑

先粗略的写了一下,无须用户输入什么,点哪里就画哪里,没有规划图层、线型等

  1. ;;;点到直线的距离
  2. (defun point_line (pt pt1 pt2 / ptangle ptn pt pt1 pt2 dist jptx)
  3.   (setq        ptangle        (angle pt1 pt2)
  4.         ptn        (polar pt (+ (* 0.5 pi) ptangle) 0.01)
  5.         jptx        (inters pt ptn pt1 pt2 nil)
  6.         dist        (distance pt jptx)
  7.   )
  8.   dist
  9. )
  10. ;;;两点的中点
  11. (defun mpt (mpt1 mpt2)
  12.   (polar mpt1 (angle mpt1 mpt2) (/ (distance mpt1 mpt2) 2))
  13. )
  14. (defun C:ttt ()
  15. ;;;获取图元以及控制点
  16.   (setq        en  (entsel)
  17.         ent (entget (car en))
  18.         pt  (cadr en)
  19.   )
  20. ;;;获取矩形顶点表
  21.   (setq ptlist (vl-remove-if '(lambda (x) (/= 10 (car x))) ent))
  22.   (setq ptlist (mapcar 'cdr ptlist))
  23. ;;;对顶点表排序
  24.   (setq        ptlist
  25.          (vl-sort ptlist
  26.                   (function
  27.                     (lambda (e1 e2)
  28.                       (< (+ (car e1) (cadr e1)) (+ (car e2) (cadr e2)))
  29.                     )
  30.                   )
  31.          )
  32.   )
  33. ;;;;规范pt1 pt2 pt3 pt4
  34.   (setq        pt1  (nth 0 ptlist)
  35.         pt3  (nth 3 ptlist)
  36.         ptax (car pt1)
  37.         ptay (cadr pt1)
  38.         ptbx (car pt3)
  39.         ptby (cadr pt3)
  40.         pt2  (list ptbx ptay)
  41.         pt4  (list ptax ptby)
  42.   )
  43. ;;;;矩形四边组表
  44.   (setq        linelst        (list (list pt1 pt2)
  45.                       (list pt1 pt4)
  46.                       (list pt2 pt3)
  47.                       (list pt3 pt4)
  48.                 )
  49.   )
  50. ;;;获取距控制点最近的边
  51.   (setq        linelst
  52.          (vl-sort linelst
  53.                   (function
  54.                     (lambda (e1 e2)
  55.                       (< (point_line pt (car e1) (cadr e1))
  56.                          (point_line pt (car e2) (cadr e2))
  57.                       )
  58.                     )
  59.                   )
  60.          )
  61.   )

  62. ;;;计算中点
  63.   (setq pt5 (mpt (car (car linelst)) (cadr (car linelst))))
  64. ;;;获取距中点距离最大的点
  65.   (setq        ptlist (vl-sort        ptlist
  66.                         (function
  67.                           (lambda (e1 e2)
  68.                             (> (distance pt5 e1) (distance pt5 e2))
  69.                           )
  70.                         )
  71.                )
  72.   )
  73. ;;;作图,在这里可以对图层线型进行控制
  74.   (command "_.line" (car ptlist) pt5 (cadr ptlist) "")
  75. )
发表于 2011-6-26 17:21:00 | 显示全部楼层
先前那我表达错了,意思是那矩形是拉框画的,不是选择矩形
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2025-5-28 01:54 , Processed in 0.187816 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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