明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2554|回复: 7

新手发个 动态矩形平分线 望高手指教

  [复制链接]
发表于 2012-12-2 20:41:34 | 显示全部楼层 |阅读模式
代码实在 丑陋。望见量,本代码貌似也没实际意义。
目标是 横线 竖线 交点 可以补块 才有意义。而且 矩形希望是可以歪的(取三点 )。
运行命令qq 控制键q键w键 a键s键

  1. (defun c:qq ( )

  2.   (defun *error* ( m ) (redraw) (princ))
  3.   (or *n (setq *n 3))
  4.    (or *z (setq *z 3))
  5.   (princ "\naaa ")
  6.   (if (setq p1 (getpoint "\nQW控制横线平分 AS控制纵线平分 "))
  7.     (progn
  8.       (setq ms (princ "\n QW控制横线平分 AS控制纵线平分  "))
  9.       (while
  10.         (progn (setq gr (grread t 15 0) g1 (car gr) g2 (cadr gr))
  11.           (cond
  12.             ( (= 5 g1)(redraw)
  13.               (if *v



  14.                   (setq l
  15.                     (list
  16.                       p1 (list (car p1) (+ v (cadr p1)) (caddr p1))
  17.                       g2 (list (+ h (car p)) (cadr p) (caddr p))

  18.                   )
  19.                 )
  20.                                
  21.                                
  22.                 (progn
  23.                   (setq h (- (car g2) (car p1))
  24.                         v (/ (- (cadr g2) (cadr p1)) (1+ *n))
  25.                         p p1
  26.                   )
  27.                                    (setq pp p)    ;; 定义纵线 需要的元素 避开横线元素
  28.                                    (setq vv (* v *n))
  29.                                   (setq vv (+ v vv))
  30.                                   (setq hh (/ h (+ 1 *z)))
  31.                                   
  32.                   (repeat *n  
  33.                     (setq p (list (car p) (+ v (cadr p)) (caddr p)))
  34.                                         (grdraw p (list (+ (car p) h) (cadr p) (caddr p)) 4)
  35.                    )
  36.                          (repeat *z  

  37.                                   (setq pp (list (+ hh (car pp)) (cadr pp) (caddr pp)))
  38.                     (grdraw pp (list (car pp) (+ vv (cadr pp)) (caddr pp)) -1)
  39.                                   
  40.                                   
  41.                    )
  42.                           
  43.                   
  44.                           
  45.                           
  46.                           
  47.                           
  48.                           
  49.                   (setq l
  50.                     (list
  51.                       p1 (list (+ (car p1) h) (cadr p1) (caddr p1))
  52.                       g2 (list (car p) (+ v (cadr p)) (caddr p))
  53.                     )
  54.                   )
  55.                 )
  56.               )   
  57.                                          
  58.               (mapcar '(lambda ( a b ) (grdraw a b 1 -1)) l (append (cdr l) (list (car l))));画个框
  59.                           
  60.             )
  61.             ( (= 2 g1);;键盘条件
  62.               (cond
  63.                 ( (member g2 '(119 87))
  64.                        
  65.                   (if (= 1 *n)
  66.                     (princ (strcat "\n--> 横线须大于0." ms))
  67.                     (setq *n (1- *n))
  68.                   )
  69.                 )
  70.                 ( (member g2 '(113 81))
  71.                        
  72.                   (setq *n (1+ *n))
  73.                 )
  74.                                
  75.                                  ( (member g2 '(65 97))
  76.                
  77.                   (setq *z (1+ *z))
  78.                 )
  79.                                
  80.                                         ( (member g2 '(83 115))
  81.                        
  82.                   (if (= 1 *z)
  83.                     (princ (strcat "\n--> 纵须线大于0." ms))
  84.                     (setq *z (1- *z))
  85.                   )

  86.                                          
  87.                                          
  88.                                          
  89.                                          
  90.                                          
  91.                 )
  92.                                

  93.               )
  94.             )

  95.           )
  96.         )
  97.       )
  98.     )
  99.   )
  100.   (redraw) (princ)
  101. )








本帖子中包含更多资源

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

x

评分

参与人数 1明经币 +1 金钱 +12 收起 理由
qjchen + 1 + 12 挺好的,多发代码~

查看全部评分

"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2012-12-2 21:33:39 来自手机 | 显示全部楼层
谢谢分钟。
发表于 2012-12-2 21:42:54 | 显示全部楼层
转发个lee-mac大师精品

本帖子中包含更多资源

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

x

点评

我这个也是 Lee Mac 大师改的,他本来画单线,我改了画双线了,然后他有生成单线图元,(被我去掉了方便看学习代码),我学会了再补上生成图元和捕抓第2点。  发表于 2012-12-2 21:48
 楼主| 发表于 2012-12-3 00:48:56 | 显示全部楼层
刚学的 写的直线 布块。。。
不过还是没啥用,块 会随 图层 变属性。
还不如 以前 我要用的 先组成一个块 然后用ME 之后炸碎来得方便。(论坛已经有 其他更好代替的程序啦)这个只是学习之用,望高手指点指点,感谢yanshengjiang 提供的帮助



  1. (defun c:qq()
  2. (setq k (Cdr(assoc 2(entget (Car(entsel))))))
  3. (setq a (getpoint "\n 起点"))
  4. (setq b (getpoint "\n 终点"))

  5. (setq l (command "line" a b ""))
  6. (setq c (entlast))
  7. (command "measure" c "b" k "y" )

  8. )




本帖子中包含更多资源

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

x
发表于 2012-12-5 15:11:37 | 显示全部楼层
好人            

点评

菜鸟而已。。共同学习  发表于 2012-12-5 15:29
发表于 2012-12-5 19:33:15 | 显示全部楼层

本帖子中包含更多资源

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

x
发表于 2014-7-16 15:25:12 | 显示全部楼层
xyp1964 发表于 2012-12-5 19:33

战斗机。
发表于 2014-7-18 20:35:42 | 显示全部楼层
很好的功能,但是不能捕捉第二点,画出来没东西!!希望能完善
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-19 06:16 , Processed in 0.166372 second(s), 32 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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