明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
楼主: 荒野孤行

[源码] 间隙分割→异等偏移

    [复制链接]
发表于 2015-5-29 15:22:32 | 显示全部楼层
谢谢楼主分享
发表于 2015-5-29 22:19:53 | 显示全部楼层
挺赞的.画立面柜子应该也不错
发表于 2015-5-30 18:35:19 | 显示全部楼层
睢个热闹。。看看是什么好东东
发表于 2015-6-2 09:36:00 | 显示全部楼层
SO GOOD!!!!
发表于 2015-6-2 13:01:25 | 显示全部楼层
有源码,赞一个!
发表于 2015-6-7 16:04:09 | 显示全部楼层
院长的神器  必须来支持啊下
发表于 2015-6-7 19:07:24 | 显示全部楼层
好东西看看学习一下
发表于 2015-6-8 14:55:58 | 显示全部楼层
其实我在2010年的时候写过这种类型的,当时还是用command写的,很简单。现在用的是动态。
http://bbs.mjtd.com/forum.php?mod=viewthread&tid=81972&fromuid=338795
------------------------------------------------------------------------------------------------------------------

本帖子中包含更多资源

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

x

评分

参与人数 2明经币 +2 收起 理由
荒野孤行 + 1 赞一个!
lucas_3333 + 1 很给力!

查看全部评分

发表于 2015-6-8 16:30:56 | 显示全部楼层
edata 发表于 2015-6-8 14:55
其实我在2010年的时候写过这种类型的,当时还是用command写的,很简单。现在用的是动态。
http://bbs.mjtd ...

E大,可否分享动态版的?
发表于 2015-6-8 20:10:41 | 显示全部楼层
lucas_3333 发表于 2015-6-8 16:30
E大,可否分享动态版的?

  1. (vl-load-com)
  2. (defun c:tt (/ px1 px3 p1 p2 p3 p4 gr p5 p6 pts p56lst p78lst
  3.              p7 p8 n_lst dr_lst www ddd dsx dsy
  4.              p55 p66 p56ds
  5.              )
  6.   
  7.   (defun ptss_com (ptss / nlst)
  8.     (setq nlst '())
  9.     (while (car ptss)
  10.       (setq nlst (cons (car ptss) nlst))
  11.       (if (not (cadr ptss))
  12.         (setq nlst (cons (last nlst) nlst))
  13.         (setq nlst (cons (cadr ptss) nlst))
  14.       )
  15.       (setq ptss (cdr ptss))
  16.     )
  17.     (reverse nlst)
  18.   )
  19.   (defun 2pt4pt(p1 p3 / p2 p4 x_max x_min y_min y_max)
  20.   (setq x_min(min (car p1) (car p3))
  21.         x_max(max (car p1) (car p3))
  22.         y_min(min (cadr p1) (cadr p3))
  23.         y_max(max (cadr p1) (cadr p3))
  24.         )
  25.     (setq p1(list x_min y_min)
  26.           p2(list x_max y_min)
  27.           p3(list x_max y_max)
  28.           p4(list x_min y_max)
  29.           )
  30.     (list p1 p2 p3 p4)
  31.     )
  32.   
  33.   (or sk_gds1(setq sk_gds1 100))
  34.   (and (setq sk_gds2 (getreal (strcat "\n输入固定间隔值<"(rtos sk_gds1 2 0)">:")))(setq

  35. sk_gds1 sk_gds2))
  36.   (if (and (setq px1 (getpoint "\n指定第一点:"))
  37.            (setq px3 (getcorner px1 "\n指定对角点:"))          
  38.       )
  39.     (progn
  40.       
  41.       (setq pts (2pt4pt px1 px3))
  42.       (setq p1 (car pts)
  43.             p2 (cadr pts)
  44.             p3 (caddr pts)
  45.             p4 (cadddr pts)
  46.             www 1
  47.             ddd 1
  48.       )      
  49.         (setq dsx (distance p1 p2)
  50.               dsy (distance p2 p3)
  51.         )
  52.       (if (not(or (> dsx (+ sk_gds1 sk_gds1))(> dsy (+ sk_gds1 sk_gds1))))
  53.         (alert "距离过小")
  54.       (progn
  55.       (princ "\n[W 上/S 下/A 左/D 右]调整:")
  56.       (while (/= (car (setq gr (grread t 10 0))) 3)
  57.         (redraw)
  58.         (setq n_lst (ptss_com pts))
  59.         (if p56lst (setq n_lst (append p56lst n_lst)))
  60.         (if p78lst (setq n_lst (append p78lst n_lst)))
  61.         (grvecs (append '(-6) n_lst ))
  62.        
  63.         (cond
  64.           ;;w按键
  65.           ((and  (or (equal gr '(2 87)) (equal gr '(2 119)))
  66.                 (> (- (/ (- dsy sk_gds1) (* (1+ www) 1.0)) sk_gds1) 0))
  67.            (princ "\n[W 上/S 下/A 左/D 右]调整:当前上下间距为:")
  68.            (princ(setq www(1+ www)))(princ "YY")
  69.            (princ (- (/ (- dsy sk_gds1) (* www 1.0)) sk_gds1))
  70.            (setq p5 p1
  71.                  p6 p2
  72.                  p56ds (/ (- dsy sk_gds1) (* www 1.0))
  73.                  p55 (polar p1 (* 1.5 pi) (- p56ds sk_gds1 ))
  74.                  p66 (polar p2 (* 1.5 pi) (- p56ds sk_gds1 ))
  75.                  p56lst '()                 
  76.                  )
  77.            (repeat www
  78.            (setq p55 (polar p55 (* 0.5 pi) p56ds))
  79.            (setq p66 (polar p66 (* 0.5 pi) p56ds))
  80.            (setq p5 (polar p5 (* 0.5 pi) p56ds))
  81.            (setq p6 (polar p6 (* 0.5 pi) p56ds))
  82.           
  83.              (setq p56lst(cons p55 p56lst)
  84.                    p56lst(cons p66 p56lst)
  85.                    p56lst(cons p5 p56lst)
  86.                    p56lst(cons p6 p56lst))
  87.              )
  88.            )
  89.           ;;;s按键函数
  90.           ((and  (or (equal gr '(2 83)) (equal gr '(2 115)))
  91.                  (> www 0)
  92.                 (>(- (/ (- dsy sk_gds1) (* www 1.0)) sk_gds1)0) )
  93.            (if (/= www 1)
  94.              (progn
  95.            (princ "\n[W 上/S 下/A 左/D 右]调整:前上下间距为:")
  96.            (princ(setq www (1- www)))(princ "YY")
  97.            (princ (- (/ (- dsy sk_gds1) (* www 1.0)) sk_gds1))
  98.            (setq p5 p1
  99.                  p6 p2
  100.                  p56ds (/ (- dsy sk_gds1) (* www 1.0))
  101.                  p55 (polar p1 (* 1.5 pi) (- p56ds sk_gds1 ))
  102.                  p66 (polar p2 (* 1.5 pi) (- p56ds sk_gds1 ))
  103.                  p56lst '()                 
  104.                  )
  105.            (repeat www
  106.            (setq p55 (polar p55 (* 0.5 pi) p56ds))
  107.            (setq p66 (polar p66 (* 0.5 pi) p56ds))
  108.            (setq p5 (polar p5 (* 0.5 pi) p56ds))
  109.            (setq p6 (polar p6 (* 0.5 pi) p56ds))
  110.           
  111.              (setq p56lst(cons p55 p56lst)
  112.                    p56lst(cons p66 p56lst)
  113.                    p56lst(cons p5 p56lst)
  114.                    p56lst(cons p6 p56lst))
  115.              )
  116.            )
  117.              (setq p56lst '())
  118.              ))
  119.           ;;a按键
  120.           ((and  (or (equal gr '(2 97)) (equal gr '(2 25)))
  121.                  (> ddd 0)
  122.                 (>(- (/ (- dsx sk_gds1) (* ddd 1.0)) sk_gds1)0) )
  123.            (if (/= ddd 1)
  124.              (progn
  125.            (princ "\n[W 上/S 下/A 左/D 右]调整:当前左右间距为:")
  126.            (princ(setq ddd (1- ddd)))(princ "XX")
  127.            (princ (- (/ (- dsx sk_gds1) (* ddd 1.0)) sk_gds1))
  128.            (setq p7 p1
  129.                  p8 p4
  130.                  p78ds (/ (- dsx sk_gds1) (* ddd 1.0))
  131.                  p77 (polar p1 pi (- p78ds sk_gds1 ))
  132.                  p88 (polar p4 pi (- p78ds sk_gds1 ))
  133.                  p78lst '()                 
  134.                  )
  135.            (repeat ddd
  136.            (setq p77 (polar p77 0 p78ds))
  137.            (setq p88 (polar p88 0 p78ds))
  138.            (setq p7 (polar p7 0 p78ds))
  139.            (setq p8 (polar p8 0 p78ds))
  140.           
  141.              (setq p78lst(cons p77 p78lst)
  142.                    p78lst(cons p88 p78lst)
  143.                    p78lst(cons p7 p78lst)
  144.                    p78lst(cons p8 p78lst))
  145.              )
  146.            )
  147.              (setq p78lst '())
  148.              ))
  149.           ;;d 按键
  150.           ((and  (or (equal gr '(2 68)) (equal gr '(2 100)))
  151.                 (> (- (/ (- dsx sk_gds1) (* (1+ ddd) 1.0)) sk_gds1) 0))
  152.            (princ "\n[W 上/S 下/A 左/D 右]调整:前上下间距为:")
  153.            (princ(setq ddd(1+ ddd)))(princ "YY")
  154.            (princ (- (/ (- dsx sk_gds1) (* ddd 1.0)) sk_gds1))
  155.            (setq p7 p1
  156.                  p8 p4
  157.                  p78ds (/ (- dsx sk_gds1) (* ddd 1.0))
  158.                  p77 (polar p1 pi (- p78ds sk_gds1 ))
  159.                  p88 (polar p4 pi (- p78ds sk_gds1 ))
  160.                  p78lst '()                 
  161.                  )
  162.            (repeat ddd
  163.            (setq p77 (polar p77 0 p78ds))
  164.            (setq p88 (polar p88 0 p78ds))
  165.            (setq p7 (polar p7 0 p78ds))
  166.            (setq p8 (polar p8 0 p78ds))
  167.           
  168.              (setq p78lst(cons p77 p78lst)
  169.                    p78lst(cons p88 p78lst)
  170.                    p78lst(cons p7 p78lst)
  171.                    p78lst(cons p8 p78lst))
  172.              )
  173.            )
  174.           
  175.           
  176.         )
  177.       )
  178.       ;end while
  179.       (if (and dsx dsy (or (> www 1)(> ddd 1)))
  180.         (progn
  181.           (setq ds_y(- (/ (- dsy sk_gds1 )(* www 1.0))sk_gds1))
  182.           (setq ds_x(- (/ (- dsx sk_gds1 )(* ddd 1.0))sk_gds1))
  183.           (princ"\n")
  184.           (princ ds_x)(princ ds_y)
  185.           (setq px1(polar (polar p1 0 sk_gds1) (* 0.5 pi) sk_gds1)
  186.                 px2(polar px1 0 ds_x)
  187.                 px3(polar px2 (* 0.5 pi) ds_y)
  188.                 px4(polar px1 (* 0.5 pi) ds_y))
  189.           (setq lst (list px1 px2 px3 px4))          
  190.           (setq en(entmakex (append
  191.                       (list '(0 . "LWPOLYLINE")
  192.                             '(100 . "AcDbEntity")
  193.                             '(100 . "AcDbPolyline")
  194.                             (cons 90 (length lst))
  195.                             (cons 70 1))
  196.       (mapcar '(lambda (pt)(cons 10 pt)) lst )) ))
  197.           (if en
  198.   (progn
  199.     (vla-arrayrectangular (vlax-ename->vla-object en) www ddd 1  (+ ds_y sk_gds1)(+ ds_x

  200. sk_gds1) 1)
  201.     )
  202.   )
  203.           )
  204.         )
  205. ))
  206.     )                                        ;end progn
  207.   )                                        ;end if
  208.   (redraw)
  209.   (princ)
  210. )                                        ;end defun
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-12-23 15:47 , Processed in 0.171665 second(s), 20 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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